React Server Components 中的严重安全漏洞
2025 年 12 月 3 日,由 The React Team 发布
React Server Components 中存在一个未认证的远程代码执行漏洞。
我们建议立即升级。
11 月 29 日,Lachlan Davidson 报告了 React 中的一个安全漏洞,该漏洞利用 React 在解码发送到 React Server Function 端点的载荷时存在的缺陷,从而允许未认证的远程代码执行。
即使你的应用未实现任何 React Server Function 端点,如果你的应用支持 React Server Components,它仍可能存在漏洞。
该漏洞已作为 CVE-2025-55182 公开披露,CVSS 评分为 10.0。
以下版本中存在该漏洞:19.0、19.1.0、19.1.1 和 19.2.0,涉及:
需要立即采取的行动
修复已在 19.0.1、19.1.2 和 19.2.1 版本中引入。如果你正在使用上述任意包,请立即升级到任一已修复版本。
如果你的应用中的 React 代码不使用服务器,那么你的应用不受此漏洞影响。如果你的应用不使用支持 React Server Components 的框架、打包工具或打包工具插件,那么你的应用不受此漏洞影响。
受影响的框架和打包工具
某些 React 框架和打包工具依赖、具有 peer 依赖,或包含了存在漏洞的 React 包。受影响的 React 框架和打包工具如下:next、react-router、waku、@parcel/rsc、@vitejs/plugin-rsc 和 rwsdk。
有关如何升级到这些补丁,请参见下面的 更新说明。
托管服务提供商缓解措施
我们已与多家托管服务提供商合作,应用临时缓解措施。
你不应依赖这些措施来保护你的应用,仍应立即更新。
漏洞概述
React Server Functions 允许客户端调用服务器上的函数。React 提供集成点和工具,供框架和打包工具使用,以帮助 React 代码同时运行在客户端和服务器上。React 会将客户端上的请求转换为 HTTP 请求并转发到服务器。在服务器端,React 会将 HTTP 请求转换为函数调用,并将所需数据返回给客户端。
攻击者无需认证即可构造一个恶意 HTTP 请求,发送到任意 Server Function 端点;当 React 对其进行反序列化时,可在服务器上实现远程代码执行。关于该漏洞的更多细节将在修复全面完成后提供。
更新说明
Next.js
所有用户都应升级到其发行分支中的最新补丁版本:
npm install next@14.2.35 // 适用于 13.3.x、13.4.x、13.5.x、14.x
npm install next@15.0.8 // 适用于 15.0.x
npm install next@15.1.12 // 适用于 15.1.x
npm install next@15.2.9 // 适用于 15.2.x
npm install next@15.3.9 // 适用于 15.3.x
npm install next@15.4.11 // 适用于 15.4.x
npm install next@15.5.10 // 适用于 15.5.x
npm install next@16.0.11 // 适用于 16.0.x
npm install next@16.1.5 // 适用于 16.1.x
npm install next@15.6.0-canary.60 // 适用于 15.x canary 版本
npm install next@16.1.0-canary.19 // 适用于 16.x canary 版本15.0.8、15.1.12、15.2.9、15.3.9、15.4.10、15.5.10、15.6.0-canary.61、16.0.11、16.1.5
如果你使用的是 Next.js 13 的 13.3 或更高版本(13.3.x、13.4.x 或 13.5.x),请升级到 14.2.35 版本。
如果你使用的是 next@14.3.0-canary.77 或更高的 canary 版本,请降级到最新的稳定版 14.x:
npm install next@14有关最新的更新说明,请参阅 Next.js 博客,有关更多信息请参阅 之前的更新日志。
React Router
如果你正在使用 React Router 的不稳定 RSC API,并且以下 package.json 依赖存在,则应升级它们:
npm install react@latest
npm install react-dom@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-webpack@latest
npm install @vitejs/plugin-rsc@latestExpo
要了解更多关于缓解措施的信息,请阅读 expo.dev/changelog 上的文章。
Redwood SDK
确保你使用的是 rwsdk>=1.0.0-alpha.0
对于最新的 beta 版本:
npm install rwsdk@latest升级到最新的 react-server-dom-webpack:
npm install react@latest react-dom@latest react-server-dom-webpack@latest有关更多迁移说明,请参阅 Redwood 文档。
Waku
升级到最新的 react-server-dom-webpack:
npm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest有关更多迁移说明,请参阅 Waku 公告。
@vitejs/plugin-rsc
升级到最新的 RSC 插件:
npm install react@latest react-dom@latest @vitejs/plugin-rsc@latestreact-server-dom-parcel
更新到最新版本:
npm install react@latest react-dom@latest react-server-dom-parcel@latestreact-server-dom-turbopack
更新到最新版本:
npm install react@latest react-dom@latest react-server-dom-turbopack@latestreact-server-dom-webpack
更新到最新版本:
npm install react@latest react-dom@latest react-server-dom-webpack@latestReact Native
对于未使用 monorepo 或 react-dom 的 React Native 用户,你的 react 版本应在 package.json 中固定,无需额外步骤。
如果你在 monorepo 中使用 React Native,并且安装了以下受影响的包,则应仅更新这些包:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
这是为缓解该安全公告所必需的,但你不需要更新 react 和 react-dom,因此这不会导致 React Native 中的版本不匹配错误。
有关更多信息,请参阅 此问题。
时间线
- 11 月 29 日:Lachlan Davidson 通过 Meta Bug Bounty 报告了该安全漏洞。
- 11 月 30 日:Meta 安全研究人员确认了该漏洞,并开始与 React 团队合作修复。
- 12 月 1 日:修复方案已创建,React 团队开始与受影响的托管服务提供商和开源项目合作,以验证修复、实施缓解措施并部署修复
- 12 月 3 日:修复已发布到 npm,并作为 CVE-2025-55182 向公众披露。
归因
感谢 Lachlan Davidson 发现、报告并协助修复此漏洞。