← Back to Feed CACHED · 2026-08-17 16:31:41 · CACHE_KEY CVE-2025-62593
CVE-2025-62593 · CWE-94 · Disclosed 2025-11-26

Ray is an AI compute engine.

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Your AI developer's browser becomes a remote control for their Ray cluster the moment they click a sketchy ad

CVE-2025-62593 is a remote code execution flaw in Anyscale Ray (all versions prior to 2.52.0) that chains a DNS rebinding attack with a User-Agent header guard bypass on the unauthenticated Ray Dashboard API (/api/jobs/ and /api/job_agent/jobs/). Ray's only browser-side protection was checking that the User-Agent header starts with "Mozilla" — a check the Fetch API in Firefox and Safari allows an attacker to trivially override. When a developer running Ray locally visits a malicious page (or is served a malvertisement), the attacker's JavaScript rebinds their domain to 127.0.0.1:8265, sets a custom User-Agent, and POSTs a job submission payload containing an arbitrary shell command. The developer's machine executes it without any authentication prompt. Chrome happens to be unaffected due to an implementation quirk, not by design.

The GHSA advisory assigned a CVSS 4.0 score of 9.4 CRITICAL, but no official vendor (Anyscale) CVSS baseline exists. A 9.4 overstates the real-world risk for most enterprise environments because the chain requires a specific browser family, active user interaction (visiting a malicious site), and successful DNS rebinding — all friction points that modern browser security features increasingly mitigate. However, the KEV listing is not decorative: the broader Ray ecosystem has been hammered by the ShadowRay 2.0 campaign (exploiting CVE-2023-48022), and this CVE extends that attack surface to developer workstations that are otherwise unreachable. The real danger is the *pivot*: a compromised ML engineer's laptop typically holds SSH keys, cloud tokens, and credentials to production Ray clusters and GPU infrastructure. HIGH is the correct bucket — not CRITICAL, because the attack prerequisites are narrow; not MEDIUM, because the blast radius on success is devastating.

"KEV-listed RCE via DNS rebinding targets Ray devs on Firefox/Safari — high-value AI infra at risk"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Victim visits attacker-controlled page

The developer running Ray locally navigates to a malicious website or is served a malvertisement via an ad network. No click is required beyond the initial page load. The page loads attacker JavaScript that begins the DNS rebinding sequence.
Conditions required:
  • Developer is running Ray head node locally (default port 8265)
  • Developer uses Firefox or Safari (Chrome blocks User-Agent override in Fetch)
Where this breaks in practice:
  • Chrome users (~65% browser market share) are immune
  • Many enterprise environments enforce Chrome/Edge via policy
Detection/coverage: Browser telemetry or DNS logs showing rapid A-record TTL changes for an external domain resolving to 127.0.0.1
STEP 02

DNS rebinding resolves to localhost

The attacker's DNS server initially responds with its real IP, then flips the A record to 127.0.0.1 with a very short TTL. Once the browser's DNS cache expires and re-resolves, subsequent requests from the attacker's origin now hit the victim's local Ray Dashboard on port 8265. Tools like nccgroup/singularity automate this.
Conditions required:
  • Browser DNS cache must expire and re-resolve within the rebinding window
  • No local DNS pinning or private network access protection in the browser
Where this breaks in practice:
  • Modern browsers (Firefox 130+, Safari 18+) implement Private Network Access checks that can block this
  • Corporate DNS resolvers may cache longer than attacker TTL, breaking the rebind
Detection/coverage: Network monitoring for DNS responses mapping external domains to RFC1918/loopback addresses
STEP 03

User-Agent guard bypass via Fetch API

Ray's Dashboard API checks if the User-Agent header starts with "Mozilla" and rejects the request if so — a naive browser-detection heuristic. The attacker's JavaScript uses the Fetch API with a custom User-Agent: Other header, which Firefox and Safari allow per the Fetch specification. This bypasses the only server-side protection.
Conditions required:
  • Ray version < 2.52.0 with the User-Agent-based guard
  • Browser permits User-Agent override in Fetch (Firefox, Safari)
Where this breaks in practice:
  • This is a single-header check — trivial to bypass when the browser cooperates
Detection/coverage: WAF or reverse proxy logging showing non-browser User-Agent strings hitting Ray Dashboard endpoints
STEP 04

Job submission → arbitrary command execution

The attacker POSTs a JSON payload to /api/jobs/ with an entrypoint field containing an arbitrary shell command (e.g., reverse shell, credential harvester). Ray executes it as the user running the Ray head process — typically the developer's own user account, with full access to their home directory, SSH keys, cloud credentials, and any mounted secrets.
Conditions required:
  • Ray Dashboard API has no authentication (default config, auth is opt-in even in 2.52.0)
Where this breaks in practice:
  • If the developer enabled the new token-based auth (added in 2.52.0), this step fails — but auth is disabled by default
Detection/coverage: Ray audit logs (if enabled) showing unexpected job submissions; EDR alerting on child processes spawned by the Ray worker
STEP 05

Pivot to production Ray clusters and cloud infrastructure

The compromised developer machine likely holds SSH keys, kubeconfig files, AWS/GCP/Azure credentials, and Anyscale API tokens. The attacker uses these to access production Ray clusters, GPU nodes, training data, and proprietary AI models. In the ShadowRay 2.0 campaign context, compromised nodes were used to spray probes at other Ray instances, creating a self-propagating botnet.
Conditions required:
  • Developer machine has credentials for production infrastructure (extremely common for ML engineers)
Where this breaks in practice:
  • MFA on cloud providers may slow lateral movement
  • Credential rotation policies may limit window
Detection/coverage: Cloud provider anomaly detection; SIEM correlation of unusual API calls from developer workstation IPs
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationKEV-listed. While this specific CVE targets the DNS rebinding vector, the broader Ray unauthenticated API attack surface is under active mass exploitation via the ShadowRay 2.0 campaign (Nov 2025), which compromised 200,000+ exposed Ray servers globally.
Proof-of-ConceptPublic PoC exists. Full exploit chain documented in GHSA-q279-jhrf-cc6v including DNS rebinding via nccgroup/singularity, User-Agent bypass payload, and job submission JSON. Researchers: @JLLeitschuh (Socket, DNS rebinding + PoC) and @avilum (Oligo, fetch bypass theory).
EPSS Score0.00369 (low probability) — EPSS underweights browser-mediated attack chains; do not rely on this score given KEV listing.
KEV StatusListed. CISA KEV inclusion confirms observed exploitation in the wild.
CVSS VectorCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H — 9.4 CRITICAL per GHSA. Note: UI:P (passive user interaction required) is the key limiter; no vendor-assigned baseline exists.
Affected VersionsAll Ray versions < 2.52.0. This includes the entire 2.x line back to when the Dashboard API was introduced.
Fixed VersionRay 2.52.0 (fix commit 70e7c72). Token-based authentication added but disabled by default — patching alone does not enable auth.
Exposure DataPer Oligo/ShadowRay research and Shodan enumeration, thousands of Ray dashboards are publicly exposed on port 8265. The Echelon Shadow AI Radar tracks live exposed Ray instances. This CVE targets *local* instances via browser, not directly exposed ones.
Disclosure Date2025-11-26 (coordinated disclosure via GitHub Security Advisory).
Reporting ResearchersJonathan Leitschuh (@JLLeitschuh, Socket) — DNS rebinding chain and full PoC. Avi Lumelsky (@avilum, Oligo Security) — original User-Agent fetch bypass theory and ShadowRay research lineage.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (8.2/10)

The single most decisive factor is the KEV listing combined with the role multiplier: Ray is canonically deployed on ML engineer workstations and AI compute clusters that hold cloud credentials, SSH keys, and proprietary models — compromising one developer machine can cascade to production GPU infrastructure and training data. While browser-specific friction (Firefox/Safari only, DNS rebinding prerequisites) prevents a CRITICAL assessment, the KEV listing and documented exploitation ecosystem floor this at HIGH.

HIGH Vulnerability existence and attack chain mechanics
HIGH KEV listing and active exploitation of Ray ecosystem
MEDIUM Fraction of Ray developers using Firefox/Safari vs Chrome
MEDIUM Effectiveness of modern Private Network Access browser protections against this specific rebinding technique

Why this verdict

  • KEV floor: CISA KEV listing confirms in-the-wild exploitation. The broader ShadowRay 2.0 campaign demonstrates that threat actors are actively targeting Ray infrastructure at scale — this CVE extends that threat to developer workstations previously considered unreachable.
  • Role multiplier: Ray is deployed on (a) developer workstations running local clusters, (b) production AI/ML compute clusters, and (c) high-value GPU infrastructure holding proprietary models, training data, and cloud credentials. This CVE targets role (a), but a compromised developer machine is a direct pivot to roles (b) and (c). The blast radius is host → cloud-infrastructure → fleet. Because ≥10% of Ray installations are developer workstations with production credentials, the verdict floor is HIGH.
  • Browser friction limits CRITICAL: Only Firefox and Safari are affected (~30-35% combined desktop share). Chrome (~65%) is immune due to an implementation quirk. Enterprise browser policies often mandate Chrome/Edge, further narrowing the vulnerable population. This friction prevents escalation to CRITICAL.
  • DNS rebinding friction: Modern browser versions increasingly implement Private Network Access (PNA) checks that block requests from public origins to loopback addresses. Firefox 130+ and Safari 18+ have partial PNA support. Corporate DNS resolvers with longer cache TTLs also degrade rebinding reliability.
  • No authentication by design: Ray's Dashboard API has historically had zero authentication. Even the 2.52.0 fix adds token auth as *opt-in, disabled by default*. This means patching alone doesn't fully remediate — defenders must also enable auth.

Why not higher?

CRITICAL would require the attack to be reliably exploitable across all browsers and without user interaction. This CVE requires the victim to use Firefox or Safari (~35% of desktop users), visit a malicious page, and have DNS rebinding succeed — three compounding friction points that materially reduce the exploitable population. Chrome's immunity alone eliminates the majority of potential targets in enterprise environments that standardize on Chromium-based browsers.

Why not lower?

MEDIUM is ruled out by the KEV listing (active exploitation confirmation), the public PoC with a fully documented attack chain, and the high-value role multiplier. A compromised ML engineer's workstation is not an isolated incident — it is a beachhead into production AI infrastructure, cloud accounts, and proprietary intellectual property. The ShadowRay campaign lineage demonstrates that threat actors have the motivation, tooling, and operational playbook to exploit Ray at scale.

05 · Compensating Control

What to do — in priority order.

  1. Enable Ray token-based authentication immediately — Even after patching to 2.52.0, authentication is disabled by default. Enable the new RAY_TOKEN environment variable or --token flag on all Ray head nodes. This blocks unauthenticated job submission regardless of the DNS rebinding vector. Deploy within the noisgate mitigation SLA of 30 days for HIGH, but given KEV listing, target hours.
  2. Enforce Chrome/Edge via enterprise browser policy — Chrome is immune to this CVE due to blocking User-Agent header modification in Fetch. Push GPO/MDM policy restricting Firefox and Safari on developer workstations that run Ray. This eliminates the attack surface for the majority of the fleet immediately.
  3. Block DNS rebinding at the corporate resolver — Configure internal DNS resolvers to reject external domain responses that resolve to RFC1918 or loopback addresses (DNS rebinding protection). Tools like dnsmasq --stop-dns-rebind or Cloudflare Gateway DNS policies can enforce this network-wide.
  4. Bind Ray Dashboard to localhost with firewall rules — Ensure Ray Dashboard (port 8265) is bound to 127.0.0.1 and not 0.0.0.0. While this CVE exploits localhost access via the browser, adding host-firewall rules to block non-loopback traffic to 8265 prevents the separate direct-exposure attack path (ShadowRay 2.0).
  5. Rotate developer cloud credentials and SSH keys — Given active exploitation campaigns, assume developer machines may already be compromised. Rotate AWS/GCP/Azure credentials, SSH keys, kubeconfig tokens, and Anyscale API keys for any ML engineer who has run Ray < 2.52.0. Prioritize within the KEV override window (hours).
What doesn't work
  • Network segmentation alone — this attack comes through the developer's browser to localhost, bypassing all network-layer controls. Your firewall never sees the malicious traffic because it never leaves the machine.
  • WAF / reverse proxy in front of Ray — the DNS rebinding attack targets the local Ray instance directly via loopback. A WAF protecting the production Ray cluster does not protect the developer's local instance.
  • EDR browser isolation — most EDR products do not intercept or inspect Fetch API calls from the browser to localhost. The attack looks like normal local web traffic until the shell command executes.
06 · Verification

Crowdsourced verification payload.

Run this script on any host where Ray may be installed (developer workstations, ML nodes). No special privileges required. Invoke with: bash check_cve_2025_62593.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2025-62593 Checker — Ray DNS Rebinding RCE
# Checks installed Ray version against patched version 2.52.0
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

PATCHED_VERSION="2.52.0"

# Try to get Ray version
if command -v ray &>/dev/null; then
  RAY_VERSION=$(ray --version 2>/dev/null | grep -oP '\d+\.\d+\.\d+' | head -1)
elif python3 -c 'import ray' &>/dev/null; then
  RAY_VERSION=$(python3 -c 'import ray; print(ray.__version__)' 2>/dev/null)
elif python -c 'import ray' &>/dev/null; then
  RAY_VERSION=$(python -c 'import ray; print(ray.__version__)' 2>/dev/null)
else
  echo "UNKNOWN — Ray is not installed on this host."
  exit 2
fi

if [ -z "$RAY_VERSION" ]; then
  echo "UNKNOWN — Could not determine Ray version."
  exit 2
fi

echo "Detected Ray version: $RAY_VERSION"
echo "Patched version: >= $PATCHED_VERSION"

# Version comparison using sort -V
LOWER=$(printf '%s\n%s' "$RAY_VERSION" "$PATCHED_VERSION" | sort -V | head -1)

if [ "$RAY_VERSION" = "$PATCHED_VERSION" ] || [ "$LOWER" = "$PATCHED_VERSION" ]; then
  # Also check if auth is enabled
  if ray status &>/dev/null 2>&1; then
    if env | grep -q 'RAY_TOKEN'; then
      echo "PATCHED — Ray $RAY_VERSION with token auth enabled."
    else
      echo "PATCHED — Ray $RAY_VERSION installed, but token auth may not be enabled. Enable RAY_TOKEN for defense-in-depth."
    fi
  else
    echo "PATCHED — Ray $RAY_VERSION (not currently running)."
  fi
  exit 0
else
  echo "VULNERABLE — Ray $RAY_VERSION is below $PATCHED_VERSION. CVE-2025-62593 applies."
  echo "ACTION: Upgrade to Ray >= $PATCHED_VERSION and enable token authentication."
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a KEV-listed vulnerability — the noisgate mitigation and remediation SLAs are overridden: patch or mitigate immediately, within hours. Monday morning, your AppSec and ML platform teams need to (1) inventory every Ray installation across developer workstations and compute clusters using the verification script, (2) upgrade all instances to Ray 2.52.0+ and enable token authentication (it's off by default even after patching), (3) push browser policy enforcing Chrome/Edge on ML engineer workstations to eliminate the Firefox/Safari attack surface, (4) enable DNS rebinding protection on corporate resolvers, and (5) rotate cloud credentials, SSH keys, and API tokens for any developer who has run a vulnerable Ray version — the ShadowRay 2.0 campaign means pre-existing compromise is plausible. The noisgate assessed severity is HIGH (8.2), but KEV listing means you do not get the standard 30-day mitigation window. Treat this as a same-day emergency for any team running Ray in development or production.

Sources

  1. GitHub Security Advisory GHSA-q279-jhrf-cc6v
  2. GitHub Advisory Database — CVE-2025-62593
  3. Oligo Security — ShadowRay 2.0 Campaign Analysis
  4. The Hacker News — ShadowRay 2.0 Coverage
  5. NVD — CVE-2025-62593 Detail
  6. Vulmon — CVE-2025-62593
  7. Echelon Shadow AI Radar — Live Exposed AI Infrastructure
  8. Dark Reading — ShadowRay 2.0 AI Clusters
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.