CVE-2025-55182,也被称为"React2Shell",是一个影响React Server Components的严重远程代码执行漏洞。该漏洞的CVSS评分为10.0(满分),属于最高危级别。攻击者无需任何身份验证即可通过发送单个恶意HTTP请求在目标服务器上执行任意代码。
关键信息:
CVE编号:CVE-2025-55182
披露时间:2025年12月3日
严重程度:Critical (CVSS 10.0)
漏洞类型:未授权远程代码执行 (Unauthenticated RCE)
影响范围:React Server Components 19.0.0, 19.1.0, 19.1.1, 19.2.0
受影响框架:Next.js 15.x/16.x, React Router, Waku, Parcel RSC, Vite RSC等
React Server Components (RSC) 是React 19引入的一项新特性,允许组件在服务器端渲染并通过React Flight协议与客户端通信。这种架构模式旨在提高性能并减少客户端JavaScript包的大小。
React Flight协议是RSC架构中用于服务器和客户端之间通信的二进制序列化协议。它负责:
序列化服务器端组件树
传输组件数据到客户端
反序列化客户端接收的数据
处理Server Actions的请求和响应
2025年12月3日:漏洞公开披露
2025年12月3日:React团队发布安全公告
2025年12月5日:观察到野外利用活动
2025年12月:CISA将其加入已知被利用漏洞目录(KEV)
CVE-2025-55182的根本原因在于React Flight协议的服务器端反序列化逻辑存在严重缺陷,具体体现在ReactFlightReplyServer.js文件中的reviveModel函数。
核心问题:
缺乏输入验证:服务器端在反序列化Flight协议payload时,未对传入数据进行充分的验证和清理。
信任客户端数据:React Flight协议的设计假设所有Flight payload都来自可信的React客户端,但实际上攻击者可以构造任意payload。
不安全的对象属性扩展:反序列化过程中,React会直接展开对象属性而不检查是否包含危险的属性名(如__proto__、constructor等)。
原型污染漏洞:攻击者可以通过精心构造的payload污染JavaScript对象的原型链,进而控制程序执行流程。
CVE-2025-55182的利用过程涉及多个精心设计的步骤,利用JavaScript的动态特性和React Flight协议的反序列化机制。
利用链分析:
阶段1:构造恶意Chunk对象
攻击者通过$@x语法访问React内部的Chunk对象
构造一个伪造的Chunk对象,包含恶意的.then方法
利用React对Promise和thenable对象的自动解析机制
阶段2:触发Promise解析
JavaScript运行时自动解析嵌套的Promise和thenable对象
当React尝试解析伪造的Chunk时,会调用攻击者控制的.then方法
这导致重新进入解析器,并使用攻击者控制的伪造Chunk对象
阶段3:操纵内部状态
通过.then方法的执行,攻击者获得对_response对象的控制权
在_response对象上植入恶意属性
利用多个gadget链路径实现代码执行
阶段4:执行任意代码
最常用的gadget是_formData.get方法
通过原型污染,将_formData.get替换为Function构造函数
构造包含constructor.constructor的链式调用
最终通过Function构造函数执行任意JavaScript代码
典型的exploit payload包含以下关键元素:
'0': '$1' // 入口点引用
'1': { // 主payload对象
'status': 'resolved_model',
'value': {
'then': '$2' // 指向恶意then方法
}
}
'2': '$@3' // 数组引用
'3': [] // 空数组
'4': { // 响应对象,包含gadget链
'_prefix': '',
'_formData': {
'get': {
'constructor': {
'constructor': '恶意代码'
}
}
},
'_chunks': '$@3'
}
关键技术点:
使用循环引用创建复杂的对象图
利用$前缀语法引用React内部对象
通过constructor.constructor访问Function构造函数
绕过常规的安全检查机制
React Server Components:
react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-parcel: 19.0.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-turbopack: 19.0.0, 19.1.0, 19.1.1, 19.2.0
Next.js框架:
Next.js 15.0.0 - 15.0.4
Next.js 15.1.0 - 15.1.8
Next.js 15.2.0 - 15.2.5
Next.js 15.3.0 - 15.3.5
Next.js 15.4.0 - 15.4.7
Next.js 15.5.0 - 15.5.6
Next.js 16.0.0 - 16.0.6
其他受影响框架:
React Router (使用RSC的版本)
Waku
RedwoodSDK (rwsdk)
Vite RSC Plugin (@vitejs/plugin-rsc)
Parcel RSC Plugin (@parcel/rsc)
重要说明:即使应用没有显式使用Server Functions,只要支持React Server Components,就可能受到影响。
根据多家安全厂商的报告,CVE-2025-55182在披露后迅速被多个威胁组织利用:
2025年12月3日:漏洞公开披露
2025年12月5日:首次观察到野外利用活动
2025年12月中旬:多个威胁组织开始大规模扫描和利用
中国关联威胁组织:
Earth Lamia
Jackpot Panda
其他APT组织
经济动机攻击者:
加密货币挖矿团伙
勒索软件组织
僵尸网络运营者
观察到的恶意活动包括:
部署加密货币挖矿程序(XMRig等)
安装远程访问木马(RAT)和后门
部署网络隧道工具(如frp, ngrok)
窃取云服务凭证(AWS, Azure, GCP)
横向移动和持久化
React团队在2025年12月3日发布了修复补丁,修复版本如下:
React Server Components修复版本:
react-server-dom-webpack: 19.0.1, 19.1.2, 19.2.1
react-server-dom-parcel: 19.0.1, 19.1.2, 19.2.1
react-server-dom-turbopack: 19.0.1, 19.1.2, 19.2.1
关键修复提交:
Commit Hash:bbed0b0ee64b89353a40d6313037bbc80221bc3d
Commit Hash:7dc903cd29dac55efb4424853fd0442fef3a8700
修复文件:ReactFlightReplyServer.js
代码变更: +592行, -223行
官方补丁主要通过以下方式修复漏洞:
增强hasOwnProperty检查:在反序列化过程中严格验证对象属性
防止原型污染:阻止攻击者控制的value对象注入恶意代码
输入验证增强:对Flight协议payload进行更严格的验证
限制危险属性:禁止反序列化包含__proto__、constructor等危险属性的对象
Next.js团队同步发布了修复版本(CVE-2025-66478后合并到CVE-2025-55182):
修复版本列表:
Next.js 15.0.5+
Next.js 15.1.9+
Next.js 15.2.6+
Next.js 15.3.6+
Next.js 15.4.8+
Next.js 15.5.7+
Next.js 16.0.7+
升级命令:
npm update next react react-dom
# 或
yarn upgrade next react react-dom
# 或
pnpm update next react react-dom
优先级1 - 紧急(24小时内):
版本升级
立即升级React到19.0.1、19.1.2或19.2.1
升级Next.js到对应的修复版本
升级所有使用RSC的框架和工具
漏洞扫描
使用官方扫描工具检测是否受影响
检查依赖树中的所有React相关包
验证生产环境的版本号
应急响应
检查服务器日志,查找可疑的POST请求
检查是否有异常进程(挖矿程序、未知服务)
审查最近的文件修改和新增文件
检查网络连接,识别可疑的外连行为
优先级2 - 重要(72小时内):
安全加固
实施Web应用防火墙(WAF)规则
启用入侵检测系统(IDS/IPS)
配置网络分段和访问控制
实施最小权限原则
监控增强
部署安全监控和日志分析
设置异常行为告警
监控Server Action端点的访问模式
建立基线并检测偏离
版本检查命令:
# 检查package.json中的版本
cat package.json | grep -E "(react|next)"
# 检查已安装的版本
npm list react react-dom next
# 检查整个依赖树
npm list react-server-dom-webpack
日志检测特征:
包含next-action头的POST请求
请求体包含序列化的React Flight payload
异常大小的FormData请求
包含$@、constructor等关键字的请求
ModSecurity规则:
SecRule REQUEST_HEADERS:next-action "@rx ." \
"id:1001,\
phase:2,\
block,\
t:none,\
msg:'Potential React2Shell exploit attempt',\
logdata:'Matched Data: %{MATCHED_VAR}',\
severity:'CRITICAL'"
SecRule REQUEST_BODY "@rx (\$@|\$1|constructor.*constructor)" \
"id:1002,\
phase:2,\
block,\
t:none,\
msg:'Suspicious React Flight payload detected',\
severity:'CRITICAL'"
注意:这些规则可能产生误报,需要根据实际环境调整。
依赖管理
建立依赖版本管理流程
定期审计和更新依赖包
使用自动化工具监控安全漏洞
实施依赖锁定策略
安全开发实践
对所有外部输入进行验证
实施深度防御策略
定期进行安全代码审查
开展安全培训和意识提升
架构安全
考虑使用容器隔离
实施网络分段
限制服务器权限
部署蜜罐和欺骗技术
关系:最初作为Next.js独立漏洞披露,后合并到CVE-2025-55182
原因:两个CVE源于同一个React Flight协议的反序列化缺陷
漏洞类型:源代码泄露
严重程度:Medium
描述:允许攻击者泄露服务器端函数的源代码
漏洞类型:拒绝服务 (DoS)
严重程度:Medium
描述:通过恶意构造的payload导致React Server Function崩溃
漏洞函数:reviveModel
问题代码模式:
// 漏洞版本的简化示例
function reviveModel(response, value) {
// 缺乏对value对象的验证
for (let key in value) {
// 直接使用key而不检查是否为危险属性
obj[key] = value[key];
}
}
攻击者利用方式:
传入包含constructor属性的value对象
通过constructor.constructor访问Function构造函数
执行任意JavaScript代码
原型链攻击:
// 正常对象
let obj = {};
// 原型污染攻击
obj.__proto__.polluted = true;
// 影响所有对象
let newObj = {};
console.log(newObj.polluted); // true
在React2Shell中的应用:
攻击者通过Flight payload注入constructor属性
污染对象原型链
劫持内部方法调用
实现代码执行
安全版本的改进:
// 修复后的简化示例
function reviveModel(response, value) {
for (let key in value) {
// 添加hasOwnProperty检查
if (Object.prototype.hasOwnProperty.call(value, key)) {
// 检查危险属性名
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
throw new Error('Dangerous property detected');
}
obj[key] = value[key];
}
}
}
受影响的应用类型:
企业级Web应用
电子商务平台
SaaS服务
政府网站
金融科技应用
潜在受害者数量:
Next.js是最流行的React框架之一
数百万个网站使用Next.js
大量企业级应用受影响
直接影响:
服务器完全被控制
数据泄露和窃取
服务中断和停机
声誉损害
间接影响:
合规性违规(GDPR、PCI-DSS等)
法律责任和罚款
客户信任丧失
业务连续性中断
CVSS v3.1: 10.0 (Critical)
评分依据:
攻击向量(AV): Network - 可通过网络远程利用
攻击复杂度(AC): Low - 不需要特殊条件
权限要求(PR): None - 无需身份验证
用户交互(UI): None - 无需用户交互
影响范围(S): Changed - 影响超出漏洞组件
机密性影响(C): High - 完全泄露
完整性影响(I): High - 完全修改
可用性影响(A): High - 完全拒绝服务
漏洞严重性极高
CVSS 10.0满分评级
无需身份验证即可利用
可实现完全的服务器控制
利用难度低
公开POC广泛可用
攻击工具易于获取
默认配置即存在漏洞
影响范围广泛
所有使用React 19 RSC的应用
Next.js 15.x和16.x版本
数百万潜在受影响网站
野外利用活跃
披露后48小时内即被利用
多个威胁组织参与
已被CISA列入KEV目录
CVE-2025-55182的根本原因可归结为:
设计缺陷:React Flight协议假设所有输入来自可信客户端
实现缺陷:反序列化过程缺乏充分的输入验证
语言特性:JavaScript原型链的动态特性被滥用
安全意识:未充分考虑反序列化攻击的风险
永远不要信任客户端输入
所有来自客户端的数据都应视为不可信
必须进行严格的验证和清理
实施白名单而非黑名单策略
反序列化是高风险操作
避免反序列化不可信数据
使用安全的序列化格式
实施严格的类型检查
深度防御的重要性
单一防护措施不足以保护系统
需要多层安全控制
监控和检测同样重要
及时更新的必要性
建立快速响应机制
自动化补丁管理
定期安全审计
React官方安全公告
React Security Advisory (2025-12-03)
GitHub Commit: bbed0b0ee64b89353a40d6313037bbc80221bc3d
GitHub Commit: 7dc903cd29dac55efb4424853fd0442fef3a8700
Next.js官方公告
Next.js Security Advisory
CVE-2025-66478 (后合并到CVE-2025-55182)
NIST NVD数据库
https://nvd.nist.gov/vuln/detail/CVE-2025-55182
CISA KEV目录
Known Exploited Vulnerabilities Catalog
Wiz Security Research
React2Shell深度技术分析
漏洞发现和披露过程
安全厂商报告
Trend Micro威胁分析
Palo Alto Networks威胁情报
Cloudflare安全研究
公开POC仓库
https://github.com/lachlan2k/React2Shell-CVE-2025-55182-original-poc
https://github.com/kondukto-io/vulnerable-next-js-poc
https://github.com/msanft/CVE-2025-55182
漏洞扫描器
https://github.com/gensecaihq/react2shell-scanner
https://github.com/assetnote/react2shell-scanner
依赖检查工具
npm audit
Snyk
Dependabot
立即检查项:
确认当前React版本号
确认当前Next.js版本号
检查是否使用React Server Components
检查是否有Server Actions
审查最近的服务器日志
检查异常进程和网络连接
升级清单:
备份当前代码和配置
更新package.json中的依赖版本
运行npm/yarn/pnpm update
执行完整的测试套件
在staging环境验证
部署到生产环境
验证补丁已生效
监控清单:
配置WAF规则
启用安全日志记录
设置异常告警
建立事件响应流程
定期审查安全状态
RSC (React Server Components)
React 19引入的服务器端组件架构
Flight Protocol
React用于RSC通信的序列化协议
Server Actions
在服务器端执行的React函数
Prototype Pollution
通过修改JavaScript对象原型链实现的攻击
Deserialization
将序列化数据转换回对象的过程
RCE (Remote Code Execution)
远程代码执行漏洞
Gadget Chain
利用链,通过串联多个代码片段实现攻击
CVSS
通用漏洞评分系统
KEV (Known Exploited Vulnerabilities)
CISA维护的已知被利用漏洞目录
CVE-2025-55182 (React2Shell) 是2025年最严重的Web应用安全漏洞之一。其CVSS 10.0的评分反映了该漏洞的极端危险性:无需身份验证、易于利用、影响广泛,且已被积极利用。
关键要点:
立即行动:所有使用React 19 Server Components或Next.js 15.x/16.x的组织必须立即升级到修复版本。
深度防御:仅依赖补丁是不够的,需要实施多层防护措施,包括WAF、监控、日志分析等。
持续警惕:即使已经打补丁,也应该检查是否已被入侵,审查日志,检查异常活动。
经验教训:这个漏洞再次证明了反序列化攻击的危险性,以及"永远不要信任客户端输入"这一基本安全原则的重要性。
最后建议:
对于使用受影响版本的组织,这不是"是否升级"的问题,而是"多快升级"的问题。鉴于该漏洞已被广泛利用,延迟修复将使组织面临严重的安全风险。
研究方法:本报告基于公开的安全公告、技术分析文章、官方补丁代码、公开POC以及Docker环境下的技术验证。所有信息均来自可靠来源,未进行虚构或猜测。
免责声明:本报告仅用于教育和防御目的。任何利用本报告中的信息进行未经授权的攻击活动都是违法的。
END OF REPORT