官网:http://securitytech.cc/
React2Shell 解剖:深入理解 CVE-2025–55182 这一致命 RCE 漏洞
一个足以把你服务器“钥匙”交给黑客的漏洞
在 2025 年第四季度,Web 开发社区遭遇了自 Log4Shell 以来最严重的一次安全危机。 该漏洞被编号为 CVE-2025–55182,并被广泛称为 React2Shell。
这是一个发生在现代 Web 架构中的“完美风暴”级漏洞,CVSS 评分高达 10.0,直指 React 19 生态系统的核心:React Server Components(RSC)。
多年来,整个行业不断向 “Server-First(服务端优先)”渲染模式迁移,以提升性能和 SEO 表现。 然而,React2Shell 暴露了一个根本性问题:这些框架在处理序列化数据时存在致命缺陷。
本文将从技术层面深入解析该漏洞的利用机制、受影响的框架,以及保障基础设施安全所需采取的完整措施。
别再为安全问题失眠:了解顶级 CTO 都在使用的 SecureSlate 安全策略,确保系统完整性。
什么是 CVE-2025–55182?
CVE-2025–55182 是一个严重的、无需认证的远程代码执行(RCE)漏洞。
该漏洞存在于 Flight 协议中 —— 这是 React 在基于 RSC 的应用中,用于在 服务端与客户端之间传输数据的内部序列化格式。
与传统针对数据库或错误配置云存储(如 S3)的漏洞不同, React2Shell 直接攻击的是“序列化逻辑本身”。
由于这套逻辑深度嵌入在 react-server-dom 相关包中,
任何使用 Next.js App Router 或类似 RSC 实现、且未打补丁的应用,天然处于高危状态。
向 React Server Components 的转变
要理解这个漏洞的危险性,必须先理解 React 19 的架构设计。
在 React 19 中,组件被分为两类:
-
客户端组件(Client Components)
-
传统 React 组件,在浏览器中执行。
-
服务端组件(Server Components)
-
仅在服务器上执行,可以直接访问数据库、文件系统,而不将这些逻辑暴露给客户端。
连接这两者的桥梁正是 Flight 协议。
当客户端请求页面或触发 Server Action 时, 服务器会以一种特殊的文本流格式返回数据,在网络日志中常见如下片段:
1:I{...}
$@
技术深挖:为什么 React2Shell 如此危险?
“React2Shell”这个名字并非夸张。
该漏洞允许攻击者:
- 绕过所有认证机制
-
- 在宿主操作系统上执行任意命令
-
- 执行权限等同于 Node.js 进程本身
Thenable 反序列化缺陷
漏洞的根源在于: React 服务端在“反序列化(rehydration)”客户端数据时过于信任输入。
当客户端触发 Server Action 时,会向服务器发送一个 POST 请求, 服务器需要解析其中的 Flight 数据负载。
在 JavaScript 中,任何拥有 .then() 方法的对象,都会被视为 “thenable”。
Node.js 运行时和大量库都会把 thenable 当作 Promise 处理。
一旦对其 await,.then() 方法就会被自动调用。
问题就在这里:
RSC 解析器(尤其是
react-server-dom-webpack)对 thenable 的处理过于宽松。
攻击者可以构造一个恶意的 Flight payload, 在其中伪造一个“看起来合法”的 Chunk,但本质上是恶意 thenable 对象。
当服务端解析组件树时,
就会触发该恶意对象的 .then() 方法,从而执行攻击者控制的代码。
原型污染与逻辑注入
由于攻击者完全控制序列化数据, 他们可以将 JavaScript 代码直接注入到 thenable 结构中。
// 示例(原文展示)

当 React 服务端运行时解析到这一结构时, 它看到的不再是“数据”,而是一条待执行的指令。
而且,这一切发生在 Node.js 环境中, 攻击者可以直接使用:
fs(文件系统)-
child_process
-
- 以及所有 Node.js 原生 API
为什么 React2Shell 被称为“JavaScript 世界的 Log4Shell”
安全研究人员将 CVE-2025–55182 与 Log4j 做类比,原因主要有以下几点:
1. 影响范围极其广泛
React 是全球最流行的前端框架。
随着 React 19 发布、Next.js 成为事实上的行业标准, App Router 架构被广泛采用。
这意味着:
从个人博客到财富 500 强企业门户,数百万应用在一夜之间暴露在攻击面前。
2. 极难被检测
传统的基于特征的 WAF(Web 应用防火墙) 最初几乎无法识别 React2Shell 攻击。
原因是 Flight 协议:
- 不是 JSON
-
- 是 React 私有的流式格式
-
- 在防火墙看来,恶意 payload 与正常流量几乎无异
按回车或点击查看原图

图片由 AI 生成
3. 无需认证
这是最令人恐惧的一点:
攻击完全不需要任何账号或凭证。
攻击者只需找到一个接受 Server Action 或 RSC 请求的端点即可。
4. 可建立持久控制(反弹 Shell)
一旦 RCE 成功,攻击者通常会:
- 启动 反弹 Shell
-
- 从内部绕过防火墙
-
- 在企业内网中横向移动
受影响的框架与版本
该漏洞并不仅限于 React 本身, 而是影响了整个 基于 React 19 RSC 架构构建的元框架生态。
按回车或点击查看原图

⚠️ 重要警告:
- RCE(CVE-2025–55182)虽在 React 19.2.1 中被修复
-
- 但该补丁引入了新的漏洞 CVE-2025–55184(DoS)
-
- 只有 React 19.2.3 及以上版本才被认为是完全安全的
检测与利用验证
如果你是开发者或安全工程师, 在证明安全之前,应默认你的应用是脆弱的。
步骤 1:依赖审计
检查 package-lock.json 或 yarn.lock,
即使 package.json 中没有直接声明,
react-server-dom-webpack 很可能是 Next.js 的间接依赖。

步骤 2:查找攻击指纹
在服务器日志中重点关注:
- 大量 POST 请求指向
/_next/data/... -
- 包含
Next-Action请求头的请求
- 包含
攻击者通常会向这些端点发送畸形 Flight 数据进行探测。
修复与缓解策略
打补丁是唯一彻底的解决方案, 但在企业环境中,并不总是能立刻升级。
立即升级(强烈推荐)
Next.js 用户应升级至:
- Next.js ≥ 15.5.7
-
- React ≥ 19.2.3
升级后请务必:
rm -rf .next
然后重新部署。
WAF / 边缘防护
如果暂时无法升级:
-
按请求头过滤:拦截
Next-Action -
- Payload 检测:
-
出现
$@且数据异常庞大 -
- Flight 数据中包含
then关键字
- Flight 数据中包含
环境变量与运行权限加固
由于漏洞发生在 Node.js 进程内:
- 不要使用 root 运行 Node 服务
-
- 使用权限受限的专用用户
-
- 使用 Vault / Secrets Manager 管理密钥
-
- 避免
.env明文暴露敏感信息
- 避免
“第二波”漏洞:CVE-2025–55183 / 55184
如同许多重大漏洞一样,补丁本身引出了新的问题:
- CVE-2025–55183:服务端源码泄露
-
- CVE-2025–55184:递归 thenable 导致事件循环死转(DoS)