理解与缓解 CVE-2025-55182 (React2Shell) | UpGuard
A Complete Guide to Data BreachesFree resourceA Complete Guide to Data BreachesLearn how to avoid a costly data breach with a comprehensive prevention strategy.Download nowDownload now
被指定为 CVE-2025-55182 并广泛称为 “React2Shell” 的此漏洞,代表了现代 Web 应用程序的最坏情况:在默认配置下实现未经身份验证的远程代码执行 (RCE)。
什么是 CVE-2025-55182?
本质上,CVE-2025-55182 是一个不安全的反序列化漏洞,其严重性评分为严重 (CVSS 10.0)。它允许攻击者仅通过发送恶意的 HTTP 请求,即可在服务器上执行任意代码,而无需任何登录凭据或特殊权限。
注意:虽然核心漏洞是 CVE-2025-55182 (React),但 Next.js 特有的跟踪通常被称为 CVE-2025-66478。两者在此上下文中指的是相同的根本原因。
漏洞机制
该漏洞存在于 React 服务器组件 (RSC) 架构中,特别是在用于客户端和服务器之间通信的 “Flight” RPC(远程过程调用)协议内。
当用户与 Next.js 或 React 19 应用程序交互时——例如通过服务器操作提交表单——数据会被序列化(转换为字符串格式)以发送到服务器。然后服务器反序列化此数据以处理请求。
问题所在
React 安全团队和 Vercel 披露,服务器端的反序列化器未能严格验证传入的对象键。
这个特定的缺陷允许攻击者将被禁止的 JavaScript 属性(如 __proto__、constructor 或 prototype)注入到有效负载中。这种服务器端原型污染有效地“毒化”了应用程序状态。当服务器处理这个被污染的对象时,它会无意中触发导致执行攻击者系统命令的“小工具链”。
受影响的生态系统
由于此漏洞存在于处理服务器组件的核心 React 库中,其影响范围非常广泛。它不仅影响特定的框架,还影响任何利用 RSC 的工具链。
主要受影响对象:
- React 核心库:版本 19.0.0 至 19.2.0。
- Next.js:
- v16.x (早于 v16.0.7 的版本)
- v15.x (早于 v15.5.7 的版本)
- 使用 App Router 的旧版 v14.x Canary 版本。
- 支持 RSC 的框架:Waku, RedwoodJS,以及使用 Vite RSC 插件的自定义实现。
为何 React2Shell 格外危险
与之前需要特定、非标准配置才能利用的漏洞不同,CVE-2025-55182 在默认安装上即可利用。
注意:安全研究人员已确认,攻击向量是一个简单的 HTTP POST 请求。如果你的应用程序将服务器操作或 RSC 端点暴露给公共互联网,那么在打补丁之前,它实际上就是易受攻击的。
如何缓解 CVE-2025-55182 的影响
鉴于其“严重”的严重性评级和利用代码的公开可用性,需要立即采取行动。缓解策略分为两类:修复 (打补丁),这是唯一永久的解决方案;以及缓解 (WAF 规则),作为临时防护盾。
1. 立即打补丁
React 团队和 Vercel 已协调同步发布修补版本。你必须将依赖项升级到以下列出或更高版本。
React (库级别)
如果你直接使用 React 或依赖 React 19 的非 Next.js 框架,请确保将 react 和 react-dom 更新至:
- v19.0.1
- v19.1.2
- v19.2.1
Next.js (框架级别) Next.js 用户应升级到其主版本的最新补丁版本。安全版本包括:
- Next.js 16:升级到 v16.0.7 或更高版本。
- Next.js 15:升级到 v15.5.7, v15.4.8, v15.3.6, v15.2.6, v15.1.9, 或 v15.0.5。
依赖警告:如果你使用的是 Waku、RedwoodJS 或 Parcel 等框架,你可能不会立即看到框架的顶级更新。你必须检查你的 package-lock.json 或 yarn.lock 文件,以确保嵌套的 react 版本被解析为上述列出的修补版本之一。
如何检测你是否已受影响
打补丁可以防止未来的攻击,但它不能告诉你是否已经有人利用过此漏洞。要确定你的基础设施在缓解措施之前是否已被攻击或入侵,你必须分析你的网络日志和主机行为。
网络流量分析
检测的第一道防线是查看与 “React2Shell” 漏洞利用相关的特定模式的 HTTP 访问日志。
可疑请求头
筛选你的日志,查找包含 next-action 或 rsc-action-id 请求头的 HTTP POST 请求。虽然这些是 Next.js 和 React 使用的合法请求头,但这些请求量异常高——尤其是来自单个 IP 地址——可能表明存在扫描活动。
有效负载特征 最可靠的指标在请求体中。在你的 WAF 或负载均衡器日志中搜索以下字符串:
"$@":漏洞利用载荷结构中使用的一个序列(通常在 JSON 数组内)。"status":"resolved_model":一个特定的 JSON 模式,用于诱骗服务器处理恶意对象。__proto__,constructor, 或prototype:尝试污染对象原型的 JSON 键。
错误率异常 查找你的 RSC 端点上 500 内部服务器错误的突然激增。由于漏洞利用载荷通常不稳定或基于试错法,攻击者在成功执行代码之前,经常会多次导致服务器进程崩溃。
基于主机的指标
如果攻击者成功绕过你的网络防御,证据将留在服务器本身。此处的检测依赖于发现技术上是可能的,但对于 Web 服务器来说在操作上不正常的行为,首先从应用程序如何与底层操作系统交互开始。
意外的进程生成
这是最高保真度的入侵指标。在标准的 React/Next.js 环境中,node 进程几乎不应该生成 shell 命令。监控你的终端检测与响应 (EDR) 工具,查看是否有 node 进程生成了:
- Shell:
sh,bash,cmd.exe,powershell. - 网络实用工具:
curl,wget(通常用于下载第二阶段恶意软件)。 - 侦察工具:
whoami,id,uname.
文件系统痕迹
扫描器和攻击者通常会在临时目录中留下证据。检查 /tmp (Linux) 或 %TEMP% (Windows) 中是否存在:
- 名为
pwned.txt,test.txt或随机字母数字字符串的文件。 - 为测试写权限而创建的零字节文件。
此外,监控对敏感系统文件(如 /etc/passwd 或环境变量文件 .env)的未授权读取尝试,这些通常是攻击者在获得访问权限后立即瞄准的目标。
自动化扫描与验证
为了在不手动制作漏洞利用代码的情况下确认你的应用程序是否仍然暴露,请利用已更新 CVE-2025-55182 定义的漏洞扫描器。像 UpGuard 这样的工具已经发布了非侵入式检查,可以发送“探测”数据包来检查你是否正在运行一个易受攻击的环境,即使有防火墙保护你。
A Complete Guide to Data BreachesFree resourceA Complete Guide to Data BreachesLearn how to avoid a costly data breach with a comprehensive prevention strategy.Download nowDownload now