文章总结: CVE-2025-55182(React2Shell)是一个影响React19生态系统的严重无需认证远程代码执行漏洞,CVSS评分10.0。漏洞存在于Flight协议中,由于React服务端在反序列化客户端数据时过于信任输入,允许攻击者构造恶意thenable对象执行任意代码。影响所有使用ReactServerComponents的应用,尤其是Next.jsAppRouter架构。修复需升级至React≥19.2.3和Next.js≥15.5.7,中间版本存在新漏洞。 综合评分: 86 文章分类: 漏洞分析,WEB安全
React2Shell 解剖:深入理解 CVE-2025–55182
hai dragon
安全狗的自我修养
2025年12月23日 12:11 湖南
官网: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 与正常流量几乎无异
按回车或点击查看原图
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关键字
环境变量与运行权限加固
由于漏洞发生在 Node.js 进程内:
- 不要使用 root 运行 Node 服务
- 使用权限受限的专用用户
- 使用 Vault / Secrets Manager 管理密钥
- 避免
.env明文暴露敏感信息
“第二波”漏洞:CVE-2025–55183 / 55184
如同许多重大漏洞一样,补丁本身引出了新的问题:
- CVE-2025–55183:服务端源码泄露
- CVE-2025–55184:递归 thenable 导致事件循环死转(DoS)
👉 仅停留在 19.2.1 是不够的,必须升级到 19.2.3。
总结
React2Shell 是一次严肃的警示:
当我们不断抽象 Web 的复杂性时,也在无意中引入新的攻击面。
Server Components 是 Web 的一次巨大进步, 但它要求我们重新思考 “数据” 与 “代码” 的安全边界。
2025 年的这次事件,将长期影响 JavaScript 安全观念。
- 公众号:安全狗的自我修养
- vx:2207344074
- http://gitee.com/haidragon
- http://github.com/haidragon
- bilibili:haidragonx
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全狗的自我修养 hai dragon《React2Shell 解剖:深入理解 CVE-2025–55182》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论