严重性: 严重 — CVSS 10.0
CWE: CWE-502(不受信任数据的反序列化)
供应商: Meta(Facebook)
披露日期: 2025年12月3日
CVE-2025-55182 是 React Server Components (RSC) 中的一个最高严重性未认证远程代码执行 (RCE) 漏洞,被称为 React2Shell。该漏洞存在于 React 如何解码通过 Flight 协议 发送到 React Server Function 端点的负载中。攻击者可以发送一个特制的 HTTP POST 请求到易受攻击的服务器,并执行任意代码——无需凭据,无需用户交互。
如果应用程序支持 React Server Components,即使没有暴露显式的 Server Function 端点,仍然可能受到影响。
| 包名 | 受影响版本 | 已修补版本 |
|---|---|---|
react-server-dom-webpack |
受影响的框架(使用易受攻击的 React 包时):Next.js 15.x / 16.x (App Router)、React Router、Waku、RedwoodSDK、Parcel RSC、Vite RSC 插件。
向量字符串:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
React Server Components 使用一种称为 Flight 协议 的二进制线格式,将组件树从服务器流式传输到客户端。同一协议还处理 Server Functions(以前称为 Server Actions)——可从浏览器接受序列化参数的可调用端点。
漏洞存在于 反序列化器 中:当 React 处理 Flight 负载时,可能被诱骗实例化任意服务器端对象,从而导致完全 RCE。由于只要启用 RSC,Flight 端点默认就会暴露,且协议层面没有身份验证门控,因此利用仅需访问服务器网络。
附带的模板 CVE-2025-55182.yaml 使用了三种互补的检测方法。
向根路径发送一个最小的 POST 请求,内容类型为 Content-Type: text/x-component。易受攻击(或可达)的 RSC 服务器会以相同的内容类型和 Flight 流主体响应,其行以字母数字行 ID 后跟冒号(例如 0:、1:)或 React 引用符号($L、$S、$I、$@)开头。
POST / HTTP/1.1
Content-Type: text/x-component
Accept: text/x-component, */*
匹配条件: HTTP 200 + text/x-component 标头 + 响应正文中的 Flight 流正则表达式。
Next.js 通过 RSC: 1 标头和 ?_rsc= 查询参数标识 RSC 请求。此请求模拟浏览器预取,以确认 App Router Flight 端点可达。
GET /?_rsc=1 HTTP/1.1
Accept: text/x-component
RSC: 1
Next-Router-State-Tree: %5B%22%22%2C%7B%7D%5D
匹配条件: HTTP 200 + text/x-component 标头。
发送一个最小的格式错误的 Flight 负载,并附带 Next-Action 标头(用于调用 Server Functions 的机制)。易受攻击的服务器会尝试反序列化该负载;即使返回包含 RSC 特定标头的错误响应,也能确认端点存在。
POST / HTTP/1.1
Content-Type: text/x-component
Next-Action: 0000000000000000000000000000000000000000
匹配条件: HTTP 200/400/500 + text/x-component 或 x-action-revalidated 标头。
扫描本地 *.json 文件(例如 package-lock.json、yarn.lock),查找易受攻击的包名与版本正则表达式(匹配 19.0.0、19.1.0、19.1.1 或 19.2.0)的组合。适用于在不发送任何网络流量的情况下审计仓库或 CI 流水线。
# Install / update Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -target CVE-2025-55182.yaml -u https://target.example.com
nuclei -target CVE-2025-55182.yaml -l targets.txt
nuclei -target CVE-2025-55182.yaml -target ./path/to/project
nuclei -target CVE-2025-55182.yaml -u https://target.example.com -v -je results.json
nuclei -target CVE-2025-55182.yaml -u https://target.example.com -rl 10 -timeout 10
立即升级 到已修补的版本:
# npm
npm install react-server-dom-webpack@latest
# yarn
yarn upgrade react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
# pnpm
pnpm update react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
各分支的最低安全版本:
| 分支 | 最低安全版本 |
|---|---|
| 19.0.x | 19.0.1 |
| 19.1.x | 19.1.2 |
| 19.2.x | 19.2.1 |
临时缓解措施(如果无法立即升级):
text/x-component 内容类型的 WAF 规则(此 CVE 的 Google Cloud Armor 规则已公开)。package-lock.json、node_modules 或 SBOM。此模板仅用于授权的安全测试和漏洞评估。在你不拥有或未经明确书面许可的系统上运行它可能是非法的。作者不对误用承担任何责任。
| 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| ≥ 19.0.1 / 19.1.2 / 19.2.1 |
react-server-dom-parcel | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
react-server-dom-turbopack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
| 度量指标 | 值 |
|---|
| 攻击向量 | 网络 |
| 攻击复杂度 | 低 |
| 所需权限 | 无 |
| 用户交互 | 无 |
| 范围 | 已改变 |
| 机密性 | 高 |
| 完整性 | 高 |
| 可用性 | 高 |
| 总体评分 | 10.0(严重) |