前端技术新闻(WTN-1):React.js & Next.js 爆出 CVSS 10.0 级严重漏洞,历史风险回顾与代码级深度分析

我也将开个新系列,用于整理一些前端/web hybrid相关的具有一定影响的技术新闻

近期,React Server Components 与 Next.js App Router 爆出了 CVSS 10.0 的远程代码执行漏洞(RCE) ,波及 React 19 与 Next.js 15.x/16.x 的大量项目。本篇文章将面向技术人员和架构师,系统回顾 React/Next 的典型历史漏洞,并从 协议层 → 代码层 → 利用链机制 深度分析本次事件,同时给出可落地的工程级安全建议。

这次的影响还算是不小的,不少企业受到了类似攻击。不知道大家是否还记得几个月前,cloudflare因为useEffect导致无限循环出现业务中断呢,这个框架用的时候还是要小心啦~ 越是标榜"安全"、"用户量大" 的技术,出的问题可能越多,有时候纯粹是

"大意了!


一、React.js 历史典型安全事件回顾

1. CVE-2018-6341 ------ SSR 渲染属性名注入导致 XSS

React 16 时代,SSR 渲染存在一个严重漏洞:

攻击者可将恶意字符串作为 属性名 注入,SSR 会错误地输出到 HTML 中,从而触发 XSS。

修复版本:React ≥ 16.4.2


2. CVE-2025-8101 ------ linkify-react 原型污染导致 XSS

第三方生态库 linkify-react 存在原型污染问题:

js 复制代码
import linkifyHtml from 'linkify-html';

const opts = {
  attributes: {
    __proto__: {
      onclick: "alert('XSS via prototype pollution')"
    }
  }
};

console.log(linkifyHtml('victim.com', opts));

最终输出:

html 复制代码
<a href="http://victim.com" onclick="alert('XSS via prototype pollution')">victim.com</a>

允许直接插入事件处理器,引发 XSS。


3. Next.js 中间件 SSRF 事件(CVE-2025-57822)

Next.js 某些版本的中间件中:

js 复制代码
NextResponse.next({ headers: request.headers });

将客户端 header 原样转发触发 SSRF,例如伪造 x-forwarded-host 等头部。

正确方式:

js 复制代码
return NextResponse.next({ req: request });

二、2025 Next.js & React 爆出 CVSS 10.0 RCE 漏洞(重点)

漏洞编号

  • CVE-2025-55182(React Server Components)
  • CVE-2025-66478(Next.js App Router)
  • CVSS 评分:10.0(最高级)

又被成为 React2Shell,因为可以通过提供虚构的框架action,执行shell命令,可参考log4j

受影响范围:

  • Next.js 15.x / 16.x
  • React 19 + RSC(App Router 默认开启)
  • Pages Router 不受影响

三、漏洞利用原理:从协议到代码的完整攻击链剖析

本次漏洞本质是 "不安全反序列化 + 原型污染 → 任意服务器函数调用 → RCE"

1. 攻击入口:伪造的 Flight 协议 Payload

React Server Components 使用 Flight Protocol在客户端和服务端之间传输序列化数据。

攻击者构造恶意 payload,伪造:

  • 服务器函数引用(Server Action ID)
  • 原型链注入字段
  • Promise "then" 回调映射

在未修复版本中,React 会:
➜ 无校验反序列化 ➜ 执行攻击者控制的 promise.then 代码


2. 关键危险点:可控 Promise.then 执行

攻击者可将 payload 解析成:

js 复制代码
Promise.resolve().then(require('child_process').execSync.bind(null, 'cat /etc/passwd'));

服务端解析 Flight 数据 → 自动执行该 promise → RCE。

官方确认这是漏洞的核心成因。


3. Next.js 被攻破的原因

Next.js App Router 默认启用:

  • Server Actions
  • RSC
  • 自动请求路由映射

导致攻击者只需向 任意可访问的 Server Action 路径 发请求,即可触发解析逻辑。


4. 真实攻击后果(已被官方证实)

攻击者可:

  • 读取 .env、DB 密钥
  • 读取/写入任意文件
  • 执行系统命令
  • 注入恶意 SSR HTML
  • 窃取用户信息、Session、API Token

四、修复建议(工程可落地)

1. 立即升级依赖(最关键)

jsonc 复制代码
{
  "dependencies": {
    "react": ">=19.2.1",
    "react-dom": ">=19.2.1",
    "react-server-dom-webpack": ">=19.2.1",
    "next": ">=16.0.7"
  }
}

修复版本添加了:

  • 严格的 hasOwnProperty 检查
  • 禁止 prototype chain 访问
  • 禁止任意函数引用调用

2. 中间件增强(防 SSRF、假冒头部)

避免危险写法:

js 复制代码
NextResponse.next({ headers: request.headers });

改用:

js 复制代码
return NextResponse.next({ req: request });

并加入白名单校验:

js 复制代码
const allowedHosts = ['my.com', 'api.my.com'];
if (!allowedHosts.includes(request.nextUrl.hostname)) {
  return NextResponse.redirect('https://my.com');
}

3. 对 Server Actions 增加允许列表(强烈推荐)

js 复制代码
export async function handleAction(params) {
  const allowed = ['createUser', 'deleteItem'];
  if (!allowed.includes(params.action)) {
    throw new Error('Action not allowed');
  }
}

确保不会意外调用任意 exports。


4. 隔离敏感逻辑(架构级防御)

建议:

  • 业务 API 独立为 纯后端服务
  • RSC 仅用于 UI 数据读取,不执行敏感操作
  • 所有 Server Actions 强制加认证(例如 JWT、HMAC)

5. 持续依赖安全管理

推荐工具:

  • npm audit
  • Snyk
  • Dependabot
  • GitHub Security Alerts

示例:

bash 复制代码
npx snyk test

五、总结:RSC + Next.js 的组合属于"默认危险模式"

React RSC 设计初衷是"零客户端 JS + 服务端逻辑自动化",但这也意味着:

反序列化越来越复杂 → 自动执行链越来越危险 → 漏洞威力呈指数级增长。

这次 CVSS 10.0 漏洞再次证明:

任何自动执行反序列化逻辑的框架,都必须谨慎使用。
默认开启 = 默认高风险。

建议所有团队:

  • 重新审视是否需要使用 RSC / Server Actions
  • 将敏感逻辑移出 Next.js 应用
  • 强制设置 API 白名单与认证
  • 使用工具持续监控依赖风险
  • 第一时间升级到修复版本

最后说一句,全栈开发切记:

务必不要给非开发环境设置万能操作窗口!开发环境也最好少用,尤其是基于前端参数构建操作的那种

使用switch 或者 if 比 直接拼接要安全的多

React Blog 更新说明

相关推荐
不思念一个荒废的名字17 小时前
【黑马JavaWeb+AI知识梳理】Web前端开发 - Vue3 / ElementPlus
前端
月明长歌17 小时前
Selenium中隐式等待(Implicit Wait)和显式等待(Explicit Wait)的区别
前端·javascript·selenium
姜太小白17 小时前
【前端】JavaScript字符串执行方法总结
开发语言·前端·javascript
GIS之路17 小时前
GDAL 实现影像合并
前端·python·信息可视化
心易行者17 小时前
Claude Code + Chrome:浏览器层面的AI编程新范式已至
前端·chrome·ai编程
半兽先生17 小时前
解决使用jsPDF实现表格数据导出pdf功能时中文乱码问题
前端·vue.js·elementui
qq_4061761417 小时前
吃透JS异步编程:从回调地狱到Promise/Async-Await全解析
服务器·开发语言·前端·javascript·php
幻云201017 小时前
Python深度学习:筑基与实践
前端·javascript·vue.js·人工智能·python
@大迁世界17 小时前
停止使用 innerHTML:3 种安全渲染 HTML 的替代方案
开发语言·前端·javascript·安全·html
缘木之鱼17 小时前
CTFshow __Web应用安全与防护 第二章
前端·安全·渗透·ctf·ctfshow