CVE-2025-55182:React 史上最严重漏洞,CVSS 满分 10.0

为什么 React 的漏洞能攻破服务器?

看到这个漏洞的时候,我也懵了一下:

先简单介绍下:CVECommon Vulnerabilities and Exposures(通用漏洞与暴露)的缩写,是由美国国家网络安全部门(CISA)下属的 MITRE 公司维护的全球公开漏洞数据库。

CVE-2025-55182,CVSS 评分 10.0(最高危险级别),攻击者无需任何授权,只要知道你的网站地址,就能在你的服务器上执行任意代码。

等等,React 不是前端框架吗?前端代码跑在浏览器里,怎么会影响到服务器?

这个问题问到点子上了。要理解这个漏洞,得先搞清楚一件事:现在的 React,已经不只是"前端框架"了


React 的边界变了

传统的前端框架(React、Vue、Angular)确实只跑在浏览器里:

flowchart LR A[浏览器]:::client --> B[API 服务器]:::server B --> C[数据库]:::db classDef client fill:#cce5ff,stroke:#0d6efd,color:#004085 classDef server fill:#d4edda,stroke:#28a745,color:#155724 classDef db fill:#fff3cd,stroke:#ffc107,color:#856404

前端只管渲染 UI,数据从后端 API 拿。前端代码有漏洞?最多影响用户浏览器,服务器安全得很。

但 React 19 引入了 React Server Components(RSC),架构变成了这样:

flowchart LR A[浏览器]:::client --> B[Next.js 服务器]:::server B --> C[数据库]:::db B --> D[文件系统]:::db B --> E[内部 API]:::db subgraph 服务端 B C D E end classDef client fill:#cce5ff,stroke:#0d6efd,color:#004085 classDef server fill:#f8d7da,stroke:#dc3545,color:#721c24 classDef db fill:#fff3cd,stroke:#ffc107,color:#856404

注意红色部分------React 组件现在跑在服务器上了


什么是 React Server Components?

RSC 的核心思想是:把组件分成两类。

组件类型 运行位置 能做什么 不能做什么
Server Component 服务器 访问数据库、文件系统、环境变量 useState、onClick 等交互
Client Component 浏览器 用户交互、状态管理 直接访问服务器资源

举个例子:

jsx 复制代码
// 这是一个 Server Component(默认)
// 它在服务器上执行,可以直接查数据库
async function UserProfile({ userId }) {
  // 直接在组件里查数据库,不用写 API
  const user = await db.query('SELECT * FROM users WHERE id = ?', [userId]);

  return (
    <div>
      <h1>{user.name}</h1>
      <p>{user.email}</p>
    </div>
  );
}

这段代码在服务器上执行db.query 直接访问数据库。渲染结果通过一种叫 RSC Flight Protocol 的格式发送给浏览器。

好处很明显:

  • 组件代码不发送到客户端,JS 包更小
  • 数据获取更快,没有网络往返
  • 敏感逻辑(数据库查询、密钥)留在服务端

但问题也来了:服务器在执行用户发来的数据


漏洞在哪里?

CVE-2025-55182 的问题出在 RSC Flight Protocol 的反序列化上。

当浏览器和服务器通信时,数据需要序列化(对象 → 字符串)和反序列化(字符串 → 对象)。RSC 用的是一种基于 JSON 的协议。

漏洞的本质是:攻击者可以构造恶意的 HTTP 请求,让服务器在反序列化时执行任意 JavaScript 代码

sequenceDiagram participant 攻击者 participant Next.js服务器 participant 数据库 攻击者->>Next.js服务器: 恶意 HTTP 请求(构造的 payload) Note over Next.js服务器: 反序列化时执行恶意代码 Next.js服务器->>Next.js服务器: 执行任意 JS Next.js服务器->>数据库: 读取敏感数据 Next.js服务器-->>攻击者: 返回数据/建立后门

这类漏洞叫不安全的反序列化(Insecure Deserialization),在 OWASP Top 10 里排名靠前。Java 的 Log4Shell、PHP 的对象注入,都是类似的问题。


为什么这么严重?

这个漏洞被评为 CVSS 10.0(满分),因为:

  1. 不需要认证:攻击者不用登录,直接发请求就行
  2. 不需要用户交互:不用骗用户点什么链接
  3. 攻击复杂度低:PoC 已经公开,脚本小子都能用
  4. 影响范围大:Next.js 是最流行的 React 框架,39% 的云环境有受影响实例

据 Wiz Research 报告,漏洞公开后已经在野外被利用,攻击者主要在做两件事:

  • 窃取云凭证:AWS/GCP 的 access key
  • 挖矿:部署加密货币矿工

谁会受影响?

受影响的版本

  • React 19.0、19.1.0、19.1.1、19.2.0
  • Next.js ≥14.3.0-canary.77、≥15、≥16

不受影响的情况

  • 纯客户端 React 应用(没用 SSR/RSC)
  • Next.js 13.x 稳定版
  • Next.js Pages Router 应用
  • Vercel 托管的应用(平台层面已修复)

简单判断:如果你用的是 create-react-app 或者纯 Vite + React,没用 Next.js 的 App Router,那就不用担心。


怎么修复?

升级到修复版本(这是唯一的办法,没有 workaround):

框架 修复版本
React 19.0.1、19.1.2、19.2.1
Next.js 15.0.5、15.1.9、15.2.6、15.3.6、15.4.8、15.5.7、16.0.7
bash 复制代码
# 升级 React
npm install react@latest react-dom@latest

# 升级 Next.js
npm install next@latest

如果暂时不能升级,Cloudflare、Vercel、AWS 等平台的 WAF 已经部署了拦截规则,可以提供临时保护。但还是尽快升级吧。


更大的问题:全栈框架的安全边界

这个漏洞暴露的不只是一个 bug,而是一个趋势性的问题:

前端框架正在变成全栈框架

Next.js、Nuxt、Remix、SvelteKit......这些框架都在模糊前后端的边界。开发者写的"前端代码",实际上有一部分跑在服务器上。

这带来了新的安全考量:

  1. 信任边界变了:以前前端代码默认不可信,现在 Server Component 里的代码有服务器权限
  2. 攻击面扩大了:每个 Server Action、每个 API Route 都是潜在的攻击入口
  3. 开发者认知滞后:很多人还在用"前端思维"写全栈代码

写 Server Component 的时候,得用后端的安全意识:

  • 验证所有输入
  • 不信任客户端传来的任何数据
  • 敏感操作加权限检查

总结

回到开头的问题:为什么 React 的漏洞能攻破服务器?

因为 React Server Components 让 React 代码跑在了服务器上。当框架在服务端反序列化用户数据时,如果处理不当,就可能执行恶意代码。

这不是 React 独有的问题,任何在服务端处理用户输入的框架都有类似风险。只是 React/Next.js 太流行了,影响范围特别大。

如果你在用 Next.js App Router + React 19,赶紧检查版本,该升级升级。


想深入了解 RSC 的原理和这个漏洞的技术细节,推荐看这个视频,讲得挺清楚的:

为什么React的漏洞能攻破服务器?Next.js与RSC入门基础


参考资料


如果你觉得这篇文章有帮助,欢迎关注我的 GitHub,下面是我的一些开源项目:

Claude Code Skills (按需加载,意图自动识别,不浪费 token,介绍文章):

全栈项目(适合学习现代技术栈):

  • prompt-vault - Prompt 管理器,用的都是最新的技术栈,适合用来学习了解最新的前端全栈开发范式:Next.js 15 + React 19 + tRPC 11 + Supabase 全栈示例,clone 下来配个免费 Supabase 就能跑
  • chat_edit - 双模式 AI 应用(聊天+富文本编辑),Vue 3.5 + TypeScript + Vite 5 + Quill 2.0 + IndexedDB
相关推荐
CnLiang2 小时前
React Compiler Plugin
前端·react.js
一只爱吃糖的小羊2 小时前
React 19 生命周期:从入门到实战的完整指南
前端·react.js
隐语SecretFlow2 小时前
如何在 Kuscia 上运行 SCQL 联合分析任务
分布式·安全·架构·开源
网安小白的进阶之路3 小时前
B模块 安全通信网络 第二门课 核心网路由技术-1-OSPF邻居表建立
网络·安全
一只爱吃糖的小羊3 小时前
React 19:革命性升级与全面使用指南
react.js
一只爱吃糖的小羊3 小时前
React 19 vs Vue 3:深度对比与选型指南
前端·vue.js·react.js
光影少年4 小时前
react怎么实现响应式?
前端·react.js·前端框架
猴哥聊项目管理4 小时前
2025年项目管理软件10款云原生部署方案的稳定性对比
安全·云原生·金融·软件工程·项目管理工具·项目管理软件·企业管理
汽车仪器仪表相关领域4 小时前
SCG-1 增压 + 空燃比二合一仪表:涡轮改装的 “空间杀手” 与 “安全保镖”
大数据·服务器·人工智能·功能测试·安全·汽车·可用性测试