CVE-2025-55182: React Server Components 远程代码执行漏洞

CVE-2025-55182漏洞受影响版本中React 19引入,Next.js App Router 将来自客户端的 RSC 序列化数据直接交由 ReactFlightReplyServer 反序列化,未对模型结构、引用路径与 Server Reference 元数据进行充分校验。攻击者可构造恶意 RSC请求,引导 parseModelString、getOutlinedModel、loadServerReference、initializeModelChunk 等解析链路进入异常状态,在模块加载与引用绑定阶段控制调用目标,最终在 Next.js 中可触发任意服务端代码执行。

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的通信机制涉及以下关键步骤:

  1. 序列化阶段: 服务器组件在服务端执行,其状态被序列化为特定格式发送给客户端

  2. 传输阶段: 序列化数据通过网络传输到客户端

  3. 反序列化阶段: 客户端接收数据并反序列化为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’, {
method: ‘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. 参考引用

引用资源:

  1. Next.js GitHub Repository – Security Advisory: https://github.com/vercel/next.js/security/advisories

  2. React Server Components Documentation: https://react.dev/reference/rsc/server-components

  3. CVE-2025-55182 Official Details: https://nvd.nist.gov/vuln/detail/CVE-2025-55182

相关项目:

  1. Next.js Official Website: https://nextjs.org/

  2. React Official Documentation: https://react.dev/

  3. Dify GitHub Repository & Release Notes: https://github.com/langgenius/dify/releases/tag/1.10.1-fix.1

安全参考:

  1. OWASP Code Injection: https://owasp.org/www-community/attacks/Code_Injection

  2. CWE-94: Improper Control of Generation of Code (‘Code Injection’) https://cwe.mitre.org/data/definitions/94.html

  3. Node.js Security Best Practices: https://nodejs.org/en/docs/guides/security/

 

原创文章,作者:首席安全官,如若转载,请注明出处:https://www.cncso.com/tw/cve-2025-55182-react-server-components-rce.html

讚! (0)
以前的 2025年11月29日 上午10:44
下一個 2025年12月11日 下午10:34

發佈留言

登入後發表評論