写点什么

10 级漏洞刚补完,React 又炸了!现代 Web“默认底座”因一行代码缺失引发全球地震,开发者经历最黑暗一周

  • 2025-12-15
    北京
  • 本文字数:4576 字

    阅读完需:约 15 分钟

大小:2.02M时长:11:44
10级漏洞刚补完,React又炸了!现代Web“默认底座”因一行代码缺失引发全球地震,开发者经历最黑暗一周

上周刚追完 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://www.linkedin.com/posts/shubhamshah_vercel-platform-protection-bug-bounty-program-activity-7403346595586777089-qxq4/

https://www.reddit.com/r/pwnhub/comments/1pf1fu9/cloudflare_outage_linked_to_react2shell/?utm_source=chatgpt.com

https://www.bleepingcomputer.com/news/security/cloudflare-blames-todays-outage-on-emergency-react2shell-patch/

https://x.com/duborges/status/1997293892090183772

https://medium.com/@ryanblakes/react-js-shell-shocked-by-a-10-0-critical-vulnerability-a9958786536c

2025-12-15 12:481

评论

发布
暂无评论

SpringBoot 的优雅的接口参数验证

java易二三

Java 编程 程序员 计算机

Forrester首次面向中国的开源报告:阿里云在云原生领域开源布局最全面

阿里巴巴云原生

阿里云 开源 云原生

全套解决方案:中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!

汀丶人工智能

人工智能 自然语言处理 大语言模型

鼎友餐饮信息总监杨山海:餐饮新增长依托数智应用,用数字化打造单店盈利模型

科创人

解决访问 Amazon S3 对象时遇到的“访问被拒绝”错误

亚马逊云科技 (Amazon Web Services)

存储

Presto 设计与实现(八):Presto JDBC

冰心的小屋

数据湖 JDBC presto 设计与实现 presto jdbc

R语言之 dplyr 包

timerring

R 语言

酷睿轻薄本也能运行大语言模型,英特尔推动 PC 生成式 AI 落地

E科讯

资源成本降低70%!华为MetaERP资产核算的Serverless架构实践

轶天下事

软件开发必读!华为云软件开发生产线CodeArts深度体验指南

平平无奇爱好科技

移动端应用程序的一些测试方案和策略

QE_LAB

移动端测试

解锁多核处理器的力量:探索数据并行化在 Java 8 Stream 中的应用

java易二三

Java 程序员 计算机

如何基于 Kubernetes 实现优质开发者平台体验?

SEAL安全

Kubernetes IdP 平台工程 内部开发者平台

一文了解JVM对象内存布具以及内存分配规则

java易二三

Java 程序员 JVM 计算机

窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

首期华为云ROMA Connect《企业集成战略与华为数字化之道》高研班在东莞圆满举办

平平无奇爱好科技

开创以API为核心的数字化变革,华为云实现API全生命周期一体化协作

平平无奇爱好科技

代码随想录 Day51 - 动态规划(十二)

jjn0703

Python案例|Matplotlib库实现的数据分析

TiAmo

Python 数据挖掘 数据分析

[小笔记] Java 线程池

java易二三

Java 程序员 线程 线程池 计算机

质效提升 | 聊聊QA与业务测试

laofo

DevOps 研发效能 持续交付 质量赋能

联邦学习:对“数据隐私保护”和“数据孤岛”困境的破局

vivo互联网技术

人工智能 联邦学习 数据隐私 数据安全 gdpr

OpenHarmony 4.0 Beta2新版本发布,邀您体验

OpenHarmony开发者

OpenHarmony

火山引擎DataLeap基于Apache Atlas自研异步消息处理框架

字节跳动数据平台

数据中台 数据治理 数据安全 数据研发 企业号 8 月 PK 榜

10级漏洞刚补完,React又炸了!现代Web“默认底座”因一行代码缺失引发全球地震,开发者经历最黑暗一周_生成式 AI_Tina_InfoQ精选文章