
上周刚追完 10 级补丁,以为能喘口气了?还不行。
12 月 12 日,React 官方确认,研究人员在验证上周补丁时,竟又在 React Server Components(RSC)里发现了两处新漏洞。
过去一周,React2Shell 漏洞的余威仍在:服务器被劫持挖矿、云厂商紧急封禁、甚至引发 Cloudflare 的连锁故障;为了把风险压下去,Vercel 甚至在一个周末就付出了 75 万美元的漏洞赏金与应急处置成本。一次前端框架的漏洞,直接打穿了整个技术栈。React 官方连续发布紧急通告,反复强调“请立即升级”,短时间内已经是第二次大规模补丁更新。
这次披露的两个漏洞分别是:高危 DoS(拒绝服务)CVE-2025-55184,单个请求即可导致服务器崩溃;以及中危源码泄露 CVE-2025-55183,可能泄露 React Server Components 的源代码。
一个 React 漏洞,撼动全球 Web
过去一周,一个被称为 React2Shell 的漏洞席卷了整个互联网行业。之所以引发如此级别的震荡,根本原因只有一个:React 的地位太重要了,它几乎是现代 Web 的“默认底座”。
从 Meta 自家的 Facebook、Instagram,到 Netflix、Airbnb、Shopify、Walmart、Asana 等大型平台,统统都离不开它;更不用说数以百万计的开发者生态,并且还有很多框架都依赖于存在漏洞的 React 包。
React 团队将其编号为 CVE-2025-55182,其在通用漏洞评分系统中获得了满分 10.0 的严重性评级。作为 Next.js 的创建者和主要维护方,Vercel 也为这一问题单独分配了 CVE 编号 CVE-2025-66478。
其可怕之处在于攻击者几乎无需任何前置条件即可利用该漏洞。云安全厂商 Wiz 观察到,39% 的云环境包含存在 CVE-2025-55182 漏洞的 Next.js 或 React 实例。据估计,泄露事件发生时,超过两百万台服务器存在安全漏洞。更糟糕的是,他们在实验验证中发现,这个漏洞的利用“几乎百分百命中”,可以稳定达到完整的远程代码执行。
受影响的组件范围包括 react-server-dom-webpack 等核心模块 19.0 至 19.2.0 版本,同时波及多个 React 框架和打包器的默认配置,例如 Next.js、React Router、Vite RSC 等。对于许多框架(尤其是带有 App Router 的 Next.js),RSC 实际上默认是开启的。
当一个 10 级漏洞被公开时,其中不只是“漏洞被报告了、被修了”这么简单,而是有真实世界的破坏性影响。
多位开发者在 X 上公开了自己中招的经历,其中就包括开发者 Eduardo。服务器被封后,他立刻排查日志,发现机器早已被“接管”——CPU 飙到 361%,可疑进程疯狂占用资源,还不断向荷兰某个 IP 发起连接:“我的服务器不再运行我的应用程序了,它在为别人挖矿!”
更糟的是,入侵并非 SSH 暴力破解,而是发生在 Next.js 容器内部:攻击者利用漏洞进入后,可以在服务器上执行他们想执行的任何代码,随后投放更“职业化”的恶意程序,甚至把进程伪装成 nginxs、apaches 之类的 Web 服务以降低暴露风险。“它仅通过一个 Next.js Docker 容器就感染了我的整个服务器!”
最后他警告:“如果 Docker 还在用 ROOT 权限运行、又没更新被利用的 React 版本,你很快就会被黑。”(因为有 ROOT 权限,那么就可以安装 cron、systemd 和持久化脚本,从而在重启后仍然存在。)
非营利安全组织 ShadowServer Foundation 表示,自漏洞披露以来,来自被僵尸网络控制的 Next.js 资产的攻击流量突然飙升 10 倍:“和其他机构一样,我们也观察到有人在大规模尝试利用 React 的 CVE-2025-55182,其中包括与僵尸网络相关的活动。”
为什么说几乎“一行代码”即可修复
安全研究者 Lachlan Davidson 最早披露了该问题,并发布了详尽的技术分析。他将漏洞描述为“一个安全检查的严重缺失,与极具创造性的利用机制交织而成”。
研究流程本身也极具挑战性:据披露,他为此投入超过 100 小时,而第一个公开复现攻击代码的独立研究者 Maple 则在补丁公开后的数十小时内成功构造了最小可行攻击链,展示了漏洞可被快速 weaponize 的风险。
简单的说,这个漏洞并不是出在某个“奇怪的边角功能”,而是出在 React Server Components 的核心通信机制上。
为了让服务器组件变得足够快,React 设计了 Flight 协议。你可以把它理解成 React 自带的一套“前端专用数据通道”:服务器不再一次性把完整页面数据丢给浏览器,而是按渲染树结构,分批把数据发过去。这样,界面可以先渲染能渲染的部分,剩下的慢慢补齐。
问题在于,这种能力非常强大。Flight 协议不仅要传字符串、数字、JSON 数据,还要传“还没完成的东西”,比如 Promise 这样的中间状态,并重建组件树。为了做到这一点,React 在服务器端需要对客户端发来的请求内容进行反序列化和解释,把它们还原成可以继续执行的对象。
漏洞就出在这里。攻击者可以伪造一个特殊的 HTTP 请求,把“看起来像正常 Flight 数据”的内容发送到任何 React Server Function 端点。React 在解析这些数据时,会误以为它们是合法的内部对象,并按正常流程继续处理。结果就是,攻击者构造的数据被当成了代码执行路径的一部分,最终在服务器上直接触发了远程代码执行。
整个过程不需要登录、不需要凭证,也不需要绕过传统意义上的安全边界。仅仅因为 React 在内部序列化结构上缺失一个基础的 hasOwnProperty 校验,即被攻破了关键的运行时边界。
Lachlan Davidson 将该漏洞负责任地报告给了 Meta 后,Meta 随即与 React 团队协作,在短短四天内推出了紧急补丁——从实现上看,它几乎就是“补上一行代码”,却阻断了一条足以摧毁服务器的攻击链。
Vercel、Cloudflare 等纷纷“躺枪”
10 级漏洞一曝光,最先“躺枪”的往往不是某个小团队,而是一整条依赖 React 的产业链,尤其是前端托管与 Serverless 平台。以 Vercel 为代表的头部平台几乎必然站到风暴中心,因为它们既是 Next.js 的关键维护者,也是海量应用的默认入口。
应急阶段,各家厂商确实第一时间把 WAF 顶上来了。Vercel、Cloudflare、AWS、Akamai、Fastly 等公司都部署了规则,用来拦截已知的 React2Shell 利用载荷模式。这的确能争取时间,但问题在于,WAF 只能当缓冲,不能当答案。
WAF 的本质是规则匹配模式,攻击者完全可以调整 payload 形态绕过;很多应用根本不依赖这些服务提供商,自托管、私有化部署或裸跑公网的实例更是 WAF 覆盖不到;更关键的是,边缘侧的缓解措施永远只是纵深防御的一层,而不是你的补丁策略。对这种 10/10 级别的 RCE 来说,真正的修复只有一件事:升级 React/Next 并重新部署,把漏洞代码从运行环境里彻底清掉。
也正因为“不要把 WAF 当主修复手段”这句话戳到了痛点,业内出现了不小的争执。Assetnote 联合创始人 Shubham Shah 在领英上发文控诉 Vercel CEO 以一种近乎霸凌的态度,要求他撤下关于“不应依赖 WAF 防护此漏洞”的推文。Shubham Shah 表示:
“Vercel CEO 曾试图否认其 WAF 可被绕过的事实,该漏洞涉及最新的 Next.js/RSC 远程代码执行。他以一种近乎霸凌的态度,要求我撤下关于“不应依赖 WAF 防护此漏洞”的推文。我当时的建议是:用户应当直接修补自身系统,而非依赖 WAF——因为我们当时已能绕过 Cloudflare 的防护,而现在 Vercel 的 WAF 同样可被绕过。这一建议至今依然成立。
WAF 固然有其作用,但核心解决方案始终是修复系统漏洞。目前许多用户难以甄别自身系统的风险点,防御者更需要清晰信息来指导修补工作。像 Vercel 这样的 WAF 厂商,不应通过施压研究人员来掩盖其 WAF 可被绕过的事实。
我刚为 react2shell-scanner 工具发布了更新,新增了--vercel-waf-bypass 参数,该功能基于 Searchlight 网络安全研究团队 Adam Kues 设计的攻击载荷,可有效绕过 Vercel 的 WAF 防护。”
出了问题试图掩盖总是无济于事的,随着更多人发现 Vercel 的漏洞后,Vercel 态度出现了大转变,Vercel CEO 已就他此前质疑 WAF 可被绕过的态度致歉,并向 Searchlight 网络安全研究团队表达了敬意。
Vercel 团队在数分钟内响应了 Shubham Shah 团队的报告,并在半小时内部署修复方案。Shubham Shah 在最新的领英帖子中表示:
“Vercel CEO 已就他此前质疑 WAF 可被绕过时的态度致歉,并向 Searchlight 网络安全研究团队表达了敬意。他还邀请我们在共享 Slack 工作空间中协作。
我们已通过其专项漏洞赏金计划(https://lnkd.in/gMsnZFeu)提交了多个有效的 WAF 绕过方案。其中部分漏洞使我们能完全绕过 Vercel 的 WAF 防护层(这类漏洞非常有趣!),另一些则得益于我们对 Node.js 和 Next.js 的深入理解。
截至目前,团队中的 Adam Kues、Dylan Pindur 和我本人都独立发现了不同的绕过方法。协助 Vercel 对我们至关重要,因为我们的许多客户都深度依赖其基础设施。当前 WAF 绕过的难度正逐渐增加。Vercel 团队能在数分钟内响应我们的报告,并在半小时内部署修复方案。他们对此事的重视程度令人欣慰。最终,这成了一个圆满的结局。”
在新漏洞和 React 10 级漏洞的双重压力下,Vercel 临时启动了堪称史上最激进的安全补洞计划。
12 月 11 日,在 Youtube 上,一档名为《编程播客》的栏目剖析了因为这个“完美黑客”的攻击,Vercel 如何在短短一个周末就花费了 75 万美元来阻止它,以及 Dockerfile 中可能导致用户的环境暴露的那一行代码。
这档播客中提到,事件曝光后,Vercel 迅速启动应急流程,与 React 团队、HackerOne 社区及安全研究人员协作,在短短一个周末内完成排查与修复,并支付了总计 75 万美元的漏洞赏金。这一处置速度和透明度,被业内评价为“极具示范意义的公关与技术响应”。
事件之所以未造成更大规模的破坏,关键在于社区与平台的快速反应。漏洞公开后,Vercel 与 HackerOne 合作,将相关漏洞及边界情况全部开放给白帽社区。在三个昼夜内,共收到 17 到 19 条修复建议与边界情形,涉及不同程度的安全隐患。最终,Vercel 支付了约 75 万美元的赏金,用于奖励这些在关键时刻参与修复的开发者与安全研究人员。包括 React、Next.js 等团队在内的多方工程师也在周末全程投入,推动补丁快速落地。
由于 React 用户群实在太广泛,除了 Vercel 受影响比较严重外,Cloudflare 也一度乱了阵脚。
为了补救 React2Shell 漏洞带来的影响,Cloudflare 仓促推出一项变更,导致约 28% 的 HTTP 流量受到影响,大量依赖 Cloudflare 的网站返回 500 内部服务器错误,一度造成约四分之一的互联网流量无法访问。
Cloudflare 首席技术官 Dane Knecht 随后表示,此次事件并非源于网络攻击,而是公司在仓促应对 React Server Components 中的高危漏洞时引入的内部变更所致。
除了这些平台外,英国国家医疗服务体系 (NHS) 英格兰国家网络安全中心(CSOC)周四也表示,已经存在多个功能性的 CVE-2025-55182 概念验证漏洞利用程序,并警告说“在实际环境中继续成功利用该漏洞的可能性非常高”。
参考链接:
https://www.linkedin.com/feed/update/urn:li:activity:7402830433983508480/
https://x.com/duborges/status/1997293892090183772
https://medium.com/@ryanblakes/react-js-shell-shocked-by-a-10-0-critical-vulnerability-a9958786536c







评论