FlawOpen

flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce

● CVE-2025-55182 · CVSS 10.0[1] · 严重
安全研究 · FlawOpen

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]

框架映射

根本原因剖析 (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

暴露的 RSC 边界收到未认证请求

React 指出,即使应用没有自定义 Server Function endpoint,仅支持 RSC 也可能受影响。没有服务端的纯客户端应用不受此 CVE 影响。[1], [4]

步骤 2

构造请求到达易受攻击的解码器

厂商将其描述为解码发往 Server Function endpoint 的请求时存在缺陷。公告没有披露完整利用步骤,不应推断未公开细节。[1], [2]

步骤 3

代码以 Web 服务进程身份执行

公告称代码以受影响服务端进程的权限执行。实际影响取决于该账户及其可访问的密钥和服务。[1], [4]

步骤 4

Google GTIG 观察到隧道工具、下载器、后门和挖矿程序

GTIG 观察到部署隧道工具、下载器、后门和挖矿程序的活动。这证明漏洞遭到利用,但不表示所有易受攻击主机都已失陷。[5], [6]

源代码对比:漏洞与安全实现

这段上游补丁代码只返回模块自身的导出项;它没有复现完整的解码缺陷,也不能单独修复问题。请升级受影响的 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);
}

工程与系统安全加固清单

参考来源