CVE-2025-55182 RSC远程代码执行漏洞分析附nuclei检测模板

渗透技巧5个月前发布 admin
438 0 0

漏洞概述

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
19.0.1, 19.1.2, 19.2.1
Next.js
15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

漏洞原理


根本原因

漏洞存在于 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;
}


攻击链

  1. 攻击者向 /formaction 端点发送恶意 multipart 表单数据
  2. $ACTION_REF_0
     触发 bound action 元数据解析
  3. id: 'vm#runInThisContext'
     通过原型链访问 vm 模块的 runInThisContext 方法
  4. bound
     数组中的代码作为参数传递给 runInThisContext
  5. 代码在服务端执行,实现 RCE

利用方法


常用 Gadgets

Gadget
用途
Payload 示例
vm#runInThisContext
执行任意 JS
{"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
几乎所有 Node.js 应用都有文件操作
vm
模板引擎(EJS、Pug)常用
child_process
图像处理(sharp)、PDF 生成(puppeteer)常用

即使没有直接 RCE 的 gadget,仅有 fs 模块也可以:

  • 读取 .env、AWS 凭证、SSH 私钥等敏感文件
  • 写入 ~/.ssh/authorized_keys 获取 SSH 访问
  • 修改 ~/.bashrc 实现持久化
  • 覆盖 node_modules 文件,重启后 RCE


3. 网络限制

  • 目标服务器需要可达
  • 如有 WAF,可能需要绕过 multipart 解析检测

漏洞检测

公众号后台回复 1204  获取nuclei扫描检测模板

CVE-2025-55182 RSC远程代码执行漏洞分析附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随笔

© 版权声明

相关文章