CVE-2023-6020: Ray: unauthenticated LFI exposes entire filesystem
GHSA-6cxr-8q3m-jwrr CRITICAL PoC AVAILABLE NUCLEI TEMPLATEAny internet-exposed Ray cluster running < 2.8.1 is fully compromised — attackers can read any file on the host including cloud credentials, API keys, model weights, and training data with a single HTTP GET request. EPSS of 0.80 signals active exploitation probability; treat this as likely already hit in exposed environments. Patch to 2.8.1 immediately, restrict Ray ports to trusted networks, and rotate all secrets on affected nodes.
Risk Assessment
CRITICAL. CVSS 9.3 combined with EPSS 0.80 (top 5% exploitation likelihood across all CVEs) makes this extremely high priority. Zero authentication required, zero user interaction, fully network-exploitable. Ray clusters typically run with broad filesystem access and store cloud provider credentials, making blast radius exceptionally high. Ray has no authentication on its dashboard or API by default, meaning internet-exposed deployments are trivially exploitable by anyone.
Affected Systems
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| ray | pip | < 2.8.1 | 2.8.1 |
Do you use ray? You're affected.
Severity & Risk
Attack Surface
Recommended Action
1 step-
1) Patch immediately: upgrade ray to >= 2.8.1 across all environments (pip install 'ray>=2.8.1'). 2) If patching is not immediate: block Ray ports 8265 (dashboard), 6379 (Redis), and 10001 (object store) at the firewall — none should be internet-exposed. 3) Rotate all secrets potentially accessible on Ray nodes: cloud IAM credentials, API keys, SSH private keys, database passwords, ML platform tokens (Weights & Biases, HuggingFace, etc.). 4) Detection: grep HTTP logs for requests to /static/ containing '../', '%2e%2e', or encoded traversal sequences. 5) Inventory: scan requirements.txt, Dockerfiles, Helm charts, and deployed pods for ray < 2.8.1. 6) Long-term: enforce network segmentation for all ML infrastructure — Ray clusters should never be publicly reachable.
Classification
Compliance Impact
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2023-6020?
Any internet-exposed Ray cluster running < 2.8.1 is fully compromised — attackers can read any file on the host including cloud credentials, API keys, model weights, and training data with a single HTTP GET request. EPSS of 0.80 signals active exploitation probability; treat this as likely already hit in exposed environments. Patch to 2.8.1 immediately, restrict Ray ports to trusted networks, and rotate all secrets on affected nodes.
Is CVE-2023-6020 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2023-6020, increasing the risk of exploitation.
How to fix CVE-2023-6020?
1) Patch immediately: upgrade ray to >= 2.8.1 across all environments (pip install 'ray>=2.8.1'). 2) If patching is not immediate: block Ray ports 8265 (dashboard), 6379 (Redis), and 10001 (object store) at the firewall — none should be internet-exposed. 3) Rotate all secrets potentially accessible on Ray nodes: cloud IAM credentials, API keys, SSH private keys, database passwords, ML platform tokens (Weights & Biases, HuggingFace, etc.). 4) Detection: grep HTTP logs for requests to /static/ containing '../', '%2e%2e', or encoded traversal sequences. 5) Inventory: scan requirements.txt, Dockerfiles, Helm charts, and deployed pods for ray < 2.8.1. 6) Long-term: enforce network segmentation for all ML infrastructure — Ray clusters should never be publicly reachable.
What systems are affected by CVE-2023-6020?
This vulnerability affects the following AI/ML architecture patterns: distributed ML training clusters, model serving infrastructure, hyperparameter tuning pipelines, MLOps platforms, reinforcement learning environments.
What is the CVSS score for CVE-2023-6020?
CVE-2023-6020 has a CVSS v3.1 base score of 9.3 (CRITICAL). The EPSS exploitation probability is 81.45%.
Technical Details
NVD Description
LFI in Ray's /static/ directory allows attackers to read any file on the server without authentication. The issue is fixed in version 2.8.1+. Ray maintainers response can be found here: https://www.anyscale.com/blog/update-on-ray-cves-cve-2023-6019-cve-2023-6020-cve-2023-6021-cve-2023-48022-cve-2023-48023
Exploitation Scenario
An attacker runs a Shodan query for exposed Ray dashboards (port 8265, no auth by default) and identifies targets. They craft a simple HTTP GET: 'GET /static/../../../../proc/1/environ HTTP/1.1' to extract all environment variables from the Ray head node process — instantly revealing AWS_ACCESS_KEY_ID, HUGGINGFACE_TOKEN, WANDB_API_KEY, and database connection strings. With cloud credentials in hand, they enumerate S3/GCS buckets and exfiltrate proprietary model weights and training datasets. The entire attack chain from discovery to data exfiltration takes under 5 minutes and requires no ML expertise — any script kiddie with a browser can execute it.
Weaknesses (CWE)
CVSS Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N References
Timeline
Scanner Template Available
A Nuclei vulnerability scanner template exists for this CVE. You can scan your infrastructure for this vulnerability immediately.
View template on GitHubnuclei -t http/cves/2023/CVE-2023-6020.yaml -u https://target.example.com Related Vulnerabilities
CVE-2023-6019 9.8 Ray: unauthenticated RCE via dashboard command injection
Same package: ray CVE-2023-48022 9.8 Ray: unauthenticated RCE via job submission API
Same package: ray CVE-2023-6021 9.3 Ray: LFI allows unauthenticated file read
Same package: ray CVE-2025-1979 6.4 Ray: Redis password exposed via plaintext logging
Same package: ray CVE-2026-27482 5.9 ray: Missing Auth allows unauthenticated access
Same package: ray
AI Threat Alert