Home/ Blog/ Security news/ Article
Blog · Security news

A malicious web page can run code on developers' Ray AI servers, and CISA confirms active exploitation

CISA flagged CVE-2025-62593 in Ray as actively exploited. A malicious web page can reach a developer's local Ray dashboard and run code. Patch to Ray 2.52.0.

Isometric glass control room with a thin glowing thread piercing one sealed pane

Ray, the AI compute framework that trains and serves machine-learning models at some of the largest technology companies, has shipped for years on one assumption: whoever runs it will lock down the network themselves. That assumption just produced its second actively exploited path to remote code execution in under two years. On August 18, 2026, the US Cybersecurity and Infrastructure Security Agency (CISA) added CVE-2025-62593 to its Known Exploited Vulnerabilities catalog. This one does not need an exposed cluster. It reaches a developer's own laptop through the web browser.

What CISA flagged, and how serious it is

CVE-2025-62593 carries a severity score of 9.4 out of 10 and affects every Ray release before 2.52.0. The Ray dashboard exposes job-submission endpoints, /api/jobs plus the related /api/job_agent/jobs/, that accept work without any login. An attacker who reaches those endpoints can run code on the host. The federal patch deadline is August 21, 2026, three days after the listing.

Ray CVE-2025-62593: patched months before CISA confirmed exploitationNov 26, 2025: Disclosed, fixed in 2.52.0. Aug 18, 2026: Added to CISA KEV. Aug 21, 2026: Federal patch deadline.Ray CVE-2025-62593: patched months before CISA confirmed exploitationNov 26, 2025Disclosed, fixedin 2.52.0Aug 18, 2026Added to CISAKEVAug 21, 2026Federal patchdeadline
Source: GitHub Security Advisory GHSA-q279-jhrf-cc6v; CISA KEV catalog.

The gap in that timeline is the story. The flaw was disclosed and fixed on November 26, 2025 in Ray 2.52.0. CISA does not add anything to its exploited list until it sees real-world attacks, so the roughly nine months between the patch and the listing is the window when unpatched instances were being hit. If you upgraded last winter, you are fine. If Ray is still on an older build because it sits behind a firewall and felt internal, that feeling is now the exposure.

Why binding it to localhost did not protect anyone

Many developers run the Ray dashboard bound to 127.0.0.1 on port 8265 and treat it as private. It is not, once a browser is in the picture. The attack uses DNS rebinding, where a malicious website first points its own domain at its real server, then re-points that same domain at 127.0.0.1. The browser still treats the two answers as one origin, so it will send requests from the attacker's page straight to the developer's local Ray instance.

This is not unique to Ray. Any local dashboard the browser can reach without a token is reachable from a web page the developer visits: Jupyter notebooks, MLflow, TensorBoard, a bare model server. The lesson for a defender is blunt. A service listening on localhost is not an access control. If it answers the browser and asks for no credential, treat it as if it were on the public internet. We made the same point when a single web page turned an AI agent's trust in its own machine into a takeover.

A User-Agent header is not authentication

Ray did ship one guard on those endpoints, and it is worth studying as a mistake. The dashboard checked whether the incoming request's User-Agent header started with the string Mozilla, on the theory that browser requests are hard to forge and would be blocked by the browser's same-origin policy anyway. Both halves of that theory are wrong.

The fetch function in Firefox and Safari lets a script set the User-Agent header to anything, so the Mozilla check is passed for free. Chrome, by an accident of its own implementation, refuses to let scripts change that header, which left Chrome users incidentally safe and Firefox and Safari users exposed. Being saved by a browser bug is not a security control.

The deeper error is treating a client-controlled request header as a trust boundary at all. A header the attacker's own code writes proves nothing. This is the same class of mistake that cross-site request forgery defenses learned to drop years ago, and it keeps resurfacing in fast-moving AI tooling that was never built for a hostile browser tab. Langflow shipped a similar story when an auth-optional default handed any stranger admin and then code execution.

The pattern is bigger than one flaw

Ray's maintainers have long held that the framework's open-by-default behavior is a feature, safe inside a trusted network, and that isolation belongs outside the cluster. That position is defensible in a data center. It has not survived contact with how people actually deploy.

The older half of this story is CVE-2023-48022, the unauthenticated job-submission issue nicknamed ShadowRay, which Ray declined to patch on exactly that reasoning. Security firm Oligo reported in November 2025 that a campaign it calls ShadowRay 2.0 had turned that design into a self-propagating botnet: more than 230,000 internet-exposed Ray servers, compromised clusters mining cryptocurrency, stealing source code and model weights, and scanning for the next victim. One cluster Oligo examined held over a thousand nodes. The attacker's code wore the names of ordinary Linux processes to stay hidden. The same fate has met other services that shipped unlocked by default and exposed servers pulled into botnets.

CVE-2025-62593 is what happened when that same auth-optional philosophy met the browser. CISA's listing is, in effect, a federal body overruling the secure-it-yourself stance: a patch deadline is not a configuration suggestion. It echoes other cases where an unauthenticated path stayed open because the vendor saw it as the operator's problem. Ray 2.52.0 finally ships optional token authentication, the control that would have shut both doors long ago.

Patch, then check whether you were already hit

The first action is the upgrade. Move every Ray installation to 2.52.0 or later and turn on the new token authentication. Do it on developer laptops too, not only production clusters, because the workstation is what this flaw targets.

  • Restrict the dashboard port, 8265, with firewall rules, and bind Ray to a specific network interface rather than 0.0.0.0.

  • Run Anyscale's open-ports checker to find Ray instances you forgot were reachable.

  • Put an authenticating reverse proxy in front of the dashboard if you cannot upgrade right away.

Patching closes the hole. It does not tell you whether someone walked through first. Because CISA confirms active exploitation, assume the window mattered and hunt for it. Review the dashboard's job history for jobs nobody on your team submitted. Watch for outbound connections from Ray hosts to cryptocurrency mining pools, and for processes wearing familiar names like kworker that do not sit where the real kernel threads do. On a developer machine the same rule holds: a job that ran under your Ray instance when you did not start one is the sign that a page you visited did more than load.

Auth-optional defaults made Ray easy to adopt and easy to attack. The 2.52.0 release admits as much. The teams that come through this fine are the ones that stopped trusting a network perimeter to do a token's job.

Topics

Frequently asked questions

What is CVE-2025-62593 in Ray?

CVE-2025-62593 is a critical flaw in the Ray AI compute framework, rated 9.4 out of 10. A malicious web page can reach a developer's local Ray dashboard on port 8265 through DNS rebinding and run code on the host, without any login. CISA lists it as actively exploited.

Which Ray versions are affected and what is the fix?

Every Ray release before 2.52.0 is affected. The fix is to upgrade to Ray 2.52.0 or later, which adds optional token-based authentication on the dashboard endpoints. Apply it on developer laptops as well as production clusters, since the workstation is the target.

Does binding Ray to localhost protect me?

No. A service on 127.0.0.1 is still reachable from a web page you visit. DNS rebinding re-points a malicious site's domain at localhost, and the browser sends the attacker's requests to your local Ray dashboard. Treat any tokenless local dashboard as internet-reachable.

Is CVE-2025-62593 the same as ShadowRay?

No. ShadowRay is CVE-2023-48022, an older unauthenticated job-submission issue Ray declined to patch. CVE-2025-62593 is a separate, browser-based flaw fixed in 2.52.0. Both stem from Ray's long-standing choice to ship without authentication on critical endpoints.

How do I know if my Ray instance was already compromised?

Review the dashboard's job history for jobs nobody on your team submitted. Watch Ray hosts for outbound connections to cryptocurrency mining pools and for processes disguised with names like kworker. Because CISA confirms exploitation, treat the pre-patch window as a period to actively hunt, not assume clean.

Ready to meet the Guardians?

Deploys fast - agentless for monitoring and cloud, a lightweight agent for deep endpoint security. Just Suriq, standing watch.