CVE-2025-55182 React Server Components 远程代码执行漏洞复现验证和修复
前言
近日,Next.js生态曝出最高级别安全漏洞CVE-2025-55182,其CVSS评分达10.0(严重程度最高),攻击者可通过特制请求实现远程代码执行(RCE),对使用相关技术栈的生产环境构成极大威胁。作为当前前端开发领域最流行的服务端渲染框架之一,Next.js的该漏洞覆盖范围广、攻击门槛低,需要高度关注并及时处置,因此这篇文章将会讲解介绍并验证修复该漏洞。
受影响范围
关于CVE-2025-55182漏洞Next.js 是已确认受影响的主要框架,但所有基于 RSC 的实现都可能受影响,同事核心受影响场景需同时满足使用App Router和启用React Server Components(RSC)两大条件,具体覆盖情况如下:
- 受影响版本:Next.js 15.x全系列、Next.js 16.x全系列、14.3.0-canary.77及之后的测试版本;
- 涉及核心包:react-server-dom-turbopack、react-server-dom-webpack,覆盖浏览器、边缘计算、Node.js全环境及开发/生产全构建模式;
- 安全场景:使用Pages Router的项目、运行于Edge Runtime的应用、14.3.0-canary.77之前的测试版本,均不受该漏洞影响。
通过下面几点确认是否在漏洞影响范围:
- 框架版本是否在受影响范围内:检查是否使用 Next.js 15.x 或 16.x,或任何依赖 React 19 + RSC 的框架。
- 是否启用了 React Server Components(RSC):包括 Next.js App Router 默认启用的 RSC 机制;如果项目使用此功能,则风险较高。
- 依赖组件中是否包含 react-server 系列包:如 react-server、react-server-dom-webpack、react-server-dom-turbopack 等,只要存在这些包,就可能受影响。
- 是否部署在可被外部访问的环境中:公开 Web 服务会暴露攻击面,即使是默认模板项目也可能开箱即存在风险。
- 是否使用基于 RSC 的第三方方案:如 RedwoodJS、React Router 预览版、Vite/Parcel RSC 插件等,它们如果引用受影响依赖,同样属于风险范围。
开发者只要逐项核对以上点,即可快速判断自己的系统是否需要修补或升级。
一、漏洞核心信息速览
CVE-2025-55182是存在于Next.js编译后React Server DOM相关包中的原型污染漏洞,其核心风险点聚焦于requireModule函数的逻辑缺陷。该漏洞打破了JavaScript对象的属性访问边界,为攻击者提供了注入恶意代码的可乘之机。
从漏洞基础属性来看,其具备三大显著特征:一是危害等级极高,CVSS 10.0的评分意味着攻击者无需复杂前置条件即可完成攻击;二是影响范围广泛,覆盖Next.js 15.x全系列、16.x部分版本及14.3.0-canary.77之后的测试版本;三是利用成本低,仅需构造特制请求即可触发,无需获取额外权限。
二、漏洞根源:原型污染的“链式攻击”
要理解CVE-2025-55182的危害,首先需明确其技术本质——原型污染漏洞。JavaScript作为基于原型的编程语言,所有对象都通过“原型链”实现属性继承,最终指向Object.prototype。当程序未对对象属性的访问权限进行严格校验时,攻击者便可通过操纵__proto__等特殊属性污染原型,进而影响所有继承自该原型的对象。
该漏洞的触发链路十分清晰:Next.js的requireModule函数负责模块属性的请求与加载,但在核心逻辑中缺少关键的hasOwnProperty校验步骤。这意味着当攻击者请求模块属性时,函数会直接遍历原型链查找属性,而非仅局限于模块自身的直接属性。攻击者可利用这一缺陷,通过构造包含__proto__的恶意请求参数,向Object.prototype注入恶意属性。
例如,攻击者可通过请求注入类似__proto__.maliciousFunc=xxx的恶意代码,由于原型链的继承特性,该恶意属性会被所有JavaScript对象继承。当应用程序后续调用相关对象属性时,便会触发恶意代码执行,最终实现远程服务器的权限控制,形成完整的攻击闭环。这种攻击方式无需破坏现有代码结构,隐蔽性极强,难以被常规日志监控发现。
技术细节
漏洞本质: 逻辑反序列化漏洞
触发条件: 处理攻击者控制的 RSC 负载
攻击路径: 通过特制 HTTP 请求触发
利用方式: 构造恶意请求实现远程代码执行
三、漏洞验证与复现
1. 验证环境
这次使用的设备是天枢平台的两台 openEuler 22.03sp4 服务器和一台交换机模拟企业级虚拟专用网络场景。
本实验基于以下环境配置:
- 操作系统: Openeuler 22.03 sp4
- 验证平台: 天枢一体化虚拟仿真平台

本次复现选用OpenEuler 22.03 SP4作为服务器系统,整体环境依赖 Git、NVM、Node.js 等工具,具体搭建步骤如下:
2. 环境搭建
验证poc
git clone https://github.com/0xHyperia/CVE-2025-55182-poc.git
cd CVE-2025-55182-poc
安装依赖
dnf install git
安装 nvm
[root@localhost ~]# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16631 100 16631 0 0 32586 0 --:--:-- --:--:-- --:--:-- 32545
=> Downloading nvm from git to '/root/.nvm'
=> 正克隆到 '/root/.nvm'...
remote: Enumerating objects: 384, done.
remote: Counting objects: 100% (384/384), done.
remote: Compressing objects: 100% (328/328), done.
remote: Total 384 (delta 42), reused 178 (delta 28), pack-reused 0 (from 0)
接收对象中: 100% (384/384), 392.46 KiB | 565.00 KiB/s, 完成.
处理 delta 中: 100% (42/42), 完成.
* (头指针在 FETCH_HEAD 分离)
master
=> Compressing and cleaning up git repository
=> Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

配置 nvm 环境变量
检查 nvm 版本
[root@localhost ~]# nvm --version
0.40.3

安装 node
nvm install 24

验证 Node 版本
[root@localhost ~]# node -v
v24.11.1
[root@localhost ~]# npm -v
11.6.2

进入验证项目
[root@localhost ~]# cd CVE-2025-55182-poc/
安装依赖
[root@localhost CVE-2025-55182-poc]# npm install
npm warn deprecated react-server-dom-webpack@19.0.0: Critical Security Vulnerability in React Server Components
added 131 packages, and audited 132 packages in 3s
21 packages are looking for funding
run `npm fund` for details
1 critical severity vulnerability
To address all issues, run:
npm audit fix --force
Run `npm audit` for details.
npm notice
npm notice New patch version of npm available! 11.6.2 -> 11.6.4
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.6.4
npm notice To update run: npm install -g npm@11.6.4
npm notice

启动漏洞环境端口 3002
Start vulnerable server (port 3002)

[root@localhost CVE-2025-55182-poc]# node --conditions react-server --conditions webpack src/server.js
Loading: /root/CVE-2025-55182-poc/node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js
decodeAction: function
Server at http://localhost:3002
Manifest: [ 'fs', 'child_process', 'vm', 'util' ]
访问漏洞页面
3. 漏洞验证
利用条件
- 无需身份验证:攻击者不需要任何账号权限
- 无需用户交互:无需受害者点击或操作
- 网络可达性:只要服务器对外可访问即可
- 本地拉取 poc 执行验证

4. 漏洞修复
紧急处理步骤
- 立即升级:优先升级到修复版本
- 全面扫描:检查所有 Next.js 应用的版本
- 安全审计:审查服务器日志,检查是否有异常访问
- 凭证重置:如果怀疑被攻击,重置所有敏感凭证
官方修复版本
Next.js 官方已发布修复版本,建议按版本线升级:
# Next.js 15.x 系列升级
npm install next@15.0.5 # 15.0.x
npm install next@15.1.9 # 15.1.x
npm install next@15.2.6 # 15.2.x
npm install next@15.3.6 # 15.3.x
npm install next@15.4.8 # 15.4.x
npm install next@15.5.7 # 15.5.x
# Next.js 16.x 系列升级
npm install next@16.0.7 # 16.0.x
# Canary版本降级
npm install next@14 # 降级到14.x稳定版
临时缓解措施
如果无法立即升级,可以考虑以下临时措施:
// 临时WAF规则示例
function wafMiddleware(req, res, next) {
const forbiddenPatterns = [
/eval\(/,
/new Function/,
/require\(/,
/process\./,
/global\./
];
if (req.body && typeof req.body === 'string') {
for (const pattern of forbiddenPatterns) {
if (pattern.test(req.body)) {
return res.status(403).send('Forbidden');
}
}
}
next();
}
总结
VE-2025-55182 是一个典型的框架级高危漏洞,暴露了现代 Web 开发中依赖管理的重要性。
该漏洞的严重性在于:
- 影响范围广: 几乎所有使用 Next.js App Router 的现代 Web 应用
- 攻击门槛低: 无需身份验证,无需用户交互
- 危害程度高: 可导致完全的服务器控制权丢失
建议所有 Next.js 开发者立即行动,检查并升级到安全版本,确保应用安全。
参考资料
React 官方安全公告
最后更新时间: 2025 年 12 月 4 日
安全等级: 紧急(Critical)
修复优先级: 最高(P0)
更多推荐
所有评论(0)