一份概念验证工具,用于演示严重的 React2Shell 漏洞(CVE-2025-55182 / CVE-2025-66478),仅限授权、本地测试环境。
CVE-2025-55182 (React2Shell) 是 React 服务器组件 (RSC) "Flight" 协议中的一个严重、无需预认证的远程代码执行 (RCE) 漏洞。另一个标识符 CVE-2025-66478 曾被分配给 Next.js,但后来被认定为与 CVE-2025-55182 重复而被拒绝,因为两者具有相同的根本原因。
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [目标URL] [命令]
# 针对特定 URL
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
该漏洞源于特定的 React 包,影响任何捆绑这些包的框架。
不受影响:Next.js 13.x、Next.js 14.x 稳定版本、Pages Router 应用程序以及 Edge Runtime 不受影响。
RSC Flight 协议序列化数据用于客户端-服务器通信。漏洞存在于服务器端的反序列化逻辑中,该逻辑未经充分验证就安全地扩展了传入负载中的对象属性。这使得攻击者能够向请求中注入恶意键(如 __proto__ 或 constructor),导致原型污染。
一旦原型链被污染,服务器就会遵循受攻击者影响的执行路径。这可以进一步链接利用,以服务器权限执行任意 JavaScript 代码,从而实现完全的远程代码执行 (RCE)。
安全研究人员已观察到成功的漏洞利用导致:
.aws/credentials)。修补是强制性的,也是完全消除该漏洞的唯一方法。没有任何配置设置可以禁用易受攻击的代码路径。
# 对于 Next.js 用户,请升级到您发布线中的最新修补版本。
# 示例:如果您使用的是 Next.js 15.5.x:
npm install [email protected]
# 同时确保更新 React 依赖项:
npm install react@latest react-dom@latest
验证您的 package-lock.json 或 yarn.lock 文件是否反映了已修补的 react-server-dom-* 包版本(19.0.1、19.1.2 或 19.2.1)。
在修补期间,部署 Web 应用防火墙 (WAF) 规则以阻止漏洞利用尝试:
AWSManagedRulesKnownBadInputsRuleSet (v1.24+) 包含了针对此 CVE 的规则。cve-canary 规则。注意:WAF 规则是临时的、不完整的缓解措施。它们不能替代修补的需要。
检查日志中是否有以下利用尝试的迹象:
next-action 或 rsc-action-id 头的 POST 请求。包含类似于 $@ 或 "status":"resolved_model" 模式的请求体。whoami, id, uname)、读取 /etc/passwd 或写入 /tmp/ 目录下文件(例如 pwned.txt)。本工具演示了一个 CVSS 评分为 10.0(最高严重性) 且正在被国家级行为者积极利用的漏洞。
记住:本工具说明了为什么修补刻不容缓。运用这些知识来改善安全性、防御系统,而不是破坏它们。确保您的所有依赖项都已更新到上面列出的修补版本。
TAHA MOUNIR
| 组件 | 受影响版本 | 修补版本 | 说明 |
|---|
| React 包 ( react-server-dom-webpack, -parcel, -turbopack) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 | 上游缺陷的源头。 |
| Next.js (App Router) | 15.x, 16.x, 14.3.0-canary.77 及更高版本 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | 主要受影响的框架。 |
| 其他框架 | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Vite RSC Plugin | 更新到使用已修补 React 包的版本(>19.0.1, 19.1.2, 19.2.1)。 | 如果使用了受影响的 React 包,则存在漏洞。 |