知海

React 服务器组件中的拒绝服务与源代码泄露

React博客-新闻

React 服务器组件中的拒绝服务与源代码泄露

发布者: React 团队
发布日期: 2025 年 12 月 11 日
更新日期: 2026 年 1 月 26 日

概述

安全研究人员在尝试利用上周关键漏洞的补丁时,发现并披露了 React 服务器组件中的两个额外漏洞。

这些新漏洞不允许远程代码执行。 针对 React2Shell 的补丁在缓解远程代码执行漏洞方面仍然有效。

新披露的漏洞如下:

由于新披露漏洞的严重性,我们建议立即升级。

注意:先前发布的补丁存在漏洞。

如果您已经针对之前的漏洞进行了更新,您需要再次更新。

如果您已更新到 19.0.3、19.1.4 和 19.2.3,这些版本是不完整的,您需要再次更新。

请参阅上一篇文章中的说明以获取升级步骤。


需要立即采取的行动

这些漏洞存在于与 CVE-2025-55182 相同的包和版本中。

受影响版本包括以下包的 19.0.0、19.0.1、19.0.2、19.0.3、19.1.0、19.1.1、19.1.2、19.1.3、19.2.0、19.2.1、19.2.2 和 19.2.3:

修复已向后移植到 19.0.4、19.1.5 和 19.2.4 版本。如果您正在使用上述任何包,请立即升级到任何已修复的版本。

和之前一样,如果您的应用 React 代码不使用服务器,则您的应用不受这些漏洞的影响。如果您的应用不使用支持 React 服务器组件的框架、打包器或打包器插件,则您的应用不受这些漏洞的影响。

关键 CVE 通常会引发后续漏洞。

当披露一个关键漏洞时,研究人员会仔细检查相邻的代码路径,寻找变体利用技术,以测试初始缓解措施是否可以被绕过。

这种模式在整个行业中都存在,而不仅仅是在 JavaScript 中。例如,在 Log4Shell 之后,随着社区对原始修复的探索,又报告了额外的 CVE(12)。

额外的披露可能会令人沮丧,但它们通常是健康响应周期的标志。

受影响的框架和打包器

一些 React 框架和打包器依赖、具有对易受攻击的 React 包的 peer 依赖,或包含了这些包。以下 React 框架和打包器受到影响:nextreact-routerwaku@parcel/rsc@vite/rsc-pluginrwsdk

请参阅上一篇文章中的说明以获取升级步骤。

托管提供商的缓解措施

和之前一样,我们已与多家托管提供商合作,以应用临时缓解措施。

您不应依赖这些措施来保护您的应用,仍需立即更新。

React Native

对于不使用 monorepo 或 react-dom 的 React Native 用户,您的 react 版本应固定在 package.json 中,无需其他额外步骤。

如果您在 monorepo 中使用 React Native,则如果安装了受影响的包,应更新这些包:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

这是缓解安全通告所必需的,但您不需要更新 reactreact-dom,因此这不会导致 React Native 中的版本不匹配错误。

有关更多信息,请参阅此问题


高危:多个拒绝服务漏洞

CVE: CVE-2026-23864
基准分数: 7.5 (高危)
日期: 2026 年 1 月 26 日

安全研究人员发现 React 服务器组件中仍然存在额外的拒绝服务(DoS)漏洞。

这些漏洞通过向服务器函数端点发送特制的 HTTP 请求触发,可能导致服务器崩溃、内存不足异常或过度的 CPU 使用;具体取决于被利用的易受攻击代码路径、应用程序配置和应用程序代码。

1 月 26 日发布的补丁缓解了这些 DoS 漏洞。

发布了额外的修复程序

针对 CVE-2025-55184 中 DoS 的原始修复不完整。

这导致以前的版本仍然易受攻击。版本 19.0.4、19.1.5、19.2.4 是安全的。


高危:拒绝服务

CVE: CVE-2025-55184CVE-2025-67779
基准分数: 7.5 (高危)

安全研究人员发现,可以构造恶意 HTTP 请求并将其发送到任何服务器函数端点,当 React 反序列化该请求时,可能会导致无限循环,从而挂起服务器进程并消耗 CPU。即使您的应用没有实现任何 React 服务器函数端点,如果您的应用支持 React 服务器组件,则可能仍然易受攻击。

这创建了一个漏洞向量,攻击者可能能够拒绝用户访问产品,并可能对服务器环境的性能产生影响。

今天发布的补丁通过防止无限循环来缓解此问题。


中危:源代码泄露

CVE: CVE-2025-55183
基准分数: 5.3 (中危)

一名安全研究人员发现,发送到易受攻击的服务器函数的恶意 HTTP 请求可能不安全地返回任何服务器函数的源代码。利用此漏洞需要存在一个显式或隐式暴露字符串化参数的服务器函数:

javascript 复制代码
'use server';

export async function serverFunction(name) {
  const conn = db.createConnection('SECRET KEY');
  const user = await conn.createUser(name); // 隐式字符串化,在数据库中泄露

  return {
   id: user.id,
   message: `Hello, ${name}!` // 显式字符串化,在回复中泄露
  }}

攻击者可能能够泄露以下内容:

txt 复制代码
0:{"a":"$@1","f":"","b":"Wy43RxUKdxmr5iuBzJ1pN"}
1:{"id":"tva1sfodwq","message":"Hello, async function(a){console.log(\"serverFunction\");let b=i.createConnection(\"SECRET KEY\");return{id:(await b.createUser(a)).id,message:`Hello, ${a}!`}}!"}

今天发布的补丁防止了对服务器函数源代码进行字符串化。

只有源代码中的机密可能被暴露。

硬编码在源代码中的机密可能会被暴露,但运行时机密(如 process.env.SECRET)不受影响。

暴露代码的范围限于服务器函数内部的代码,根据您的打包器提供的内联数量,可能包括其他函数。

始终针对生产包进行验证。


时间线

  • 12 月 3 日:由 Andrew MacPherson 向 Vercel 和 Meta Bug Bounty 报告泄露事件。
  • 12 月 4 日:由 RyotaKMeta Bug Bounty 报告初始 DoS。
  • 12 月 6 日:React 团队确认了这两个问题,并开始调查。
  • 12 月 7 日:创建了初始修复,React 团队开始验证并规划新的补丁。
  • 12 月 8 日:通知受影响的托管提供商和开源项目。
  • 12 月 10 日:托管提供商缓解措施到位,补丁已验证。
  • 12 月 11 日:Shinsaku Nomura 向 Meta Bug Bounty 报告了额外的 DoS。
  • 12 月 11 日:补丁发布并公开披露为 CVE-2025-55183CVE-2025-55184
  • 12 月 11 日:内部发现缺失的 DoS 案例,已修补并公开披露为 CVE-2025-67779
  • 1 月 26 日:发现额外的 DoS 案例,已修补并公开披露为 CVE-2026-23864

致谢

感谢 Andrew MacPherson (AndrewMohawk) 报告源代码泄露漏洞,感谢 RyotaK(GMO Flatt Security Inc.)和 Shinsaku Nomura(Bitforest Co., Ltd.)报告拒绝服务漏洞。感谢 Mufeed VH(来自 Winfunc Research)、Joachim ViideRyotaK(来自 GMO Flatt Security Inc)和 Xiangwei Zhang(腾讯安全云鼎实验室)报告额外的 DoS 漏洞。

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。