一、前言
近日,Next.js生态曝出最高级别安全漏洞CVE-2025-55182,其CVSS评分达10.0(严重程度最高),攻击者可通过特制请求实现远程代码执行(RCE),对使用相关技术栈的生产环境构成极大威胁。作为当前前端开发领域最流行的服务端渲染框架之一,Next.js的该漏洞覆盖范围广、攻击门槛低,需要高度关注并及时处置,因此这篇文章将会讲解介绍并验证修复该漏洞。
1.1、受影响范围
关于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之前的测试版本,均不受该漏洞影响。
1.2、通过下面几点确认是否在漏洞影响范围:
- 框架版本是否在受影响范围内:检查是否使用 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 请求触发
利用方式: 构造恶意请求实现远程代码执行
四、漏洞验证与复现
4.1、验证环境
这次使用的设备是天枢平台的两台 openEuler 22.03sp4 服务器和一台交换机模拟企业级虚拟专用网络场景。
本漏洞验证与复现基于以下环境配置:
操作系统: Openeuler 22.03 sp4
验证平台: 天枢一体化虚拟仿真平台

本次复现选用OpenEuler 22.03 SP4作为服务器系统,整体环境依赖 Git、NVM、Node.js 等工具,具体搭建步骤如下:
4.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
| [root@localhost ~]# 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' ] |
- 访问漏洞页面

4.3、漏洞验证
利用条件:
- 无需身份验证:攻击者不需要任何账号权限
- 无需用户交互:无需受害者点击或操作
- 网络可达性:只要服务器对外可访问即可
- 本地拉取 poc 执行验证

4.4、 漏洞修复
紧急处理步骤:
- 立即升级:优先升级到修复版本
- 全面扫描:检查所有 Next.js 应用的版本
- 安全审计:审查服务器日志,检查是否有异常访问
- 凭证重置:如果怀疑被攻击,重置所有敏感凭证
4.5、官方修复版本
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稳定版
4.6、临时缓解措施
如果无法立即升级,可以考虑以下临时措施:
// 临时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 开发者立即行动,检查并升级到安全版本,确保应用安全。
参考资料
2348

被折叠的 条评论
为什么被折叠?



