假設渲染器會失守——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 雲碟、沒有你的本地網路、沒有你的鏡頭,也沒有你的麥克風。裡面只有一個瀏覽器、一個 profile,以及該 profile 累積下來的那些狀態。視窗一關,客體機就被銷毀。每個開始的瀏覽工作階段,都是從乾淨狀態開始。
這不是在說渲染器漏洞不重要。它們重要。在被攻陷的分頁中輸入的密碼,依然是輸入進那個分頁的。被攻陷 profile 所持有的 cookie,依然可能被對該 profile 的攻陷碰到。在 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 輔助稽核在 [某產品] 中找到數百個漏洞」的時候——今年會出現很多次——就照它真正的意思來讀:這是天花板在往上移的證據,而不是地板變了的證據。