前端技术新闻(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 更新说明

相关推荐
前端小L4 分钟前
贪心算法专题(十五):借位与填充的智慧——「单调递增的数字」
javascript·算法·贪心算法
想学后端的前端工程师6 分钟前
【浏览器工作原理与性能优化指南:深入理解Web性能】
前端·性能优化
博主花神7 分钟前
【React】UI库Antd和Redux状态管理
react.js·ui·arcgis
Aliex_git8 分钟前
内存堆栈分析笔记
开发语言·javascript·笔记
程序员爱钓鱼11 分钟前
Node.js 编程实战:错误处理与安全防护
前端·后端·node.js
前端小L12 分钟前
贪心算法专题(十四):万流归宗——「合并区间」
javascript·算法·贪心算法
Geoffwo12 分钟前
Electron 打包后 exe 对应的 asar 解压 / 打包完整流程
前端·javascript·electron
柒@宝儿姐15 分钟前
vue3中使用element-plus的el-scrollbar实现自动滚动(横向/纵横滚动)
前端·javascript·vue.js
程序员爱钓鱼16 分钟前
Node.js 编程实战:模板引擎与静态资源
前端·后端·node.js
Geoffwo16 分钟前
Electron打包的软件如何使用浏览器插件
前端·javascript·electron