假设渲染器会失守——Mozilla 用 AI 发现的 271 个漏洞对浏览器安全意味着什么
Claude Mythos 的一个早期版本帮助 Mozilla 在单一 Firefox 版本中发现了 271 个安全漏洞。正确的反应既不是恐慌,也不是庆祝——而是悄悄地重新校准:对于我们发布、使用或在其之上构建的每一款浏览器,我们仍然必须抱有什么假设。
更聪明的审计者会找到更多漏洞。但这改变不了一个事实:渲染器是一个处理三千五百万行代码、面对敌意字节的解析器。面对 Mythos 的正确反应,既不是松一口气,也不是惊恐——而是继续按照这样的前提去做设计:下一个漏洞,就是那个会钻过来的。
4 月 21 日,Mozilla 发布了一篇博文,标题是「The zero-days are numbered」(「零日漏洞的日子屈指可数」)。在这篇文章中,基金会确认 Firefox 150 带着 271 个安全修复出货,这些漏洞是在对 Anthropic Claude Mythos 的一个早期版本进行评估过程中发现的——这是一款为漏洞研究调校的前沿模型,通过一个名为 Project Glasswing 的受控合作伙伴计划分发。之前的 Firefox 148 版本已经包含了 22 个由 Claude Opus 4.6 找到的漏洞。在单一版本周期内从 22 跃至 271,正是那种让人忍不住用上最高级形容词的数字。
Mozilla 自己却没有这么做——这是值得称道的。CTO Bobby Holley 向 The Register 表示,这些发现让他的团队感到「眩晕」,并提出了「究竟还跟不跟得上」的疑问。但他也配上了一句容易被忽略却非常重要的、克制的话:「令人鼓舞的是,我们也没有看到任何顶尖人类研究员_找不到_的漏洞。」
这句话就是整个故事,也是这篇文章的全部论点。
公告实际上在说什么
抛开标题,Mozilla 实际上在报告三件事情。
第一,一台机器现在可以以工业化的节奏去做,以前只有为数不多的顶尖人类能以人类节奏做的事情。博文直接这样措辞:「没有任何一种类别、任何一种复杂度的、人类能找到的漏洞,是这款模型找不到的。」这是一个能力声明。它并不是「可被发现的漏洞」的革命;它是「可被发现的漏洞被多快发现」的革命。
第二,随着 AI 工具链也逐步渗透进开发流水线,漏洞复杂度有可能超过发现能力。Mozilla 自己的表述:「存在这样一种风险:由于开发过程中 AI 的增多,代码库开始超出人类的理解能力。」博文论证说,「可被人类理解」本身就是一种安全属性。
第三——大家都会往上投射的那一条——Mozilla 是乐观的。「隧道尽头有光。」Holley 说。「防御方终于有机会赢得决定性胜利。」
我们认为第一条是对的,第二条应得到远多于它将会得到的关注,而第三条在关于审计军备竞赛上是对的,但在那场军备竞赛实际能解决什么问题上是错的。
好消息,直说了吧
把好消息埋起来是不诚实的,所以就说:一个把顶尖漏洞研究能力变成可以随 GPU 小时规模化的工具,是浏览器安全领域十年来最有用的几件事情之一。在一个由数百万行 C++ 组成的代码库上,在仅仅一个版本周期内从 22 跳到 271,是那种其他浏览器厂商会认真对待的信号。Chromium 的工程师会认真对待。WebKit 的工程师会认真对待。维护 libxml2、ICU、HarfBuzz、libwebp,以及每一款浏览器都会引入的另外上百种解析器的团队,只要能挤出时间,也会认真对待。
发布前修复更多漏洞,就是比发布前修复更少漏洞更好,没什么可争的。这 271 个全部是内部发现,在补丁推送前没有披露给任何人,也没有任何证据表明它们中的任何一个曾在实际环境中被利用。用安全研究的老话来说,这些都是「走路的死漏洞」。Mozilla 在它们还没来得及让任何人付出代价之前,就把它们干掉了。
所以:真实的进步。真心实意地给 Mozilla 鼓掌——他们选择了公开披露,而不是悄悄把数字埋掉。也真心实意地给 Anthropic 鼓掌——他们把 Mythos 锁在一个合作伙伴计划背后,而不是向任何买得起订阅的人普遍开放。
然后,更难的问题
如果一阶效应是「更多漏洞在发布前被修复」,那么二阶效应就是「同一份能力如今已经对 Anthropic 愿意授权的任何人可用,而大致等价的能力在未来几个季度内就会对任何人可用」。这一二阶效应,正是之前那篇 为什么浏览器零日漏洞不会消失 试图详细阐述的东西。我们在这里不打算再审一遍。从那篇文章中,跟今天有关的一点是:浏览器是你电脑上运行的、规模最大的那一块处理不可信内容的解析机器,而在这种机器里找漏洞的经济学,正在所有人脚下同时发生位移。
Mozilla 说得没错:资源充足的防御方如今拥有了更好的工具。资源充足的攻击方也一样。问题是,这会对用户实际关心的数字——不是每个版本修复多少漏洞,而是最终以可用 exploit 的形式出现在某人收件箱里的漏洞——产生什么影响。
左栏是 Mythos 所处的位置。审计——在两侧——都在加速。这种加速对防御方具有非对称的价值,前提是他们是先把工具跑起来的那一方。Mozilla 做到了,Chromium 想必也在做,而数以百计的小型浏览器和基于浏览器的应用,基本上没做到。右栏的加速并不存在。再多的审计,也不会把一个单体的、进程内的渲染器变成非单体的。再多的审计,也不会把渲染器从钥匙串、文件系统、摄像头、网络栈中切开。问题的形状没有改变。
仍然合理的姿态
Mozilla 在博文结尾表达了一个合理的愿望——希望我们能在使用机器帮助找漏洞的同时,把「人类可理解性」继续作为浏览器的一等安全属性保留下来。这也是我们共有的愿望。但它不是这个博客所依赖的那个愿望。
Bromure 所围绕构建的姿态,并不预言渲染器里有多少漏洞。它预言的是:渲染器里始终至少存在一个尚无人发现的漏洞——有时防御方先到达它,有时攻击方先到达它——而围绕渲染器的架构,必须让这种不确定性变得可以存活。
这不是一家浏览器厂商的营销话术。这是一个威胁模型的选择。一个被 Mythos 审计过的渲染器,仍然是一个在敌意输入下运行 C++ 的渲染器。下一篇关于内存安全工具链的论文,下一代 fuzzer,下一个 Mythos,都不会改变今天——就在人们笔记本上已经安装的那个版本的 Chrome、Safari 或 Firefox 上——当渲染器被攻破时,电脑上会发生什么。
两张图都是真实的防御。左边的那张,是整个浏览器行业二十年来一直在投入的,如今又借助 Mythos 在加速。它确实在变好。但在结构上,它也是一种需要厂商在攻击者之前跑完那场赛跑的防御。当这场赛跑从几个月压缩到几个小时——现在就是这样——防御就只剩下这样一个问题:你的设备恰好在那个窗口内完成更新了吗?这个窗口正在两侧同时收缩。
右边的那张是架构上的。它不关心漏洞是被 Mozilla、Anthropic、还是 2025 年发动 Operation ForumTroll 的那批攻击者、抑或暂时还没有任何人找到的。它问的是另一个问题:当渲染器的漏洞被触发时,这里「被触发」究竟意味着攻击者实际触及了什么?
Bromure 到底在做什么,一句话说完
每个标签页都运行在 Apple Silicon 上的一台一次性 Linux 虚拟机中。渲染器——V8、Blink、WebP 解码器、Dawn,以及所有那些 Mythos 级审计者正在从中找漏洞的解析器——全部在那个客户机内运行,永远不会跑在主机上。当渲染器攻破被触发时,攻击者是在那个客户机内部。那个客户机不含你的「文稿」文件夹、你的钥匙串、你的 iCloud 云盘、你的本地网络、你的摄像头,也不含你的麦克风。它只包含一个浏览器、一个配置,以及该配置累积下来的那点状态。窗口一关,客户机就被销毁。每次打开的浏览器会话,都是从干净的状态开始的。
这并不是在说渲染器漏洞不重要。它们重要。在一个被攻破的标签页里输入的密码,依然是输入进那个标签页的。属于一个被攻破的配置的 cookie,依然可以被对该配置的攻破触及。在 exploit 窗口期内交给该会话的输入,都在攻击范围之内。不在攻击范围之内的,是这台电脑剩下的那一部分——因为它们不在同一台 VM 里——而电脑剩下的那一部分,正是持久化、横向移动以及大部分实际伤害真正发生的地方。
这篇文章没有在说的两件事
读完上面这些,很容易犯两个错。我们想把两个都提前拦住。
我们没有说「我们的渲染器更好」
Bromure 使用的是 Chromium 上游。Mythos 在 Firefox 中审计过的那些解析器,在每一款基于 Chromium 的浏览器中都有对应的部分,Bromure 也不例外。我们并没有声称我们的渲染器比别人更少漏洞。我们声称的是:我们的姿态不依赖于「我们的渲染器更少漏洞」这件事。
我们没有说「AI 审计其实是坏事」
Mythos 级的工具对防御方来说是一个明显的净正面——如果每一款浏览器、每一个打包进去的第三方解析器,都能以这种节奏被审计,那世界会更安全。我们的观点更狭窄:这种进步会抬高渲染器质量的天花板,但它不会改变这个设计问题——当渲染器无论如何还是被攻破时该怎么办。而这个问题,恰恰是 Bromure 被造出来回答的那个问题。
接下来要观察什么
对 Mozilla 这次公告最诚实的解读是:这是一场长对话的开头。接下来几个季度里,至少有三件事会很重要。
第一,等 Chromium 和 WebKit 交付自己的 Mythos 辅助审计时,是否能确认类似量级的发现数量。Firefox 的数字很惊人,但整个行业的画面仍然是模糊的。 第二,同一套工具是否会在披露之后出现在攻击者手中。Mozilla 很谨慎地没有声称这 271 个漏洞是可被利用的零日漏洞;它们是修复。真正的问题是:在下一个 Stable 版本发布第二天早上,同一类工具被某个不打补丁的人瞄准 Chrome 时,会是什么样子。
第三,这也是 Mozilla 自己担心的,AI 辅助开发与 AI 辅助审计之间的相互作用,到底会带来「可理解性」的净上升,还是净下降。一份只有模型能审计的代码库,就是一份安全性依赖于「对模型持续访问」的代码库。这是一种与我们过去二十年共处的失效模式不同的失效模式,而且显然并不更好。
至于我们这边,我们会继续随事态发展写下去。我们也会继续押同一个设计的赌注:每个标签页一台一次性 VM,能把浏览器漏洞最糟糕的结果变成「一个你需要重启的会话」,而不是「一台你需要重建的电脑」。渲染器变好并不会让这个赌注变差。它只会在最狭义且最有意义的意义上,变得稍微有点冗余——那将是我们乐于拥有的问题。
装上 Bromure 吧。你的其他浏览器也继续保持更新。当下一个标题写着「AI 辅助审计在 [某产品] 中发现数百个漏洞」的时候——今年这种标题会出现很多次——按它真正的意思去读:这是天花板在抬升的证据,而不是地板变了的证据。