React2Shell 灾难:CVE-2025-55182 漏洞如何让服务器被攻陷而不自知

4 阅读3分钟

仅限会员阅读

The Great React2Shell Disaster: Your Server Got Pwned and You Didn’t Even Know It (CVE-2025–55182)

CyferNest Sec
4 分钟阅读 · 2025年12月11日
1 个收听

点击或回车查看完整尺寸图片

还记得你曾以为那个带精美服务端渲染(SSR)的 React 应用很安全吗?嗯,关于这点嘛……

让我向你介绍 React2Shell(CVE-2025-55182),一个严重到 CVSS 评分高达 10.0 的漏洞;基本上,这就好比在奥斯卡颁奖礼上获得全场起立鼓掌,只不过大家的掌声是因为你的服务器正在着火。

React2Shell 到底是什么?

想象一下,你的 React Server Components 就像一家高档夜总会的门卫。他们应该在门口检查身份证、核实凭证,确保只有正确的人才能进入。听起来很靠谱,对吧?

现在,想象有人发现这位门卫有严重的阅读障碍——他几乎会接受任何看起来像身份证的纸片。这就是 CVE-2025-55182

该漏洞存在于 React 的 Flight 协议中(是的,这是真实的名字,不是我编的),该协议负责处理服务器与客户端之间的通信。它的设计目标是安全地序列化和反序列化数据,但实际上,它反序列化数据的方式就像一个没戴眼镜的人看 Comic Sans 字体写的菜单一样随意。

技术解析

该漏洞的核心在于 Flight 协议对反序列化输入缺乏严格校验。攻击者可以构造一个恶意序列化对象,使其在反序列化过程中触发任意代码执行。具体来说,恶意载荷能够绕过 React Server Components 的权限边界,在服务器上执行类似 child_process.exec 的命令,从而获得系统 shell。

因此该漏洞被命名为 React2Shell。攻击路径通常如下:

  1. 攻击者向服务端发送精心构造的 Flight 协议消息。
  2. React Flight 反序列器未对消息中的类型和结构进行充分校验,直接尝试重建对象。
  3. 恶意对象触发 JavaScript 原型链污染或调用危险函数(如 evalFunction 构造函数)。
  4. 最终实现远程代码执行(RCE),服务器完全被控制。

CVSS 10.0 的评分意味着:无需用户交互、无需身份认证、网络可访问即可利用,且具备完整的影响(机密性、完整性、可用性全部受损)。

受影响的版本包括所有使用 React Server Components 且启用 Flight 协议的 React 19.x 及部分 18.x 版本。修复方案已在官方公告中发布,建议立即升级。

所以,下次你给 React SSR 打上“安全”标签之前,先想想那个会读错身份证的门卫——然后赶紧去打补丁。 CSD0tFqvECLokhw9aBeRqsnyQLq7VItqYbIcAzVoJgOkYqgyatTgMeHV94yO3OfER2stUFwyvuYAFUYuAypbNqiJyZ3s7+nfOGrG4jtZbAgY4Cmru0zfJnPkvBh5DsYn2h8bDYeMC+gJ9AP55fEBHm0T+buYmMVNs9VrWDh1/QXvQTVLcOLI2smVnxIkqqku