flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce
CVE-2025-55182:React2Shell RSC 远程代码执行漏洞
CVE-2025-55182 是 React Server Components(RSC)payload 解码中的未认证远程代码执行漏洞。React 确认了解码缺陷;Google Threat Intelligence 记录了部署下载器、后门和挖矿程序的攻击活动。[1], [4], [5]
💡 通俗易懂的原理解析 (ELI5)
想象接待员查阅获准服务目录。错误的查找把从目录模板继承的名称当成目录所有者亲自登记的项目。React 的补丁会检查请求的模块导出是否属于模块自身;公开公告没有披露完整的利用过程。请升级受影响的软件包。[1]
核心概念与专有名词
React Server Components (RSC)- React Server Components:用于服务端渲染和 Flight 数据交换的 React 协议与软件包。[1]
框架映射
- 本指南所述弱点的 CWE 参考: CWE-502
- CISA KEV — 收录日期 2025-12-05 — CVE-2025-55182
根本原因剖析 (Root Cause)
React 确认缺陷发生在解码发送到 React Server Function endpoint 的 payload;仅支持 RSC 也可能受影响。初始公告未披露更多利用细节。公开上游补丁在 requireModule() 中增加自有属性检查,并处理 multipart 回复错误。此片段展示具体修复,不是完整漏洞复现,也不表示单个检查说明了整个攻击链。[1], [2]
React2Shell 受影响版本与部署范围
| 组件或部署方式 | 范围判断 | 修复措施 |
|---|---|---|
react-server-dom-webpack、react-server-dom-parcel 或 react-server-dom-turbopack 的 19.0、19.1.0、19.1.1 或 19.2.0 版本。 | 服务端 RSC 支持可能使应用暴露风险,即使应用没有声明 Server Function 端点;服务端边界必须可访问。 | 按对应的软件包分支升级到 19.0.1、19.1.2 或 19.2.1 及更高版本。重新构建并部署服务端产物。 |
| 使用受影响的 15.x/16.x 版本,或 14.3.0-canary.77 及后续 canary 版本的 Next.js App Router。 | 受影响的框架集成包含存在漏洞的 RSC 软件包。不要因为应用没有声明自己的 Server Function 端点就认定安全。 | 使用对应分支的修复版本:15.0.5、15.1.9、15.2.6、15.3.6、15.4.8、15.5.7 或 16.0.7 及更高版本。这些是所引用公告记录的最低版本;部署前请核对供应商当前分支。 |
| 没有服务端 RSC 支持的纯客户端 React 应用。 | 不在该 CVE 的文档范围内,因为不存在服务端解码边界。 | 此配置无需 React2Shell 服务端补丁。如果引入 RSC 或服务端组件,应重新评估。 |
| 部署已报告为已修复。 | 清单中的版本不能证明每个运行区域、预览服务、worker 或容器都使用修复后的产物。 | 核对生产、预览和 worker 环境的镜像摘要及解析后的软件包版本;调查此前可能暴露的时间段。 |
| React 于 2026-01-26 更新的 Next.js 分支版本建议 | React 后续指南列出了更新的安全版本;这些并非最初修复 CVE-2025-66478 的最低版本。相关 RSC 公告和受支持分支可能改变升级目标。 | 对于相关 RSC 公告 CVE-2025-55183、CVE-2025-55184、CVE-2025-67779 和 CVE-2026-23864,React 列出的修复版本为 19.0.4、19.1.5 和 19.2.4。React 于 2026-01-26 给出的 Next.js 建议为:稳定版 13.3.x–14.x 使用 14.2.35;15.0.x 使用 15.0.8;15.1.x 使用 15.1.12;15.2.x 使用 15.2.9;15.3.x 使用 15.3.9;15.4.x 使用 15.4.11;15.5.x 使用 15.5.10;16.0.x 使用 16.0.11;16.1.x 使用 16.1.5。这是针对相关问题的后续建议,并非修复 CVE-2025-66478 的 Next.js 最低版本。部署前请查阅供应商最新公告并确认受支持分支。 |
CVE-2026-23869 — RSC 拒绝服务(2026-04-08)。 | React 表示,发往 Server Function 端点的特制 HTTP 请求可能导致 CPU 过度消耗,最长约一分钟后才产生可捕获的错误。受影响的 react-server-dom-* 软件包分支版本截至 19.0.4、19.1.5 和 19.2.4。 | React 列出的对应修复版本为 19.0.5、19.1.6 和 19.2.5。 |
CVE-2026-23870 — RSC 拒绝服务(2026-05-06)。 | React 表示,特制 HTTP 请求可能导致内存耗尽异常或 CPU 过度消耗。受影响的 react-server-dom-* 软件包分支版本截至 19.0.5、19.1.6 和 19.2.5。 | React 列出的对应修复版本为 19.0.6、19.1.7 和 19.2.6。 |
CVE-2026-44907 — Server Functions 拒绝服务(2026-07-21)。 | React 表示,特制 HTTP 请求可能导致内存耗尽异常或 CPU 过度消耗。受影响的 react-server-dom-* 软件包分支版本截至 19.0.7、19.1.8 和 19.2.7。 | React 列出的对应修复版本为 19.0.8、19.1.9 和 19.2.8。 |
攻击执行流程分解
步骤 1
源代码对比:漏洞与安全实现
这段上游补丁代码只返回模块自身的导出项;它没有复现完整的解码缺陷,也不能单独修复问题。请升级受影响的 React Server Components 软件包或框架。[2], [1]
源码摘录: React Parcel 客户端中的 requireModule() 方法
存在漏洞的实现
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
return moduleExports[metadata[NAME]];
}
加固后的安全修复
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
return moduleExports[metadata[NAME]];
}
return (undefined: any);
}
工程与系统安全加固清单
- ✓检查 lockfile、容器镜像和服务端 bundle。[1], [4]
- ✓升级到 React RSC 19.0.1、19.1.2 或 19.2.1 及以上,并使用框架修复版。 对于后续 RSC 公告,请查看矩阵,并将实际解析到的
react-server-dom-*软件包升级到适用分支的最新修复版本;框架可能会捆绑这些软件包。[1], [4], [8], [9], [10] - ✓重建并重新部署;WAF 不能替代补丁。[1]
- ✓验证实际运行版本。[1]
- ✓若曾未修复且暴露,调查进程和连接并轮换密钥。[5], [6]
参考来源
- React Security Advisory — CVE-2025-55182
- React upstream patch — commit 7dc903c
- NVD — CVE-2025-55182, CWE-502 and KEV status
- Next.js Security Advisory — CVE-2025-66478
- Google Threat Intelligence — React2Shell exploitation
- CISA Known Exploited Vulnerabilities Catalog
- React 安全公告:其他 RSC 漏洞
- React 安全公告 — CVE-2026-23869(RSC 拒绝服务)
- React 安全公告 — CVE-2026-23870(RSC 拒绝服务)
- React 安全公告 — CVE-2026-44907(Server Functions 拒绝服务)