← 返回所有文章
發佈於 · 作者 Renaud Deraison

載入頁面就夠了

Anthropic 的 Frontier Red Team 表示,一個未發布的模型找到了瀏覽器與核心的漏洞,並把它們串成可運作的漏洞利用,其中一條在頁面載入後數秒內就接管了 macOS 上預設設定的 Chrome。程式設計代理整天都在開網頁。在 Bromure Agentic Coding 中,代理的瀏覽器在自己的拋棄式 VM 裡執行,遠離程式碼、憑證與 Mac;程式碼審查自動化則在你自己的機器上落實 Anthropic「掃描每一個 pull request」的建議。

四個漏洞,一個頁面,幾秒鐘。這樣的漏洞利用鏈過去需要一支專家團隊,如今一個模型就能打造出來。你的程式設計代理所操作的瀏覽器,每開一個頁面都暴露在這種風險之下。

10 月 27 日,Anthropic 的 Frontier Red Team 發表了一份關於五條漏洞利用鏈的報告,這些利用鏈是一個尚未發布的內部研究模型「在初始提示之後」找到並建構的。漏洞利用鏈把多個漏洞串起來,讓每一個漏洞帶著攻擊越過前一個漏洞無法越過的防線。目標是 Chrome、Safari、Android、Windows 與 Linux。Anthropic 已透過協調揭露將五條全部通報給廠商,而昨天報導此事的 The Hacker News 指出,其中沒有一條曾在真實攻擊中出現。

Anthropic 的結論只有一句:「前沿模型有能力發現多個漏洞,並把它們組合成可運作的漏洞利用。」

一個頁面,四個漏洞

最值得細讀的是 Chrome 這條鏈。它的概念驗證從 macOS 上預設設定的 Chrome「在頁面載入後數秒內」啟動了計算機。計算機是傳統的證明:如果漏洞利用能在你的 Mac 上啟動一個 App,它就能啟動任何東西。

它用了四個漏洞:

  1. Chrome 的 JavaScript 引擎 V8 中的一個缺陷,讓頁面能破壞引擎的記憶體。
  2. V8 的第二個缺陷突破了 V8 自己的記憶體沙箱,讓攻擊者控制了轉譯器,也就是繪製頁面的處理程序。
  3. CacheStorage 中的一個競爭條件,讓該轉譯器能讀取沙箱外的記憶體,並摸清權限更高的瀏覽器處理程序的配置。
  4. Chrome 聯合登入功能 FedCM 中的一個 use-after-free,讓攻擊者的程式碼完全在沙箱之外執行。

Chrome 的沙箱假設轉譯器遲早會被攻破,並把損害關在轉譯器裡面。第三步和第四步推翻了這一點。Anthropic 表示,它已通報 62 個取得 CVE、且在 Chrome 156 之前已修補的 Chrome 漏洞,全部被評為嚴重或高風險,其中 13 個是沙箱逃逸,21 個是入侵轉譯器的漏洞。

Safari 這條鏈從不執行程式碼。它取得瀏覽器記憶體的讀寫權限,只改一個值就關掉了同源政策(same-origin policy),也就是防止一個網站讀取另一個網站的規則。規則一關,任何頁面都能讀取 Safari 的瀏覽紀錄、Cookie 與工作階段資料,並以已登入的身分向其他網站發送請求。Apple 已在 iOS 與 iPadOS 26.5.2 中修補。

Linux 這條鏈透過網路、無需登入,就能在任何執行多路徑 TCP 監聽器的機器上取得 root shell。洩漏一個核心位址花了大約 48 分鐘,取得 shell 又花了五分鐘。這個漏洞 CVE-2026-98432 已於 10 月 15 日在上游修補。

從頁面載入,到 Chrome 沙箱之外的程式碼頁面載入macOS 上的預設 Chrome,無需再點擊1 · V8 堆積頁面破壞JavaScript 引擎的記憶體2 · 轉譯器逃出 V8 沙箱,繞過 ASLR,控制轉譯器3 · CacheStorage競爭條件讀取沙箱外的記憶體,摸清瀏覽器處理程序4 · FedCMuse-after-free,程式碼在沙箱外執行以你的身分,在瀏覽器所在的機器上執行的程式碼概念驗證開啟了計算機;真正的酬載則能讀取你的檔案、金鑰與權杖
Anthropic 報告中的 Chrome 利用鏈。惡意頁面破壞 V8 的記憶體,V8 的第二個缺陷接管轉譯器,CacheStorage 的競爭條件洩漏瀏覽器處理程序的記憶體配置,FedCM 的 use-after-free 則在 Chrome 沙箱之外執行程式碼。概念驗證在頁面載入後數秒內,就在一台標準 Mac 上開啟了計算機。

你的代理開的網頁比你還多

這些是瀏覽器漏洞,而程式設計代理如今是開發者機器上最忙碌的瀏覽器使用者之一。它讀文件、點開 issue 裡的連結、打開套件的首頁、查看搜尋結果、載入剛建好的 App 來截圖。瀏覽器 MCP 伺服器與瀏覽器擴充功能讓這一切成了家常便飯:代理操作的是真正的 Chromium,而且常常就是開發者每天早上登入的那個 Chrome 設定檔。

這些頁面大多不是開發者自己挑的。GitHub issue 裡的一個連結、README 裡的一個 URL、搜尋錯誤訊息時的第三個結果:任何一個都可能送出像 Anthropic 那樣的利用鏈,而以 Chrome 這條鏈來說,代理什麼都不用點。頁面一載入,四個步驟就全部執行完畢。

在筆電上,這條鏈的終點是開發者在 Mac 上的帳號。同一個帳號裡有 ~/.ssh、~/.aws/credentials、gh 的登入、代理自己的 API 金鑰,以及每一個簽出的儲存庫。把計算機換成一支腳本,它就能把這些全部複製走。若是 Safari 那條鏈,戰利品就是瀏覽器本身的內容:開發者登入的每一個網站的 Cookie 與工作階段,一個頁面就能全部拿到。

同一個頁面在 Bromure Agentic Coding 中

Bromure Agentic Coding 在你 Mac 上的 Ubuntu VM 中執行 Claude Code、Codex、Grok、Kimi 與 omp。每台機器也都有自己的瀏覽器:一個完整的 Chromium,以窗格形式開在聊天旁邊,由你和代理共用。代理透過內建的 browser MCP 伺服器操作它,有 23 個工具可以導覽、點擊、讀取 DOM、截圖,以及讀取主控台與網路紀錄。你什麼都不用設定。

瀏覽器獨享一台 VM

那個 Chromium 不在你的 Mac 上執行,也不在代理的 VM 裡執行。它在另一台獨立的 sidecar VM 中執行。代理的 VM 與瀏覽器 VM 共用一個私有網路,好讓瀏覽器能載入代理啟動的開發伺服器,而它們共用的也就只有這個。代理寫入的檔案不會出現在瀏覽器的磁碟上。就連瀏覽器裡的 localhost,指向的也是瀏覽器自己的 VM。

拿 Anthropic 的 Chrome 利用鏈去打這個瀏覽器。第一步到第四步都照設計運作:轉譯器被攻破、沙箱被攻破,攻擊者的程式碼以瀏覽器的身分執行。但這段程式碼此時身在一台只有 Chromium、別無他物的 VM 裡。沒有 ~/.ssh 可以複製,也沒有 ~/.aws 可以讀取。儲存庫、代理的設定與它的權杖全都在另一台 VM 中,而你的 Mac 位於 hypervisor 邊界之後。代理的瀏覽器工具也不和 Chromium 共用處理程序:它們透過一個經由 vsock 與主機溝通的小型 shim 連到瀏覽器。用手冊的話來說:「惡意頁面永遠碰不到代理的檔案或你的 Mac。」

瀏覽器會遺忘

預設情況下,瀏覽器是拋棄式的。它的磁碟是共用映像檔的 copy-on-write 複本,瀏覽器拆除時就會刪除。隱藏的瀏覽器約十秒後暫停,五分鐘後拆除,下一個瀏覽器則從乾淨的映像檔啟動。落在瀏覽器 VM 裡的惡意酬載,會跟著 VM 一起消失。

這也涵蓋了 Safari 那類利用鏈,也就是讀取 Cookie 與工作階段、而不執行程式碼的那種。拋棄式瀏覽器沒有昨天的工作階段。它只保有代理在這次任務中登入的內容,沒有任何你日常瀏覽的東西,因為你日常使用的瀏覽器是另一台機器上的另一個程式。

當專案需要持久的登入時,機器 Browser 設定中的 Stay signed in to websites 會在一個只屬於該機器的加密磁碟上保留設定檔。為代理測試用的 staging 網站開啟它,而在任何處理不受信任程式碼的機器上,都讓它保持關閉。

筆電:代理的瀏覽器以你的身分執行代理開啟 issue 裡的連結macOS 上的 Chrome,常是你已登入的設定檔利用鏈逃出沙箱程式碼以你的 macOS 帳號執行你能讀的,它都能讀~/.ssh、~/.aws、gh 登入、代理的 API 金鑰、每個簽出的儲存庫、瀏覽器 CookieBromure:瀏覽器有自己的 VM代理的 VM(Ubuntu)儲存庫、代理設定、替身憑證經 vsock 的瀏覽器工具瀏覽器 sidecar VM利用鏈逃出 Chrome 沙箱後落在這裡:只有 Chromium 和一顆拋棄式磁碟拆除後重建為乾淨狀態拋棄式複本在拆除時刪除;你的 Mac 位於 hypervisor 之後
同一條利用鏈在筆電上與在 Bromure 機器上。在筆電上,代理操作的瀏覽器以你的身分在 Mac 上執行,因此逃出 Chrome 沙箱的程式碼能讀取你的金鑰、權杖與儲存庫。在 Bromure 中,代理的瀏覽器在自己的拋棄式 sidecar VM 中執行;逃逸只會落在一台只有 Chromium 的 VM 裡,與代理的 VM 和 Mac 都是分開的,而且那台 VM 會被丟棄。

代理自己的 VM 裡只有替身

假設攻擊者更進一步,從別的途徑進入了代理的 VM,例如代理照著頁面上的指示安裝了一個惡意套件。那裡的金鑰都是替身。gh 設定與 ~/.git-credentials 裡的 GitHub 權杖是假的,你 Mac 上的代理伺服器只會在它前往 github.com 的路上換成真的。送往其他主機的替身會在離開 Mac 之前被擋下,VM 也會暫停,並跳出警示,指出是哪個憑證、要送往哪裡。

掃描每一個 pull request,在你的 Mac 上

Anthropic 告訴防守方:「掃描你自己的程式碼比以往任何時候都更重要。」報告還補充,掃描應該在 pull request 時進行,因為只要新程式碼持續進來,清掉積壓「只解決了一半的問題」。

Bromure Agentic Coding 內建了這項功能。code review 自動化會用你某台機器上的代理監看一個 GitHub 儲存庫,並把發現的問題記錄為 findings,在每次掃描之間去除重複。一個監看可以執行三種掃描:

  • 每個新的 pull request,審查該 pull request 的變更。
  • 被監看分支上的每個新 commit。
  • 排程審查,每週一次,審查自上次以來的新 commit,或整個儲存庫。完整的基準審查依風險高低逐一目錄進行,先從請求處理常式、驗證與輸入解析開始。

五個代理中的任何一個都能執行它。每次審查都會綁定它所涵蓋的 commit,代理會以 findings_done 加上一段摘要結束這次執行。掃描在你的 Mac 上、用機器的憑證、在它的 VM 裡執行。Mac 每三分鐘用機器的權杖輪詢一次 GitHub,而這個權杖從不進入 VM。沒有 webhook,也沒有開放的連接埠。

pull request 掃描器讀的是開 pull request 的人所寫、不受信任的文字,而無人看管的審查者在執行時會略過核准提示。Bromure 會在代理看到之前,讓每個 pull request 的標題、內文、作者與留言都通過強制的提示注入篩檢。如果沒有安裝 PromptGuard 模型,由事件觸發的執行會被封鎖,而不是直接放行。審查本身則在一台滿是替身的 VM 裡執行。在 Guardrails 中把機器的 GitHub 寫入政策設為 Read-only,審查者就能讀取權杖允許的一切,而任何 push 或 REST 寫入都會在 Mac 上被拒絕。findings 送到 Bromure,而不是儲存庫。

瀏覽器是另一台 VM

代理的 Chromium 在 sidecar VM 中執行。沙箱逃逸只會落在 Chromium 旁邊,遠離程式碼、金鑰與你的 Mac。

預設即拋棄式

瀏覽器的磁碟是一份在拆除時刪除的複本。惡意酬載和 Cookie 都活不過這次任務。

後面只有替身

代理的 VM 裡放的是假權杖。真的留在 Mac 上,只有在送往所屬主機時才會加上。

每個 PR 都審查

程式碼審查自動化會掃描每個 pull request 與 commit,篩檢 PR 文字中的注入,也能以唯讀方式執行。

修補、掃描,並給瀏覽器一台自己的機器

報告中的每個漏洞都已修補,第一步一如往常:把 Chrome 更新到 156 或更新版本、更新 Apple 裝置,並修補執行多路徑 TCP 監聽器的核心。Anthropic 說得對,防守方需要攻擊者很快就會擁有的同一批模型,而且要先拿來對準自己的程式碼。

報告更大的重點在於下一批漏洞。如果模型能這麼快把一小撮缺陷變成可運作的利用鏈,其中有些利用鏈會在修補程式推出前就已在外流傳。一個整天上網的程式設計代理,遲早會載入這樣的頁面。在 Bromure Agentic Coding 中,那個頁面是在一台本來就準備被丟掉的 VM 裡載入的,而你的程式碼、金鑰和 Mac 都在別的地方。

想了解 Bromure 瀏覽器在程式設計代理之外如何應對瀏覽器零日漏洞,請閱讀為什麼瀏覽器零日漏洞不會消失。關於一則透過下載檔案送到代理手上的惡意指令,請閱讀下達命令的是那個下載檔。