React CVE-2025-55182漏洞排查与修复指南

漏洞概览

  • 漏洞类型:不安全反序列化 (React Server Components 的 Flight 协议处理),可导致 未认证的远程代码执行(RCE) 。CVSS v3 基准分数为 10.0(Critical)
  • 受影响组件/版本:react-server-dom-webpackreact-server-dom-parcelreact-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的。这些框架也发布了紧急修复,你需要根据自己使用的框架版本进行更新。

  1. 如果你使用 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
  1. 如果你使用其他框架或构建工具
    请参照以下列表更新你的依赖:
  • 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.jsonyarn.lock)后重新生成,以防锁住漏洞版本。
  • 资产盘点:梳理你所有线上项目,优先排查对外公开访问的应用,因为它们是直接攻击目标。注意,有安全公司扫描发现,约39%的云环境中存在受此漏洞影响的React/Next.js实例。
  • 重新构建与部署:更新依赖后,必须重新构建你的Docker镜像或服务器端应用包,并部署到生产环境,仅更新本地node_modules无效。

第四步:验证修复与加强监控

完成修复后,建议采取以下措施巩固安全:

  • 验证修复:检查部署后应用的版本号,并可以尝试在测试环境安全地模拟请求,确认异常请求已被正确处理。
  • 监控与防护:
    • 监控日志:密切关注应用日志中是否有大量异常请求或"Server Function"调用错误。
    • 启用WAF:如果你使用云服务(如Vercel、Cloudflare),它们已部署了针对此漏洞的临时防护规则。但你不应依赖于此,仍需完成自身应用的升级。
    • 考虑运行时沙箱:对于运行服务器端JS代码,可以考虑采用额外的沙箱机制进行隔离。

总结:

应对此漏洞,最核心且唯一的根治方法是立即将React核心包及相关框架升级到官方指定的安全版本,并重新构建部署。整个过程应作为最高优先级的安全事件处理。

相关推荐
脾气有点小暴1 小时前
CSS position 属性
前端·css
ohyeah1 小时前
用原生 JS 手写一个“就地编辑”组件:EditInPlace 的 OOP 实践
前端·javascript
timeweaver1 小时前
React Server Components 的致命漏洞CVE-2025-55182
前端·安全
重铸码农荣光1 小时前
深入理解 JavaScript 中的 this:一场关于作用域、调用方式与设计哲学的思辨
前端·javascript
新晨4371 小时前
跨域是服务器拒绝请求还是浏览器去拒绝的请求?
前端·浏览器
珑墨2 小时前
【包管理器】pnpm、npm、cnpm、yarn 深度对比
前端·javascript·npm·node.js
草字2 小时前
uniapp 滚动到表单的某个位置,表单验证失败时。
前端·javascript·uni-app
学到头秃的suhian2 小时前
Spring使用三级缓存解决循环依赖问题
前端·spring·缓存
CXH7282 小时前
架构师的登山之路|第十二站:服务网格 Istio——未来的标配,还是复杂过头?
前端·javascript·istio