948 条通往 root 的路,每条 1279 美元

1 阅读11分钟

10 月中旬,OpenAI 的一条流水线跑了 12 小时,交出 2308 个候选漏洞。再过 30 小时,其中 1724 个在隔离虚拟机里真的崩了。最后跑出来的是 948 份不同的本地提权利用程序:任何一个只拿到低权限 shell 的人,可以照着其中一份变成 root。

总账单 121.34 万美元。摊到 948 份上,每份 1279 美元。

三周前我们写过另一件事。Anthropic 一个没发布的 Claude 模型,用 53 分钟给 CVE-2026-98432 写出了两阶段提权链,而 Ubuntu 到今天还没把补丁发全。那篇讲的是一个洞有多难补。这一篇讲的是产能:当这件事可以按千次批量做,防守方还剩多少时间。

发生了什么:五个阶段,一张账单

报告标题《A thousand fewer paths to root》,11 月 4 日发在 OpenAI 的安全板块,挂在其 6 月启动的 Patch the Planet 和 Daybreak 项目下面。整套东西分成五段,每一段都有独立成本。

阶段干了什么耗时API 成本
侦察判定哪些代码低权限用户能碰到未单独披露3426 美元
发现两个 agent 分工,一个挑目标一个做威胁建模12 小时31.65 万美元
动态验证生成 PoC,在开 KASAN 的隔离虚拟机里跑30 小时7.33 万美元
可利用性评估在开 SMEP/SMAP/KASLR/HARDENED_USERCOPY 的环境里写利用未单独披露约 82 万美元
补丁生成与人工复核出补丁,安全研究员定级未单独披露计入上项

投入产出比在这张表里看得最清楚。发现阶段花了 31.65 万,只占四分之一;真正吃钱的是把「疑似」变成「能跑通」的过程。LPE 的开发和验证单项就花了 69.1 万美元,平均每个 558 美元,是信息泄露类(271 美元)的两倍。

成功写出的利用,平均成本 360 美元。失败的那些不便宜:59 次失败尝试平均每次 3922 美元,大多是竞态条件,跑一百次才崩一次。

为什么是现在?今年 6 月 OpenAI 上线 Patch the Planet,10 月 Anthropic 推出 Cyber Mission,谷歌的 Big Sleep 更早就在做同类事。三家的方向一致:把漏洞研究从「研究员的手艺」变成「可以按次调用的服务」。前期你能看到的只是零星案例,比如 Claude 给 CVE-2026-98432 写出那条链,比如 Max Justicz 用 GPT-5.6 Sol 找出 Debian/Ubuntu 的 APT 中间人漏洞。这一次是第一次有人把整条流水线的成本和产出摊开给你看。

机制:为什么先筛「能不能碰到」,再筛「有没有洞」

这套流水线的第一步不找 bug,先找能碰到的代码。

侦察 agent 按目录和文件逐个判断「低权限用户能不能通过系统调用抵达这里」,排出 5034 个审计目标,约 280 万行,占整个内核四千万行的 7%。剩下 93% 的代码根本没进模型视野。这个取舍很实际:内核里大量驱动和架构代码在服务器上摸不到,扫了也白扫。

第二步是双 agent:一个做威胁建模,一个做静态分析,工作方式接近 Codex 的安全插件。12 小时出 2308 个去重后的候选,平均每小时 192 个。

第三步是这份报告里最有信息量的设计。候选不是直接算数,要丢进开着 KASAN 的隔离虚拟机里真的触发一次内存破坏,而且 triage agent 会看着控制台输出反复改 PoC,直到它崩或者确定崩不了。结果是 1724 个复现,74.7%。

剩下 25.3% 没复现的,只有 3.1% 是模型自己搞错了(假设了一个不可能成立的条件)。其余是竞态难触发、需要额外权限、或者要等特定内存分配失败。这个分布说明模型在「读代码猜漏洞」这件事上的假阳性并不高,卡住它的是「在真实机器上稳定重现」。

复现之后还有一道变体分析,把同一个根因的不同利用路径合并,1169 份可工作的 LPE 收敛成 948 个独立漏洞,对应 948 个独立补丁。

中间那步初筛是故意放宽的。1724 个复现里,它先圈出 313 个信息泄露候选和 1238 个 LPE 候选,最后才收敛到 291 和 1169。宁可多花十次验证的钱,也不愿漏掉一个真的洞,这个取舍在后面的账单里能看出来:多花的钱主要落在失败重试上。

为什么验证比发现便宜,利用又比验证贵?这三段的难度不在一个维度上。

发现阶段要判的是「这段代码看起来有没有问题」,模型读 280 万行,成本摊在 token 上。验证阶段要判的是「它在不在真实环境里崩」,KASAN 会把越界访问当场抓出来,模型只需要不停改 PoC 去逼近那个点,失败一次的成本很低。到了写利用,障碍换成了缓解机制:SMEP 阻止内核跳到用户态代码执行,SMAP 阻止内核直接读写用户内存,KASLR 每次启动都换地址,HARDENED_USERCOPY 卡住跨对象拷贝。绕开这四个东西,每一个都要单独设计一条链,而且链上任何一环不稳就前功尽弃。

这也解释了为什么 59 次失败的尝试那么贵。竞态类漏洞要在正确的时间窗里命中,跑一百次崩一次很正常,模型的每一次重试都要付一次环境启动和执行的账。

还有一个隐藏成本没进账单:人工复核。948 个漏洞的分级、复现、判断是否值得报给上游,全是安全研究员在做。报告只说这部分「未计入」。

对照:五个月,单价砍掉六成

7 月 OpenAI 用 GPT-5.6 Sol 做过一次同样的扫描,结果 166 个 LPE,成本 51.37 万美元,单个 3095 美元。

7 月(GPT-5.6 Sol)10 月(未公布模型)
独立 LPE166948
总成本51.37 万美元121.34 万美元
单个成本3095 美元1279 美元
扫描对象当时最新 master当时最新 master

数量涨 5.7 倍,单价降 59%。中间隔了三个月,内核还做过一轮加固。报告的说法是「新型 LPE 数量仍超过此前的 5 倍」。这句话的份量在「新型」两个字:它不是说旧洞没修,是说又挖出了新的一批。

更有说服力的是加固环境那一组。谷歌 kernelCTF 用的是缩小攻击面的内核,还砍掉了与 SLAB_VIRTUAL 不兼容的配置。这条流水线在里面跑了 112 小时,成本 32936 美元,拿到 25 个信息泄露 PoC 和 21 个 LPE。作为参照,kernelCTF 2026 一整年(到成文为止)总共只接受了 26 个经确认的 0day LPE。一次四天半的运行,做出全年赏金计划八成的量。

如果这 21 个都过审,赏金约 150 万美元,是成本的 45 倍。按 Pwn2Own 的两万美元、TyphoonPWN 的七万美元折算,948 份利用的假设价值在 1890 万到 6630 万美元之间,是成本的 16 到 55 倍。这个算法很粗,但方向没问题:写利用的边际成本,已经低于买利用的价格。

抽样 166 份利用做人工分析,里面至少有 10 种此前没见过的技术:2 种新的内核缓存对象喷射手法、2 种新的页整形、5 种 data-only 提权、1 种任意类型混淆。第三方内核利用专家看过,认为方法本身是新的。细节没有公开,这 10 种技术目前只存在于报告的文字描述里。

对谁有影响:三类人,三种时间尺度

内核维护者的压力是即时的。报告说,扫描结束后的 10 天里,61 个 LPE 已被上游修掉,43 个有了待审补丁,299 个在公开讨论或上报。三项加起来 403 个,占 948 的 42%。这是历史上从未有过的补丁流入速率。Linux 的 stable 分支维持者本来就在超负荷,现在要面对一批「机器写的报告加机器写的补丁」。

发行版和企业面对的是一个判断:低权限账户在功能上等同于 root。报告的原话是,对资源充足的攻击者来说,一个没打最新补丁的系统上的普通用户和 root 没有区别。以前「先拿 web shell 再想办法提权」是两步,中间隔着一道真实的门槛,现在这道门槛在变薄。能做的只有缩短补丁窗口,以及在容器和 microVM 层面限制爆炸半径,报告点名了 Firecracker 和 gVisor。

漏洞赏金市场会遇到定价问题。当生成一份可用利用的成本是 1279 美元,而厂商愿意为一份付两万到七万美元,套利空间大到不需要解释。

对做 agent 的人,这份报告还有一层可迁移的经验:harness 的设计比模型的分数更影响结果。它的 harness 里最有效的三条约束是——先按可达性剪掉 93% 的输入、用真实执行而不是模型自评来判真伪、对每个「成功」做独立校验(就是那条 20 份假成功的教训)。这三条放在写代码、做测试、跑数据分析的 agent 上,逻辑一样成立。

边界:这份报告自己承认的几个问题

第一,成本是上限。报告明说,这是「方法论与模型能力的研究」,不是成本优化研究,充分工程化之后各阶段都能降。而且只算了 API credits,人工复核的成本没进去。

第二,早期有一批「假成功」。某次运行里标了 200 个成功 LPE,人工复核发现其中 20 个是靠「另一个 0day」拿到的 root,不是指定的那个漏洞。后来收紧约束、加了独立校验。这条值得记住:AI 说「打穿了」,和「按你说的那个洞打穿了」,是两件事。

第三,测试基础设施自己也有洞。kernelCTF 那轮里,它们额外发现并利用了 1 个 QEMU TCG 漏洞。上游修了,但实验用的发布版没带补丁。

第四,复杂编排正在失效。GPT-5.5 Cyber 加 103 项技术库,成功率从 76.2% 提到 88.9%;到了 GPT-5.6 Cyber,同样的技术层只多给 1.5 个百分点,团队干脆把重编排拿掉了。这对做 agent 的人是条明确的信号:模型自主性上来之后,外挂的知识库和流程脚手架收益递减。

第五,25.3% 未复现不等于 25.3% 误报。报告只承认 3.1% 是模型错误。剩下的到底是真的存在但难触发,还是另有原因,现在没有答案。

第六,扫的是 master,不是你手上那个稳定版。master 上有的代码,LTS 分支未必有;反过来,LTS 分支上带着大量厂商补丁,行为也不一样。948 这个数字不能直接换算成「你的服务器上有 948 个洞」。

第七,一次扫描不等于见底。报告自己的建议是:大型项目要反复扫、反复修,而且每一代前沿模型出来都要重扫一遍。这句话反过来读,就是「这批 948 个修完之后,下一批还会来」。

接下来看什么

三个可查的数字,不用等结论。

一是 Linux stable 队列里,接下来两个月的补丁合并数量。如果 299 个讨论中的报告有一半落地,这个数字会明显偏离常态。

二是 948 个里最终被上游接受的比例。接受率低于五成,说明「能提权」和「值得修」之间还有一道模型跨不过去的坎。

三是 Patch the Planet 的披露节奏。慢,说明维护者社区在人为限流;快,说明自动化已经接管了修复这一端。哪一头先变,比报告里任何一个数字都更能说明接下来两年会怎样。


来源: