漏洞概述
CVE-2025-55182 是 React Server Components (RSC) 中的一个严重远程代码执行漏洞,影响 react-server-dom-webpack 包的 19.0.0 至 19.2.0 版本。攻击者可通过构造恶意请求,在服务端执行任意代码,完全控制目标服务器。
影响范围
受影响版本
React 相关包:
-
react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0
Next.js 框架:
-
Next.js 15.x (使用 App Router) -
Next.js 16.x (使用 App Router)
不受影响的情况
以下场景不受此漏洞影响:
- 纯客户端渲染
:React 应用不使用服务端功能 - 不使用 RSC 框架
:不使用支持 React Server Components 的框架或打包器 - Next.js Pages Router
:使用 Pages Router 而非 App Router 的 Next.js 应用 - React 18.x 及以下版本
:RSC 是 React 19 的新特性 - 已修复版本
:已升级到安全版本的应用
修复版本
|
|
|
|---|---|
|
|
|
|
|
|
漏洞原理
根本原因
漏洞存在于 react-server-dom-webpack 的 requireModule 函数中,缺少 hasOwnProperty 检查:
// 漏洞代码 (v19.0.0)
functionrequireModule(metadata) {
var moduleExports = __webpack_require__(metadata[0]);
return moduleExports[metadata[2]]; // 直接访问,可被原型链污染!
}
// 修复代码 (v19.2.1)
functionrequireModule(metadata) {
var moduleExports = __webpack_require__(metadata[0]);
if (hasOwnProperty.call(moduleExports, metadata[2])) // 添加检查
return moduleExports[metadata[2]];
returnundefined;
}
攻击链
-
攻击者向 /formaction端点发送恶意 multipart 表单数据 $ACTION_REF_0
触发 bound action 元数据解析 id: 'vm#runInThisContext'
通过原型链访问 vm模块的runInThisContext方法bound
数组中的代码作为参数传递给 runInThisContext-
代码在服务端执行,实现 RCE
利用方法
常用 Gadgets
|
|
|
|
|---|---|---|
vm#runInThisContext |
|
{"id":"vm#runInThisContext","bound":["process.mainModule.require('child_process').execSync('id').toString()"]} |
child_process#execSync |
|
{"id":"child_process#execSync","bound":["whoami"]} |
fs#readFileSync |
|
{"id":"fs#readFileSync","bound":["/etc/passwd"]} |
fs#writeFileSync |
|
{"id":"fs#writeFileSync","bound":["/tmp/pwned","hacked"]} |
利用限制
1. 框架/环境限制
- 必须使用 RSC
目标应用必须启用 React Server Components - 必须使用 App Router
Next.js 应用需使用 App Router( /app目录) - 必须有 Server Actions
应用需定义并使用 Server Actions
2. Gadget 可用性限制
漏洞利用依赖 webpack manifest 中暴露的模块。不同应用可能暴露不同模块:
|
|
|
|
|---|---|---|
fs |
|
|
vm |
|
|
child_process |
|
|
即使没有直接 RCE 的 gadget,仅有 fs 模块也可以:
-
读取 .env、AWS 凭证、SSH 私钥等敏感文件 -
写入 ~/.ssh/authorized_keys获取 SSH 访问 -
修改 ~/.bashrc实现持久化 -
覆盖 node_modules文件,重启后 RCE
3. 网络限制
-
目标服务器需要可达 -
如有 WAF,可能需要绕过 multipart 解析检测
漏洞检测
公众号后台回复 1204 获取nuclei扫描检测模板

修复建议
1. 升级版本(推荐)
# 升级 React
npm install react@19.2.1 react-dom@19.2.1 react-server-dom-webpack@19.2.1
# 升级 Next.js
npm install next@15.5.7
2. 临时缓解措施
如无法立即升级,可考虑:
- 禁用 Server Actions
:移除 "use server"指令 - WAF 规则
:拦截包含 $ACTION_REF的 multipart 请求 - 网络隔离
:限制服务器出站连接,防止反弹 shell
参考链接
-
React 官方安全公告 -
Next.js 安全公告 -
NVD – CVE-2025-55182
本篇文章来源于微信公众号: Zacarx随笔
© 版权声明
文章版权归作者所有,未经允许请勿转载。