1. 漏洞概述
漏洞编号: CVE-2025-55182
漏洞类型: 远程代码执行(RCE)
漏洞等级: 严重(Critical)
Сфера влияния: Next.js、React Server Components 相关框架和库
发现时间: 2025年
修复状态: 已发布补丁
CVE-2025-55182是一个影响Next.js框架及其依赖库的严重远程代码执行漏洞。该漏洞源于Next.js App Router在处理React Server Components(RSC)序列化数据时的不足校验,攻击者可通过构造恶意RSC请求在服务器端实现任意代码执行。
2. 漏洞描述
2.1 技术背景
Next.js是一个基于React的开源Web框架,广泛应用于构建服务器端渲染(SSR)、静态站点生成(SSG)和混合渲染应用。React Server Components(RSC)是React 19中引入的特性,允许开发者在服务器上直接执行组件逻辑,并将序列化的组件状态发送到客户端。
2.2 漏洞触发条件
该漏洞在Next.js中通过以下条件触发:
-
Next.js版本使用了React 19(最早于2024年5月开始集成)
-
应用使用App Router路由方式
-
未对来自客户端的RSC序列化数据进行充分的安全校验
2.3 具体表现
漏洞的核心问题在于:
-
Next.js直接将客户端发送的RSC序列化数据交由ReactFlightReplyServer反序列化
-
对模型结构、引用路径与Server Reference元数据缺乏充分校验
-
RSC解析链路中的多个关键函数(parseModelString、getOutlinedModel、loadServerReference、initializeModelChunk等)未能有效验证数据合法性
-
攻击者可通过精心构造的恶意RSC请求在模块加载与引用绑定阶段控制调用目标
3. 漏洞原理与成因
3.1 RSC反序列化流程
React Server Components的通信机制涉及以下关键步骤:
-
序列化阶段: 服务器组件在服务端执行,其状态被序列化为特定格式发送给客户端
-
传输阶段: 序列化数据通过网络传输到客户端
-
反序列化阶段: 客户端接收数据并反序列化为React组件状态
3.2 漏洞成因分析
该漏洞的成因包括以下几个方面:
缺乏结构校验: RSC序列化数据的模型结构未被充分验证,允许攻击者注入非预期的数据结构
引用路径控制缺陷: loadServerReference函数在加载Server Reference时,未对引用路径进行严格的安全检查,使得攻击者可指向任意可被加载的模块
元数据未进行充分校验: Server Reference元数据包含模块ID、导出名称等信息,这些元数据的校验不足导致攻击者可以指向不安全的函数
反序列化器信任问题: ReactFlightReplyServer对反序列化后的对象进行的操作过于信任,直接调用parseModelString、getOutlinedModel等函数处理用户输入
3.3 攻击链分析
攻击者的利用链路如下:
恶意RSC请求
↓
parseModelString (数据格式解析)
↓
getOutlinedModel (模型获取)
↓
loadServerReference (服务端引用加载)
↓
initializeModelChunk (模型块初始化)
↓
控制函数调用目标
↓
任意代码执行
在上述链路中,攻击者可在多个环节注入恶意数据,导致:
-
加载非预期的模块
-
调用非预期的函数
-
传递恶意参数
-
最终在服务器端执行任意代码
4. 漏洞影响与危害
4.1 直接影响
удаленное выполнение кода: 攻击者无需身份验证即可在服务器端执行任意代码,危害等级最高
服务器完全沦陷: 攻击者获得与Node.js进程相同的权限,可:
-
访问应用存储的敏感数据(数据库凭证、API密钥、用户数据等)
-
修改或删除服务器上的数据
-
安装后门程序实现持久化控制
-
用于发动进一步的内网攻击
данные нарушения: 攻击者可访问并窃取存储在服务器上的所有敏感信息
4.2 受影响的用户群体
该漏洞影响以下人群:
-
使用受影响版本Next.js的所有生产环境应用
-
使用相关React Server Components库的项目(react-server-dom-webpack、react-server-dom-turbopack、react-server-dom-parcel)
-
基于Next.js构建的Web应用用户
-
Dify等低代码平台用户
4.3 实际威胁评估
该漏洞具有以下特点导致实际威胁较高:
-
易于利用: 攻击者仅需发送精心构造的HTTP请求
-
无需认证: 漏洞利用不需要有效的用户身份
-
广泛影响: Next.js和React是Web开发中的主流框架,影响面广
-
自动化程度高: 可编写自动化工具批量扫描和利用
5. 漏洞POC/EXP
5.1 漏洞利用原理示例
以下代码演示了攻击者可能的利用思路(仅用于教育目的):
// 构造恶意RSC序列化请求
// RSC格式示例: D{序列化数据}T{服务端引用}
// 攻击者可构造的恶意payload结构:
const maliciousRSCPayload = {
// 通过控制模型结构和引用路径
model: {
// 指向不安全的模块
$$type: “@@MODULE_REFERENCE”,
id: “../../server/sensitive-module”,
name: “dangerousFunction”
},
// 传递恶意参数
args: [
“require(‘child_process’).execSync(‘malicious-command’)”
]
};
// 发送恶意请求给App Router接口
fetch(‘/api/rsc’, {
метод: 'POST',
body: serializeRSC(maliciousRSCPayload)
});
5.2 关键攻击向量
向量1 – 模块路径遍历:
通过构造包含路径遍历字符(如../../)的模块ID,加载不在预期范围内的模块
向量2 – Server Reference伪造:
伪造Server Reference元数据,使得loadServerReference加载并执行任意函数
向量3 – 参数注入:
在序列化数据中注入恶意参数,经过反序列化后被直接用于函数调用
5.3 检测方法
可通过以下方式检测该漏洞是否被利用:
# 检查Next.js版本
npm list next
# 查看应用日志中是否出现异常的RSC请求
# 关注请求体包含以下特征的POST请求:
# – 指向系统模块的MODULE_REFERENCE
# – 包含路径遍历符号(../../)
# – 异常的Server Reference元数据
# 监控进程执行,检查是否有异常的子进程启动
6. 修复建议或方案
6.1 官方修复
Next.js官方已通过升级React Server Components相关依赖并绑定至修复后的RSC解析入口来消除该漏洞。修复的关键改进包括:
强化数据校验: 在反序列化之前对RSC数据的结构进行严格校验
安全的模块加载: loadServerReference函数实现了白名单机制,仅允许加载预期的模块
元Безопасность данных检查: Server Reference元数据经过签名或其他安全机制的验证
错误处理改进: 异常数据会被安全地拒绝而非尝试处理
6.2 紧急修复步骤
第一步 – 立即升级依赖:
# 升级Next.js到修复版本
npm update next@latest
# 同步更新React Server Components相关库
npm update react-server-dom-webpack
npm update react-server-dom-turbopack
npm update react-server-dom-parcel
# 如果使用Dify,升级到1.10.1-fix.1或更高版本
npm update dify
第二步 – 完整版本对应表:
对于不同的Next.js版本支线,应升级到以下最小修复版本:
| 受影响版本范围 | версия для реставрации | 优先级 |
|---|---|---|
| 15.1.1-canary.0 ~ 15.1.9 | 15.1.9 | ваш (почетный) |
| 14.3.0-canary.77 ~ 15.0.5 | 15.0.5 | ваш (почетный) |
| 15.5.1-canary.0 ~ 15.5.7 | 15.5.7 | ваш (почетный) |
| 15.2.0-canary.0 ~ 15.2.6 | 15.2.6 | ваш (почетный) |
| 15.3.0-canary.0 ~ 15.3.6 | 15.3.6 | ваш (почетный) |
| 15.4.0-canary.0 ~ 15.4.8 | 15.4.8 | ваш (почетный) |
| 16.0.0-canary.0 ~ 16.0.7 | 16.0.7 | ваш (почетный) |
React Server Components库修复版本:
| 库名 | Затронутые версии | версия для реставрации |
|---|---|---|
| react-server-dom-webpack | 19.0 ~ 19.0.1 | 19.0.1 |
| 19.1.0 ~ 19.1.2 | 19.1.2 | |
| 19.2.0 ~ 19.2.1 | 19.2.1 | |
| react-server-dom-turbopack | 19.0 ~ 19.0.1 | 19.0.1 |
| 19.1.0 ~ 19.1.2 | 19.1.2 | |
| 19.2.0 ~ 19.2.1 | 19.2.1 | |
| react-server-dom-parcel | 19.0 ~ 19.0.1 | 19.0.1 |
| 19.1.0 ~ 19.1.2 | 19.1.2 | |
| 19.2.0 ~ 19.2.1 | 19.2.1 | |
| dify | 0 ~ 1.10.1 | 1.10.1-fix.1 |
第三步 – 验证升级:
# 清除依赖缓存
rm -rf node_modules package-lock.json
# 重新安装依赖
npm install
# 验证版本
npm list next react-server-dom-webpack
# 重启应用
npm run build
npm start
6.3 长期防御策略
代码审计:
-
审查App Router中与RSC相关的代码
-
检查是否有自定义的反序列化逻辑
-
确保没有额外的安全隐患
контроль доступа:
-
限制API端点的访问权限(如有可能)
-
实施基于IP的访问控制
-
部署WAF规则检测异常的RSC请求
监控与日志:
-
启用详细的应用日志记录
-
监控异常的HTTP请求模式
-
设置警报规则检测RCE尝试
依赖管理:
-
定期更新依赖包
-
使用npm audit检查安全漏洞
-
考虑使用软件组成分析(SCA)工具
安全最佳实践:
-
遵循最小权限原则,限制Node.js进程权限
-
在容器或沙箱环境中运行应用
-
定期进行安全测试和渗透测试
6.4 临时缓解措施(未升级前)
如果由于某些原因暂无法立即升级,可采取以下临时措施降低风险:
// 在中间件中添加RSC请求验证
export function middleware(request) {
// 检测可疑的RSC请求
if (request.nextUrl.pathname.includes(‘/rsc’) ||
request.headers.get(‘rsc’) === ‘true’) {
// 检查请求体中是否包含可疑模式
const body = request.body;
// 拒绝包含路径遍历或异常引用的请求
if (body.includes(‘../../’) ||
body.includes(‘MODULE_REFERENCE’) ||
body.includes(‘eval’)) {
return new Response(‘Forbidden’, { status: 403 });
}
}
return NextResponse.next();
}
重要提示: 临时措施仅能降低风险,不能完全消除漏洞威胁。应尽快升级到官方修复版本。
7. 参考引用
引用资源:
-
Next.js GitHub Repository – Security Advisory: https://github.com/vercel/next.js/security/advisories
-
React Server Components Documentation: https://react.dev/reference/rsc/server-components
-
CVE-2025-55182 Official Details: https://nvd.nist.gov/vuln/detail/CVE-2025-55182
相关项目:
-
Next.js Official Website: https://nextjs.org/
-
React Official Documentation: https://react.dev/
-
Dify GitHub Repository & Release Notes: https://github.com/langgenius/dify/releases/tag/1.10.1-fix.1
安全参考:
-
OWASP Code Injection: https://owasp.org/www-community/attacks/Code_Injection
-
CWE-94: Improper Control of Generation of Code (‘Code Injection’) https://cwe.mitre.org/data/definitions/94.html
-
Node.js Security Best Practices: https://nodejs.org/en/docs/guides/security/
原创文章,作者:首席安全官,如若转载,请注明出处:https://www.cncso.com/ru/cve-2025-55182-react-server-components-rce.html