本文翻译自原文地址。
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 框架和打包工具依赖、具有对等依赖关系或包含了易受攻击的 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
所有用户应升级到其发布线中的最新修补版本:
shell
npm install next@15.0.5 // for 15.0.x
npm install next@15.1.9 // for 15.1.x
npm install next@15.2.6 // for 15.2.x
npm install next@15.3.6 // for 15.3.x
npm install next@15.4.8 // for 15.4.x
npm install next@15.5.7 // for 15.5.x
npm install next@16.0.7 // for 16.0.x
如果您使用的是 Next.js 14.3.0-canary.77 或更新的 canary 版本,请降级到最新的稳定 14.x 版本:
shell
npm install next@14
有关更多信息,请参阅 Next.js changelog。
React Router
如果您正在使用 React Router 的不稳定 RSC API,如果存在以下 package.json 依赖项,您应该升级它们:
shell
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@latest
Expo
升级到最新的 react-server-dom-webpack:
shell
npm install react@latest react-dom@latest react-server-dom-webpack@latest
Redwood SDK
确保您使用的是 rwsdk>=1.0.0-alpha.0
对于最新的 beta 版本:
shell
npm install rwsdk@latest
升级到最新的 react-server-dom-webpack:
shell
npm install react@latest react-dom@latest react-server-dom-webpack@latest
有关更多迁移说明,请参阅 Redwood docs。
Waku
升级到最新的 react-server-dom-webpack:
shell
npm install react@latest react-dom@latest react-server-dom-webpack@latest waku@latest
有关更多迁移说明,请参阅 Waku announcement。
@vitejs/plugin-rsc
升级到最新的 RSC 插件:
shell
npm install react@latest react-dom@latest @vitejs/plugin-rsc@latest
react-server-dom-parcel
更新到最新版本:
shell
npm install react@latest react-dom@latest react-server-dom-parcel@latest
react-server-dom-turbopack
更新到最新版本:
shell
npm install react@latest react-dom@latest react-server-dom-turbopack@latest
react-server-dom-webpack
更新到最新版本:
shell
npm install react@latest react-dom@latest react-server-dom-webpack@latest
时间线
- 11月29日:Lachlan Davidson 通过 Meta Bug Bounty 报告了安全漏洞。
- 11月30日:Meta 安全研究人员确认并开始与 React 团队合作修复。
- 12月1日:创建了修复程序,React 团队开始与受影响的托管服务提供商和开源项目合作,验证修复、实施缓解措施并推出修复。
- 12月3日:修复程序发布到 npm,并公开披露为 CVE-2025-55182。
致谢
感谢 Lachlan Davidson 发现、报告并帮助修复此漏洞。