Vercel沙箱漏洞挑战赛:百万悬赏揭开Linux内核零日漏洞

Vercel百万沙箱挑战赛两周收1,285份报告,发现影响全行业的Linux内核零日漏洞。
Vercel发起百万美元级沙箱逃逸挑战赛,两周内收到1,285份报告并支付24.2万美元赏金,最终发现一个影响几乎所有主流云厂商的Linux内核零日漏洞。研究者Paulos Yibelo在无特殊权限的microVM内构造数据包,实现了宿主机内存泄露、宿主机崩溃和宿主机代码执行三种攻击,其中内存泄露已在生产环境验证。另一份重点报告揭露快照恢复机制信任guest返回的存储信息,导致跨租户文件系统加载。Trail of Bits四工程师周白盒审查确认虚拟化边界可靠,并提出消除guest信任、统一策略决策、假设零日终将到来三项结构性建议。文章最终提炼出“永远不要信任guest返回的任何值”这一多租户架构核心原则。
Vercel沙箱漏洞挑战赛:百万悬赏揭开Linux内核零日漏洞
Vercel发起了一场百万美元级别的沙箱逃逸挑战赛,邀请全球安全研究者尝试突破Vercel Sandbox的隔离边界。两周内收到1,285份报告,支付了24.2万美元赏金,并发现了一个影响几乎所有主流云厂商的Linux内核零日漏洞。这场挑战赛不仅暴露了共享基础设施的系统性风险,也为整个云安全行业提供了一次难得的安全压力测试范本。

Linux内核零日:共享基础设施的系统性风险
从微VM内发送恶意数据包能做什么
挑战赛第三天,HackerOne研究者Paulos Yibelo(pwn.ai)提交了本次项目最重要的报告。他在一个标准沙箱环境中,没有任何特殊权限,发现了Linux内核网络协议栈的一个缺陷。通过从microVM内部发送精心构造的数据包,他实现了三种攻击:通过网络泄露宿主机内存、使宿主机崩溃、以及在宿主机上执行代码。
其中内存泄露攻击在Vercel生产沙箱上得到了验证——宿主机的内存会出现在guest通过互联网发送的数据包中,只要guest持续发送数据,泄露就可以持续进行。崩溃和代码执行攻击则在研究者自有的、与Vercel Sandbox配置匹配的KVM和Firecracker机器上复现。通过发送两个特定数据包,研究者就能让宿主机宕机,关闭其上运行的所有沙箱;利用同一缺陷,还能以完整管理员权限在宿主机上运行命令,彻底突破沙箱隔离边界。
microVM 与 Firecracker:microVM 是一种轻量级虚拟机,相比传统虚拟机去掉了大量不必要的设备模拟,只保留最少的 I/O 通道,从而把启动时间压缩到毫秒级、内存开销降到几 MB。AWS 开源的 Firecracker 是这一方向最主流的实现,它用 KVM 提供 CPU 和内存的硬件虚拟化,再用极简的用户态设备模型(virtio-net、virtio-block 等)替代完整 QEMU 的设备树。每个 microVM 拥有独立的内核与地址空间,这正是云厂商隔离客户负载的基础。也正因如此,攻击面主要集中在 KVM、virtio 设备后端以及 guest 与宿主机之间的网络路径上——Paulos Yibelo 的攻击正是从 guest 的网络协议栈出发,沿着虚拟网卡的数据通路触达宿主机的。
为什么这个漏洞影响整个云计算行业
几乎所有主流云厂商都在Linux内核的同一层上隔离客户工作负载,这意味着任何内核缺陷都是共享基础设施风险。Vercel在收到通知后立即与研究者合作理解并缓解漏洞,同时联合AWS及其他行业伙伴优先推进修复。研究者也联系了内核维护者并协助创建候选补丁,目前修复方案正在私下审查中,CVE编号待定。Vercel选择公开披露漏洞的存在,是因为该漏洞已在其他地方被公开披露。这一事件揭示了云安全的一个核心悖论:共享内核层带来的效率优势,同时也是单点故障的根源。
为什么内核漏洞等于跨租户风险:在多租户架构中,隔离通常有两层——硬件虚拟化(KVM/CPU 的 VMX/SVM)负责内存和特权级的强隔离,而网络、存储、内存回收等共享子系统则复用同一份宿主内核代码。一旦内核中某个处理 guest 数据的函数(例如网络包解析、页表操作或设备后端)存在缺陷,攻击者就可以在无需任何特权的情况下,从 guest 侧构造输入触发宿主机上的越权读写。这与单纯的“越狱”不同:它的后果不是逃出自己这台虚拟机,而是直接读到或写坏同一宿主机上其他租户的数据。所以“共享内核层”既是云得以高效调度的基石,也是整个行业共担的单点故障源——这也解释了为什么 Vercel 必须联合 AWS 和内核维护者协调修复,而不是自行打补丁了事。
跨租户磁盘快照恢复:信任边界的经典教训
一个被guest数据欺骗的控制平面
在挑战赛第一天提交的报告中,Vercel认为最具代表性的一份发现了快照恢复机制中的信任边界违规。当你对沙箱做快照时,控制平面需要记录快照数据的存储位置:{storage_url, size, checksum}。问题在于,这个信息来自guest内部运行的软件,而宿主机上的服务却将其视为权威数据。
研究者将自己沙箱内的快照响应拦截并改写,交换了两个不同账户的快照存储对象。结果是:恢复"你的"快照会实际加载另一个账户的完整文件系统。研究者验证了两个账户可以互相读写对方的文件,并用哈希值确认了结果,同时保留了测试资源供Vercel独立复现。
控制平面与信任边界:控制平面(control plane)指云平台中负责调度、编排、鉴权、快照与生命周期管理的服务集合,它与真正跑客户负载的数据平面(data plane)在职责和权限上分离。在多租户系统里,信任边界就是从“不可信”一侧跨越到“可信”一侧的那条线:guest 内运行的任何软件都天然属于不可信侧,因为它的行为完全由租户控制。经典的违规模式是——可信侧的服务把不可信侧返回的数据当作权威事实直接采信。快照漏洞正是如此:宿主机上的存储服务把 guest 上报的 {storage_url, size, checksum} 当作自己下发的指令执行,等于把访问哪个对象、是否校验、读到谁的文件系统这些关键决策交给了租户。正确做法是所有跨越边界的数据都必须在服务端重新派生,或用 guest 不可达的密钥签名后才能采信。
攻击的局限与修复
这个攻击有一个关键限制:要针对特定受害者进行交换,需要知道该受害者的内部快照存储键——一个平台为每个快照生成的96位随机标识符,从不在API中暴露。这个键只存在于受害者自己的沙箱内部。研究者拥有两个账户,这才是证明可行的前提;没有证据表明陌生人可以针对其他租户发起攻击。Vercel仍然将其作为优先修复项,因为"依赖秘密保持秘密的边界不是真正的边界"。
你可能没注意到,Trail of Bits在独立评估中标记了相同的根本原因,说明这个发现是真实的、重要的,且可以从两个完全不同的角度被发现。修复在一周内上线:控制平面现在将每个快照对象绑定到创建它的项目并拒绝其他任何内容,快照创建从guest可达环境移至宿主机侧服务,存储路径按项目作用域限定并使用严格验证的URL。
Trail of Bits白盒审查:架构结论与三项结构性改进
虚拟化边界被评为可靠
在公开赏金计划启动前,Vercel进行了内部安全评估,并邀请Trail of Bits的两名工程师评估其安全架构。Trail of Bits投入了四个工程师周深入源代码,拥有完整的仓库访问权限和两个企业测试团队,交付了20项发现,每一项都经过测试、确认并引用到具体代码。
他们的架构审查结论是:虚拟化边界是可靠的。每个沙箱运行在独立的Firecracker microVM上,拥有专用的guest内核,设备模型被刻意设计得很小。没有任何guest与宿主机或其他租户共享运行中的内核。这一结论为Vercel的沙箱隔离模型提供了独立验证,也解释了为什么在1,285份报告中没有发现任何人访问客户数据。
三项结构性建议
在此基础之上,Trail of Bits给出了三项结构性建议,Vercel已全部实施:
消除对guest的所有信任。 控制平面此前接受microVM内部软件返回的值,而这些值本质上都是租户输入。现在任何跨越边界的数据都必须在服务端派生,或用guest无法获取的密钥签名。
统一策略决策。 出口网络策略此前分散在多个子系统中,各自独立解析同一网络策略,且结果并不总是一致。现在每种数据类型使用一个规范化例程,每个决策由一个组件负责,策略变更时重新验证连接。
假设下一个零日终将到来。 Vercel加强了每个沙箱周围的保护措施:保持宿主机内核更新、禁用嵌套虚拟化、使用Firecracker的jailer以受限权限运行每个microVM进程并将其与宿主机其余部分隔离。
出口网络策略与 jailer:出口(egress)网络策略决定沙箱能主动连向哪些地址,是防止 guest 把数据外传或扫内网的关键闸门。当同一份策略被分布在多个子系统里各自解析时,系统极易出现“某条路径放行、另一条路径拒绝”的不一致,攻击者只要找到最宽松的那条路径即可绕过。统一为单一规范化例程和单一决策组件,本质上是消除这类“策略漂移”。至于 Firecracker 的 jailer,它是一个以最小权限启动 microVM 进程的封装器:在创建沙箱前先把进程放进 cgroup 和网络命名空间、降权到非特权用户、丢弃多余的能力位并限制文件系统可见范围。这样即便某个 microVM 进程被攻陷,攻击者拿到的也只是一个被重重约束的沙箱——这正是“假设下一个零日终将到来”的具体落地方式。
1,285份报告背后的安全研究新范式
数据拆解
两周内1,285份报告的分类如下:877份重复、319份不适用、57份有效、32份信息性。在有效的发现中,验证了1个严重、5个高危、9个中危、42个低危和32个信息性发现。中低危和信息性发现多为小的策略边界缺口,比如防火墙规则行为与文档不一致,或某个字段过度信任guest。
Vercel特别提到,这个报告量之所以可能,是因为研究者现在以AI速度进行漏洞挖掘。报告来源的异质性也令人印象深刻——有人专攻Linux命名空间直指内核边界,有人攻击网络策略,还有人探索了Vercel自己都没想到的领域。
内部发现与外部赏金互补
并非所有发现都来自外部。Vercel实习生Marcos Hernandez在Linux device-mapper存储层发现了跨租户数据泄露:任何沙箱都可以读取已删除沙箱回收的磁盘块。这个发现与Trail of Bits的审查、外部赏金计划共同构成了Vercel的多层安全验证体系——内部评估提供深度,白盒审查提供架构视角,公开赏金则带来想象不到的多样性和规模。
对云安全行业的启示
Vercel这次挑战赛的价值超出了单一产品的安全改进。它验证了一个模式:即使经过内部评估和白盒审查,公开赏金计划仍然能发现前两者都遗漏的问题——快照信任边界漏洞就是最好的例子,Trail of Bits独立标记了相同的根本原因,但外部研究者以完全不同的路径发现了它。
同时,Linux内核零日漏洞的发现提醒我们,云安全的底层基础仍然脆弱。当整个行业的多租户隔离都依赖同一层内核代码时,一个缺陷就可能影响所有厂商。Vercel选择与AWS等行业伙伴协调修复、并公开披露漏洞存在的做法,为共享基础设施的风险管理提供了一个可参考的模板。
对于构建沙箱环境的开发团队而言,这次挑战赛最大的技术教训或许是那条简洁的原则:永远不要信任guest返回的任何值。控制平面接受的每一个来自microVM的数据都是潜在的租户输入,需要在服务端重新派生或使用不可达密钥签名。这条原则不仅适用于虚拟机级别的隔离,也适用于任何多租户架构中跨信任边界的场景。
相关推荐

Kimi K3.1实测:开源模型逼近Opus,视频生成意外抢镜
Kimi K3.1在直播实测中完成运动图形、3D渲染、小游戏与视频生成等复合任务。本文分析其2.8万亿参数MoE架构的真实表现、与Opus/GPT的体感差距,以及被官方忽略的视频生成能力,并讨论多模型并用时代的工作流变化。

Sam Altman:人生重大建议,为何仍需来自人类?
OpenAI CEO Sam Altman 谈 AI 建议的边界:AI 能劝阻冲动邮件,但人生重大建议仍应来自人类。他期待 AI 成为会反驳的资深同事,而非谄媚工具。

“黑色十月”:AI挖出史上3%严重漏洞?
Reddit 热帖称过去一个月发现了史上 3% 的严重软件漏洞,被称为「黑色十月」。本文拆解这一说法的统计口径问题,分析 AI 辅助代码审计如何加速漏洞发现,以及开发者和企业该如何应对补丁窗口缩短的挑战。