🎯 CVE-2025-62593 深度技术分析:漏洞根因 · PoC/EXP · 检测指纹

🎯 CVE 全聚合深度分析

CVE-2025-62593 深度技术分析

📊 聚合 3 来源🧪 含 PoC
NVD-LatestCISA-KEVPoC-in-GitHub

摘要:本篇文章深入剖析CVE-2025-62593——Ray AI计算引擎中一个高危的代码注入漏洞(CVSS 8.8)。该漏洞影响Ray 2.52.0之前的所有版本,攻击者可通过Firefox或Safari浏览器利用DNS重绑定结合可伪造的User-Agent头,绕过现有防御,对使用Ray开发工具的开发者实现远程代码执行(RCE)。由于Ray Dashboard关键API缺乏身份认证,漏洞构成实际风险已被CISA列入KEV(已知被利用漏洞)目录,并观察到在野利用。本文将从漏洞技术根因、攻击链路、影响面及修复缓解措施等角度展开深度分析。

📌 漏洞概述

Ray是由Ray Project维护的开源分布式AI计算引擎,广泛用于机器学习训练、超参数调优、强化学习及Python分布式应用开发。为便于开发与管理,Ray提供了一套HTTP Dashboard API(默认监听端口8265),支持提交作业(Job)、查询状态、读取日志等功能。

CVE-2025-62593为Ray Dashboard API中存在的代码注入漏洞,其本质是“无身份验证”的API接口叠加不充分的浏览器跨域防护。攻击者利用恶意网页,通过DNS rebinding与可控的User-Agent请求头,诱导开发者浏览器向本地或内网的Ray Dashboard API发起请求,提交包含任意命令的Job,最终在Ray集群头节点(head node)执行命令。

  • CVE编号:CVE-2025-62593
  • CVSS评分:8.8(High,根据NVD-Latest)
  • 漏洞类型:代码注入 / 远程代码执行(RCE)
  • 影响版本:Ray < 2.52.0
  • 利用条件:目标开发者需使用Firefox或Safari浏览器,并访问由攻击者控制的恶意页面或广告(恶意广告投放)
  • 已知利用:已添加至CISA KEV目录,确认存在在野利用

🔬 漏洞根因分析

漏洞的根因可拆解为以下三个层面:

1. 关键HTTP API缺失身份认证
Ray的Dashboard服务暴露了包括/api/jobs//api/job_agent/jobs在内的多个管理端点。其中,POST /api/jobs/允许调用者提交一个Ray Job,其entrypoint字段可设置为任意Shell命令,用于定义Job的执行入口。这些API在设计之初便未实施任何认证或访问控制机制。Ray团队长期将“Dashboard仅绑定到localhost”或“内网环境可信”作为隐式安全假设,但在实际部署中,大量用户会将Dashboard端口(8265)暴露到公网或局域网,导致任意远程攻击者可以直接调用API。此问题在前序多个漏洞中已暴露,但尚未彻底修复。

2. 针对浏览器攻击的防护仅依赖User-Agent头检测
为缓解“跨站请求伪造”风险,Ray团队设计了一个简单的检查:仅接受User-Agent请求头以Mozilla开头的请求。其预期逻辑是,浏览器发起的HTTP请求必然携带以Mozilla/开头的User-Agent,而命令行工具或脚本(如curl)则默认携带其自有标识。因此,只要拦截非Mozilla开头的请求,即可防止“非浏览器”的自动化攻击。然而,该防线存在根本性缺陷——根据WHATWG的Fetch规范,浏览器允许网页中的JavaScript通过fetch() API的headers字段自定义任意请求头,其中也包含User-Agent。尽管部分浏览器对User-Agent头有安全限制(如Chrome会拒绝某些头字段),但Firefox和Safari并未严格执行,攻击者可以轻易在恶意页面中将User-Agent设为Mozilla/5.0 ...绕过该检查。

3. DNS rebinding绕过同源策略
即使攻击者能够伪造User-Agent,浏览器还有一道同源策略防线:页面脚本只能向同源(同协议、域名、端口)发起请求。攻击者若要访问http://127.0.0.1:8265,必须使脚本与被攻击的目标同源。DNS rebinding攻击正是为此设计:攻击者控制一个恶意域名(例如evil.attacker.com),首次解析时返回一个位于攻击者服务器上的IP地址,用于加载恶意页面;随后在页面加载完成后,通过定时刷新或短暂TTL,将同一域名重新解析为受害者的内网IP(如127.0.0.1)或局域网IP。由于同源策略只校验域名而非IP,此时页面已与目标Ray服务“同源”,JavaScript便可不受限制地访问Ray API。Chrome浏览器通过Private Network Access(PNA)机制,对页面发往内网/本地的请求会有额外预检要求,从而阻断了此类攻击;但Firefox和Safari尚未完整实现PNA或没有默认为强制启用,因此该漏洞在两者上尤其有效。

结合以上三点,XSS攻击链可表述为:开发者使用Firefox/Safari访问恶意网页 → 恶意脚本构造fetch请求,携带伪造的User-Agent: Mozilla/...头 → 触发DNS rebinding将域名指向127.0.0.1 → 请求到达Ray Dashboard的POST /api/jobs/ → 提交entrypoint为攻击者命令的Job → Ray调度器在集群头节点执行该命令,实现远程代码执行。已公开的PoC(如CVE-2025-62593-PoC)直接通过HTTP API验证了Job提交和命令回显的可行性,而无需依赖浏览器,进一步证实了底层API的无认证性。

💥 影响与危害

该漏洞的直接危害是:攻击者可在运行Ray Dashboard的头节点上执行任意系统命令,完全控制该计算节点。结合Ray集群通常拥有大量GPU/CPU资源及数仓访问权限,攻击者可实施以下恶意操作:

  • 数据窃取:读取头节点上的数据文件、环境变量、云凭据(如AWS/阿里云密钥)、源代码等敏感信息。
  • 集群接管:在分布式环境中,攻击者可能通过已获得的头节点权限,进一步利用Ray内部通信协议,控制worker节点,横向移动。
  • 勒索挖矿:部署挖矿程序消耗GPU/CPU资源,或加密勒索高价值数据。
  • 供应链风险:开发者机器被攻陷后,攻击者可篡改其开发依赖、提交恶意代码等,影响软件供应链。

根据互联网扫描数据,Ray Dashboard端口(8265)上曾公开暴露有超20万个实例,大量集群缺少网络隔离。CISA已将该漏洞列入Known Exploited Vulnerabilities(KEV)目录,要求联邦机构在期限内完成修复,并明确观察到在野利用活动。对于使用Ray进行本地开发的研究人员,即使网络隔离良好,一旦浏览器被诱导访问恶意页面,同样会因DNS rebinding而中招,形成“零接触”攻击风险。

🛡️ 修复与缓解

v2.52.0补丁:Ray官方已在版本2.52.0中修复此漏洞。根据公告,修复方案不再仅依赖User-Agent头检测,而是引入了更严格的同源校验或CSRF防护机制,确保API请求必须来自可信来源。用户应立即升级到2.52.0或更高版本。

临时缓解与加固建议:

  • 网络层限制:确保Ray Dashboard(8265)和GCS(6379)等管理端口不直接暴露在公网。使用防火墙或安全组,仅允许可信IP(如开发内网)访问。
  • 配置身份认证:在Ray前部署反向代理,强制启用基本认证、OAuth等机制,并为Ray API增加访问令牌校验,即使请求来自浏览器也需要高强度鉴权。
  • 使用具备PNA保护的浏览器:对于开发用途,尽量使用Chrome/Edge(其Private Network Access会拦截内网请求)作为访问本地服务的主力浏览器,降低DNS rebinding的攻击面。
  • 严格管控浏览器扩展与广告拦截:告知开发者不要轻易点击不明链接,尤其针对使用Firefox/Safari的用户,提高警惕。
  • 监控异常Job提交:对Ray Dashboard的日志进行集中审计,检测来自非常规来源的/api/jobs POST请求。
  • 企业遵循CISA指导:按照BOD 26-04的优先级,及时为相关资产打补丁;在无法立即升级时,评估是否暂停使用联网的Ray服务。

综上,CVE-2025-62593是一起典型的“设计遗留+安全短板叠加”导致的高危RCE漏洞。其核心教训在于,任何面向浏览器管理的服务不应依赖隐式假设(如User-Agent)作为安全边界,必须从认证、请求校验、网络隔离等层面构建纵深防御。Ray用户应高度重视本次补丁更新,防止漏洞被实际利用。

🧪 PoC 复现

从 GitHub 公开仓库抓取的实际 PoC 代码(仓库)。

📋 代码元数据语言md来源Boreas37/CVE-2025-62593-PoC针对性✅ 已验证与漏洞相关(代码含 CVE 引用)依赖见代码注释/README用法详见代码注释中的使用说明

# CVE-2025-62593 — Ray Remote Code Execution (unauthenticated)

Proof-of-concept for **CVE-2025-62593**,an unauthenticated Remote Code Execution
vulnerability in the [Ray](https://github.com/ray-project/ray) distributed AI compute
engine,
abused via browser-based DNS-rebinding attacks. It was added to the
**CISA Known Exploited Vulnerabilities (KEV) catalog** and is actively exploited.

The root cause is a long-standing design decision by the Ray team to run **no
authentication** on critical HTTP endpoints such as `/api/jobs` and
`/api/job_agent/jobs`. Because of that,
an unauthenticated remote attacker can submit a
Ray Job whose entrypoint is an arbitrary command,
which then executes on the cluster
head node — full remote code execution.

This PoC talks to the Ray Dashboard HTTP API directly (no browser/DNS-rebinding needed
to demonstrate the underlying bug) and recovers the command output from the job logs.

## Impact

- **CVSS:** Critical (9.8)
- **Affected:** Ray <2.52.0 (patch released for this advisory)
- **CISA KEV:** Yes — active exploitation,
remediation deadline enforced
- Exposes the ~200k+ publicly reachable Ray AI clusters to pre-auth RCE

## What it does

1. `POST /api/jobs/` with an `entrypoint` that runs your command and captures its
   stdout/stderr into a temp file,
then prints the file back.
2. Polls `GET /api/jobs/` until the job reaches a terminal state.
3. Reads `GET /api/jobs/<submission_id>/logs` and prints the command output.

## Usage

```bash
# Single target
python3 ray_rce_poc.py --target http://HOST:8265

# Custom command
python3 ray_rce_poc.py --target http://HOST:8265 --command "id;uname -a"

# Multiple targets from a file (one per line,
'#' = comment)
python3 ray_rce_poc.py --targets targets.txt --command id

# Write a JSON summary
python3 ray_rce_poc.py --target http://HOST:8265 --output out.json

# Help
python3 ray_rce_poc.py --help
```

Requires **Python 3 stdlib only** — no third-party dependencies.

## Example (verified against a local Docker lab)

```
$ python3 ray_rce_poc.py --target http://localhost:8265 --command "id;
hostname"
== http://localhost:8265
Running entrypoint for job raysubmit_XXX: python -c "import os,os.path;..."
uid=1000(ray) gid=100(users) groups=100(users),27(sudo)
05cdb1bea437
=>PASS (RCE confirmed,status: SUCCEEDED,
exit code: 0)
```

## References

- [CISA KEV catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [GitHub Security Advisory GHSA-q279-jhrf-cc6v](https://github.com/ray-project/ray/security/advisories/GHSA-q279-jhrf-cc6v)

## Disclaimer

For security research and authorized testing only. Use only against systems you own or
have explicit permission to test. The author is not responsible for misuse.

⚔️ EXP 利用代码

截至分析时,Exploit-DB 未收录该 CVE 的公开利用代码。可利用上述 PoC 进行验证,或关注 Exploit-DB 更新。

🕵️ 检测指纹

当前规则库未收录针对该 CVE 的专用检测规则。建议:

  • 根据漏洞根因编写 Nuclei 检测模板
  • 在 WAF/IDS 中配置针对漏洞特征的规则
  • 关注漏洞指纹库更新

🤖 本文由漏洞情报系统自动聚合生成 · 2026-08-19 09:08 · 数据源: NVD/GitHub-Advisory/OSV/CISA-KEV/Exploit-DB/PoC-in-GitHub + 检测规则库

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)