React Server Components 中的拒绝服务与源代码泄露
2025 年 12 月 11 日,作者:The React Team
更新于 2026 年 1 月 26 日。
安全研究人员在尝试利用上周关键漏洞的补丁时,发现并披露了 React Server Components 中另外两个漏洞。
这些新漏洞不允许远程代码执行。 React2Shell 的补丁在缓解远程代码执行利用方面仍然有效。
新漏洞披露如下:
- 拒绝服务 - 高危: CVE-2025-55184, CVE-2025-67779, 和 CVE-2026-23864(CVSS 7.5)
- 源代码泄露 - 中危: CVE-2025-55183(CVSS 5.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 Server Components 的框架、打包器或打包器插件,那么你的应用不受这些漏洞影响。
受影响的框架和打包器
一些 React 框架和打包器依赖、具有 peer 依赖,或包含了存在漏洞的 React 包。以下 React 框架和打包器受到影响:next、react-router、waku、@parcel/rsc、@vite/rsc-plugin 和 rwsdk。
升级步骤请参见 上一条帖子中的说明。
托管服务提供商的缓解措施
和之前一样,我们已与多家托管服务提供商合作,应用临时缓解措施。
你不应依赖这些措施来保护你的应用,仍需立即更新。
React 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 中引起版本不匹配错误。
更多信息请参见 这个 issue。
高危:多个拒绝服务
CVEs: CVE-2026-23864 基础分数: 7.5(高) 日期: 2026 年 1 月 26 日
安全研究人员发现 React Server Components 中仍然存在额外的 DoS 漏洞。
这些漏洞可通过向 Server Function 端点发送特制的 HTTP 请求来触发,并可能导致服务器崩溃、内存不足异常或 CPU 过度使用;具体取决于所利用的存在漏洞的代码路径、应用配置和应用代码。
1 月 26 日发布的补丁缓解了这些 DoS 漏洞。
高危:拒绝服务
CVEs: CVE-2025-55184 和 CVE-2025-67779 基础分数: 7.5(高)
安全研究人员发现,可以构造并发送恶意 HTTP 请求到任何 Server Functions 端点,当 React 对其反序列化时,可能导致一个无限循环,从而挂起服务器进程并消耗 CPU。即使你的应用没有实现任何 React Server Function 端点,如果你的应用支持 React Server Components,也仍然可能存在漏洞。
这会形成一种漏洞利用向量,攻击者可能借此阻止用户访问产品,并可能对服务器环境造成性能影响。
今天发布的补丁通过防止无限循环来缓解此问题。
中危:源代码泄露
CVE: CVE-2025-55183 基础分数: 5.3(中)
一名安全研究人员发现,向存在漏洞的 Server Function 发送恶意 HTTP 请求,可能会不安全地返回任何 Server Function 的源代码。利用这一问题需要存在一个 Server Function,它显式或隐式地暴露了一个字符串化参数:
'use server';
export async function serverFunction(name) {
const conn = db.createConnection('SECRET KEY');
const user = await conn.createUser(name); // 隐式字符串化,在 db 中泄露
return {
id: user.id,
message: `Hello, ${name}!` // 显式字符串化,在回复中泄露
}}攻击者可能能够泄露以下内容:
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}!`}}!"}今天发布的补丁阻止了对 Server Function 源代码的字符串化。
时间线
- 12 月 3 日:泄露由 Andrew MacPherson 向 Vercel 和 Meta Bug Bounty 报告。
- 12 月 4 日:初始 DoS 由 RyotaK 向 Meta Bug Bounty 报告。
- 12 月 6 日:React 团队确认这两个问题,并开始调查。
- 12 月 7 日:创建初始修复方案,React 团队开始验证并规划新的补丁。
- 12 月 8 日:通知受影响的托管服务提供商和开源项目。
- 12 月 10 日:托管服务提供商已实施缓解措施,补丁已验证。
- 12 月 11 日:Shinsaku Nomura 向 Meta Bug Bounty 报告了额外的 DoS。
- 12 月 11 日:补丁发布,并作为 CVE-2025-55183 和 CVE-2025-55184 对外披露。
- 12 月 11 日:内部发现缺失的 DoS 情况,已修补并作为 CVE-2025-67779 对外披露。
- 1 月 26 日:发现、修补并对外披露了额外的 DoS 情况,编号为 CVE-2026-23864。
归因
感谢 Andrew MacPherson (AndrewMohawk) 报告了源代码暴露问题,感谢 RyotaK(来自 GMO Flatt Security Inc)和 Bitforest Co., Ltd. 的 Shinsaku Nomura 报告了拒绝服务漏洞。感谢 Mufeed VH(来自 Winfunc Research)、Joachim Viide、RyotaK(来自 GMO Flatt Security Inc)以及腾讯安全 云鼎实验室的 Xiangwei Zhang 报告了其他 DoS 漏洞。