漏洞概览
- 漏洞类型:不安全反序列化 (React Server Components 的 Flight 协议处理),可导致 未认证的远程代码执行(RCE) 。CVSS v3 基准分数为 10.0(Critical) 。
- 受影响组件/版本:
react-server-dom-webpack、react-server-dom-parcel、react-server-dom-turbopack在 React 19 的某些发行版中受影响(列举:19.0.0、19.1.0、19.1.1、19.2.0 等)。下游 Next.js 也受影响并列为重复 CVE(CVE-2025-66478)。 - 漏洞性质:默认配置即可被利用 (例如用
create-next-app生成并生产构建的 Next.js 应用在默认情况下可被攻击)。实测可通过精心构造的 HTTP 请求成功触发。
针对CVE-2025-55182这个最高危(CVSS 10.0)的远程代码执行漏洞,排查和修复工作必须立即进行。该漏洞源于React服务器端组件(RSC)在处理"Flight"协议数据时存在不安全的反序列化问题,攻击者无需认证即可通过发送特制的HTTP请求在服务器上执行任意命令。
以下为详细排查与修复步骤,请按顺序操作。
第一步:检查并更新受影响的核心包
首先,你需要确定并更新项目中所有直接依赖的React核心包。受影响和已修复的版本对应关系如下:
| 受影响的包 | 受影响的版本 | 已修复的安全版本 |
|---|---|---|
react-server-dom-webpack |
19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
react-server-dom-parcel |
19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
react-server-dom-turbopack |
19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
操作方法:
1. 检查你的 package.json 文件和 node_modules 目录,确认是否安装了上表中列出的受影响包及其版本。
1) 在源码/项目根目录(package.json/lockfile)中查找受影响包
bash
csharp
# 查找 package.json / package-lock / pnpm-lock 中的 react-server-dom 或 react 19
grep -R --line-number '"react-server-dom' package.json package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null || true
grep -R --line-number '"react"' package.json yarn.lock package-lock.json pnpm-lock.yaml 2>/dev/null | head -n 50
或使用 npm 工具检查安装依赖(针对本地 node_modules):
vbscript
# 如果在项目目录
npm ls react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack react --depth=0 || true
# yarn
yarn why react-server-dom-webpack || true
2) 在 Docker 镜像 / 容器 中查找
arduino
# 列出镜像中文件并查找 package.json(示例)
docker run --rm -it <image> sh -c "grep -R "react-server-dom" /app /usr/src 2>/dev/null || true"
# 或直接列出已安装的 node_modules 版本
docker run --rm -it <image> sh -c "node -e "console.log(require('/app/node_modules/react/package.json').version)""
3) 在运行时检测(HTTP 接口/服务)
- 搜索应用是否暴露与 RSC / Flight 协议相关的端点(常见于服务端函数或 app router 的 server-function 路径)。在 Next.js 情况,检查 App Router、server-actions、server functions 的路由是否启用。
- 检查 web server 日志中是否存在异常 POST 请求到 RSC 相关路径、或包含可疑二进制/序列化载荷
2. 升级命令(项目根目录)
注意:在升级前请在开发/测试环境完整回归测试(尤其 server-side codepaths)。下面示例仅做升级版本参考,请根据你的 package manager 调整。
npm:
perl
# React 修复版(示例)
npm install react@19.2.1 react-dom@19.2.1 \
react-server-dom-webpack@19.2.1 react-server-dom-parcel@19.2.1 react-server-dom-turbopack@19.2.1
# Next.js(若使用):
npm install next@<patched-version> # 以 Next.js 官方公告的 patched 版本为准
yarn:
sql
yarn add react@19.2.1 react-dom@19.2.1 react-server-dom-webpack@19.2.1
yarn add next@<patched-version>
pnpm:
sql
pnpm add react@19.2.1 react-dom@19.2.1 react-server-dom-webpack@19.2.1
pnpm add next@<patched-version>
提醒:某些包(react-server-dom-parcel/turbopack)可能未直接在 package.json 中列为依赖(由上游框架间接引入)。如果是间接依赖,请查看 lockfile(pnpm-lock / yarn.lock / package-lock.json),或直接升级上游框架(如 Next.js)至被修复版本,以确保间接依赖被更新。
第二步:检查并更新你所用的框架
大多数开发者是通过框架(如Next.js)使用RSC的。这些框架也发布了紧急修复,你需要根据自己使用的框架版本进行更新。
- 如果你使用 Next.js
这是受影响的"重灾区",你需要根据当前版本升级到以下对应的已修复版本:
| 你的当前版本 | 应升级到的安全版本 |
|---|---|
| Next.js 15.0.x | next@15.0.5 |
| Next.js 15.1.x | next@15.1.9 |
| Next.js 15.2.x | next@15.2.6 |
| Next.js 15.3.x | next@15.3.6 |
| Next.js 15.4.x | next@15.4.8 |
| Next.js 15.5.x | next@15.5.7 |
| Next.js 16.0.x | next@16.0.7 |
| Next.js 14.3.0-canary.77 或更高 | 必须降级到最新的稳定14.x版本:next@14 |
- 如果你使用其他框架或构建工具
请参照以下列表更新你的依赖:
- React Router:升级React相关包至最新版。
- Expo / Waku:升级
react-server-dom-webpack至最新版。 - Vite RSC插件:运行
npm install @vitejs/plugin-rsc@latest。 - Parcel RSC插件:运行
npm install react-server-dom-parcel@latest。 - Redwood SDK:确保版本 >=
1.0.0-alpha.0,并升级React包。
第三步:进行全面依赖扫描与资产盘点
升级后,还需要确保所有环节都已修复。
- 使用依赖扫描工具:在项目根目录运行
npm list或使用专业工具(如npm audit、Snyk、Tenable Nessus),确认所有深层依赖中的react-server-dom-*包都已更新到安全版本。检查并删除旧的锁文件(如package-lock.json、yarn.lock)后重新生成,以防锁住漏洞版本。 - 资产盘点:梳理你所有线上项目,优先排查对外公开访问的应用,因为它们是直接攻击目标。注意,有安全公司扫描发现,约39%的云环境中存在受此漏洞影响的React/Next.js实例。
- 重新构建与部署:更新依赖后,必须重新构建你的Docker镜像或服务器端应用包,并部署到生产环境,仅更新本地
node_modules无效。
第四步:验证修复与加强监控
完成修复后,建议采取以下措施巩固安全:
- 验证修复:检查部署后应用的版本号,并可以尝试在测试环境安全地模拟请求,确认异常请求已被正确处理。
- 监控与防护:
-
- 监控日志:密切关注应用日志中是否有大量异常请求或"Server Function"调用错误。
- 启用WAF:如果你使用云服务(如Vercel、Cloudflare),它们已部署了针对此漏洞的临时防护规则。但你不应依赖于此,仍需完成自身应用的升级。
- 考虑运行时沙箱:对于运行服务器端JS代码,可以考虑采用额外的沙箱机制进行隔离。
总结:
应对此漏洞,最核心且唯一的根治方法是立即将React核心包及相关框架升级到官方指定的安全版本,并重新构建部署。整个过程应作为最高优先级的安全事件处理。