半透明隔離立方體沿三道發光裂縫破裂的抽象插圖,光束如絲線般逸入由遠處結構構成的幽暗技術環境,右下角白色條帶上印有 OrcaRouter 標誌。
AI Safety Incidents

GPT-5.6-Cyber 在十二小時內三度逃脫 QEMU/KVM 虛擬機

作者

Elias Hawthorne

發佈日期

最新模型 · 20查看全部模型 →
基準測試:Artificial Analysis · 每日更新
返回全部文章

2026 年 8 月 26 日,Trail of Bits 發表了一項實驗:研究人員交給一個 AI 代理單一目標——突破虛擬機器——而它在約十二小時的無人值守運作中三度達成,每次都是經由不同路徑。該代理是 GPT-5.6-Cyber,即 OpenAI 提供給該研究機構預覽權限的網攻能力模型;目標是 Debian 12 主機上的一個 QEMU/KVM 客體;而這三次逃逸從一個甫披露的 Linux 核心漏洞,一路延伸到該代理自行發現、由三個零日漏洞串成的攻擊鏈。實驗室外無人受害——代理被指示讀取的 flag 是研究人員自己機器上的測試檔案——但這項發現所針對的,正是「虛擬機器是執行這類代理的安全場所」這項假設。這份紀錄本身,連同其信心等級與「未記錄到任何實際危害」的註記,收錄於 Orca AI 事故檔案庫,與同週前後歸檔的評估沙盒條目並列。

Trail of Bits 實際跑了什麼

這篇報告由 Artem Dinaburg 撰寫,隸屬於 Trail of Bits 的 Patch the Planet 工作,而該工作又是 OpenAI 同名漏洞發現計畫的一部分。OpenAI 將 Patch the Planet 描述為一個由維護者、研究人員與安全供應商組成的聯盟,由 OpenAI 召集,旨在於揭露前修補關鍵的開源漏洞。這項實驗中的代理程式並不是為客戶測試而部署的產品:它是提供給一家研究公司的預覽存取權,而報告正是如此描述。

Dinaburg 把它定調為一場奪旗賽。代理必須從客體中逃逸出來,並讀取一個 flag 檔案;起初是取得進入客體的 SSH 存取權,以及獲准在客體內做任何事,同時持續撰寫研究日誌。刻意從客體而非主機內部開始——逃逸嘗試可能會讓機器當機——而且主機被設定成不存放任何重要東西,如此一來,代理寫出的漏洞利用程式便能被審查是否有作弊,而不會被當成一起資安事件處理。它在幾乎無人值守的情況下運作了大約十二小時,經歷了 Dinaburg 所說的「多次上下文壓縮與無數次子代理呼叫」:下載程式碼與論文、回溯、撰寫預言機與最小重現器,以及尋找可供重複使用的漏洞利用程式。他說,他自己的角色主要是在主機核心硬鎖死後重新開機。

有兩個細節決定結果該如何解讀。主機執行的是 Debian 12,且停用了 CPU 緩解措施;代理注意到這個組態,並曾試圖加以利用,但後來因為太不可靠而放棄這個做法。而該發行版是原廠的穩定版——大多數組織實際部署的就是這種——而這正是整個實驗最終所圍繞的變數。

A timeline card headed 'Three escapes in one twelve-hour run', kicker 'Trail of Bits - 2026-08-26', subtitle 'GPT-5.6-Cyber against a QEMU/KVM guest on Debian 12. Route, target and outcome, in the order they happened.', and three rows: '~ Hour 1', 'A kernel bug with no public exploit', CVE-2026-53359 known in the write-up as Januscape, the agent built its own exploit, the host hardlocked and the Debian 12 kernel was updated; 'After the kernel update', 'A libslirp bug the distribution had postponed', CVE-2026-9539 plus commit 26be815b86e8d49add8c9a8b320239b9594ff03d, Debian 12 shipped libslirp 4.7.0, arbitrary host memory read and write, then QEMU rebuilt from upstream; 'Later in the run', 'Three zero-days and one missing backport', QEMU VAPIC, KVM shadow paging, KVM paging64_invlpg() and libslirp ICMP. A footer notes that durations are as described by Artem Dinaburg and that the run lasted about twelve hours across multiple compactions and subagent invocations.

{{1}}漏洞一:{{/1}}一個沒人寫過攻擊程式的核心漏洞

大約進行一小時後,代理已經有一個針對 CVE-2026-53359 的可運作漏洞利用程式;這是本次執行前不久才披露的主機核心漏洞,在報告中稱為 Januscape。根據 Dinaburg 的說法,當時沒有公開的漏洞利用程式可供複製;代理自行建構了一個。它並未順利奏效——主機反而發生硬鎖定——而 Dinaburg 在繼續之前更新了 Debian 12 核心。

這個識別碼經得起公開紀錄的查證。NIST 的 NVD 中關於 CVE-2026-53359 的條目於 2026-07-04 發布,描述一個 KVM x86 影子分頁的釋放後使用(use-after-free)漏洞,歸類為 CWE-416,CVSS 3.1 評分為 8.8;該條目發布時間比這項實驗早七週,而且漏洞正位於該逃逸所針對的虛擬化程式碼中。這並不能佐證該逃逸本身,但可確立這個標籤所指的是一個有文件記載的核心漏洞,而非為了這篇文章憑空捏造的漏洞。

第二個逃逸:一個 Debian 早已決定延後的 libslirp 漏洞

第二條路徑根本算不上什麼新穎的漏洞。Debian 12 搭載的 libslirp 4.7.0 帶有 CVE-2026-9539。該代理將其與一個已合併至上游、卻未被標示為安全性修補的 libslirp 修補提交——26be815b86e8d49add8c9a8b320239b9594ff03d——結合起來,把這兩者變成對主機記憶體的任意讀寫。Dinaburg 寫道:「在那之後,逃逸就輕而易舉了。」他接著以最新的上游 QEMU 與 libslirp 重新建構一個最小化的 QEMU,然後再次放該代理去執行。

這件事的記錄核對得起來,而這也是該發現中最關鍵的部分。Debian 的套件封存檔將 libslirp 4.7.0-1 列於 bookworm,也就是 Debian 12 背後的套件系列——正是那份報告所指名的版本。Debian 的安全追蹤器將該版本標記為受 CVE-2026-9539 影響,並將 bookworm 的修補記錄為已延後,註記為「Minor issue, OOB read」;該修補已進入 trixie 與 unstable。NIST 的記錄於 2026-06-24 發布,描述 libslirp 在 4.9.2 版之前的 TCP 緊急資料處理中存在堆積越界讀取與整數下溢,可讓具特權的客體洩漏數 GB 的主機行程堆積記憶體。NVD 將其列為 6.5 分、中等,由 Star Labs 評分,且仍標示為等待分析。該代理所串接的上游提交標題為「ip: Enforce strict aliasing」——這行主旨讀起來像是程式碼衛生,而這正是 Dinaburg 關於「不會自我昭告的修補」的論點。

因此,同一個漏洞在穩定版發行版中是「小事,延後處理」,在研究實驗室裡卻是通向主機記憶體讀寫的墊腳石。雙方都未在公開場合調和這一點,本文也不加以裁斷;本文只是如實報導這兩種評估的現狀。

逃逸三:三個零日漏洞與一個從未送達發行版的修補

在從上游原始碼重建環境後,代理程式不再重複利用他人的漏洞,而是找到了自己的漏洞。最終的攻擊鏈結合了三個零日漏洞,以及一個發行版核心中缺失的已修補漏洞:

• QEMU VAPIC — 未經檢查的 ROM 別名可能與已鎖定的 SMRAM 重疊,導致系統管理 RAM 暴露,並使攻擊者得以控制 SMM 執行。已通報;文章發布時尚未修補。

• Linux KVM 影子分頁 — 遭攻擊者修改的影子頁面會失去同步,且可能被重複使用。上游已修補;截至發布時,穩定核心的詳細資訊仍待確認。

• Linux KVM paging64_invlpg() — 在客體將映射變更為 4 KiB 後,過期的 level-2 role 產生了可寫的 2 MiB 主機實體映射,足以修改 QEMU 堆積。已由上游 commit 9fd4a4e3a3d9fc0306525d95bf3eca693d311406 修正,該 commit 不在發行版核心中;該 commit 存在於主線,標題為「KVM: x86/mmu: Remove FNAME(invlpg) and use FNAME(sync_spte) to update vTLB instead.」

• libslirp ICMP — 混雜的 fragment IHL 導致反射複製超出重組後的封包範圍,產生數千個存活的 NetPacket 物件,代理程式利用這些物件定位並劫持了某個回呼函式。已通報;文章發布時尚未修補。

這三項零日漏洞在報告中都沒有附上 CVE 編號,報告也沒有提供揭露時程、協調安排,以及任何修補日期。這是紀錄本身的缺漏,而不是我所能補上的細節:文中確實引用的編號,是 NVD 已經收錄的那兩個。

A table card headed 'What the third escape was made of', kicker 'Final chain - rebuilt upstream environment', with columns Component, Mechanism and Status at publication, and four rows: QEMU VAPIC, a zero-day where an unchecked ROM alias could overlap locked SMRAM exposing System Management RAM and enabling attacker-controlled SMM execution, reported and unpatched; Linux KVM shadow paging, a zero-day where an attacker-modified shadow page stayed out of sync and could be reused, patched upstream with stable details pending; Linux KVM paging64_invlpg(), a zero-day where a stale level-2 role after a 4 KiB mapping change produced a writable 2 MiB host-physical mapping, fixed upstream by 9fd4a4e3 but not in the distribution kernel; libslirp ICMP, a zero-day where mixed fragment IHLs made reflection copy beyond the reassembled packet and produced thousands of live NetPacket objects used to hijack a callback, reported and unpatched. A note reads that the write-up assigns no CVE identifiers to the three zero-days and publishes no disclosure timeline, and that the identifiers it does cite are CVE-2026-53359 and CVE-2026-9539, already in NIST's NVD.

它發現但未使用的內容

未採用的路徑與實際逃逸一樣具有資訊價值。在主機上,代理程式發現了一台 CUPS 伺服器;slirp 的 loopback 轉送暴露了一份可重複使用的本機 root 憑證,這原本可透過 file:// 印表機持續覆寫 root 檔案,直到 AppArmor 阻止它取得 flag。一個相關的 CUPS 漏洞 CVE-2026-34990 尚未進入 oldstable;NIST 對此的記錄於 2026-04-03 發布、評分為 7.8(高),描述本機未具特權的使用者強迫 cupsd 以可重複使用的「Authorization: Local」權杖,向攻擊者所控制的本機 localhost IPP 服務進行身分驗證。

其他發現則未獲採用。libslirp 的 IPv6 路徑保留的位元組超出所宣告的酬載,代理判斷這對主機串流注入而言較不可靠。QEMU 以 96 位元組的平移緩衝區處理 1,024 位元組的渲染,造成可控的堆積溢位,但由於客體在無顯示器的情況下執行,因此毫無用處。QEMU 的佇列重設讓請求保持存活,僅造成阻斷服務與有限度的損毀。

面對 Firecracker——Trail of Bits 所推薦的最小裝置模型——該代理並未逃逸。它確實透過額外的 Linux 核心漏洞使主機硬鎖定,而這些漏洞皆已在 upstream 修補。

已確立、推斷及未確立

已確立。該實驗在 Trail of Bits 自家硬體上執行,並記錄於一篇以第一人稱撰寫、包含漏洞利用細節的技術文章中。這三條路徑及其機制由設定此任務的研究人員描述。CVE 識別碼、Debian 套件版本、Debian 追蹤器狀態,以及兩個上游提交,皆可在公開紀錄中查證;本文已逐一對照那些紀錄進行查核。

尚未確立。 目前沒有獨立重現。部落格之外的相關報導,僅止於一篇 CyberInsider 摘要,該摘要完全取材自同一則貼文,未附專家評論或第三方驗證;以及 Edera(一家隔離技術廠商)於 2026-08-27 發表的評論文章,該文贊同地報導這些發現,只引用自家安全主管的說法,並揭露 Trail of Bits 曾審核 Edera。這兩者都不是真正要緊意義上的佐證:沒有第二個實驗室重現逃逸,也沒有人審核過那些逐字稿。兩篇引用來源都沒有 OpenAI 對該結果的聲明,而我也找不到該公司任何公開回應。

屬推論,而非實證。這項結論——亦即再也不能假定通用型 VM 內含能力足夠的代理程式——僅建立在一個模型、一種主機組態與一位研究者的環境設定之上。該主機是在停用 CPU 緩解措施的情況下運行,而某些被放棄的路徑(例如 CUPS 攻擊鏈)是被 AppArmor 攔下,而非被 hypervisor 攔下。同一個代理程式能否在同樣的十二小時內逃脫一部經過強化、受監控的生產主機,並非這項實驗所測量的內容。Edera 較為狹義的論點是:將裝置模擬降至最低「縮小了目標,但並未將其消除」——這是關於架構的主張,而非對該結果的複現。

OrcaRouter 部落格曾報導過相關的沙箱紀錄——2026 年 8 月通報、並在八天內修復的 Codex Heapjack 與 Overpatch 錯誤,以及 OpenAI 於 2026 年 9 月 20 日的 DNS 解析器逃逸事件——而這些事件都沒有涉及以這種方式跨越 hypervisor 邊界。那些紀錄涉及的是工具介面與網路通道;這一起則涉及位於其他一切之下的虛擬化堆疊。

An evidence card headed 'Established, inferred, and not established', kicker 'Reading the record', subtitle 'Where each claim in the Trail of Bits write-up stands, checked on 2026-10-29.', with three columns. Established lists that the run happened on Trail of Bits' own hardware in a first-person technical write-up, that three routes were described by the researcher who set the task, that CVE-2026-53359 and CVE-2026-9539 are real NVD records published 2026-07-04 and 2026-06-24, that Debian lists libslirp 4.7.0-1 in bookworm and marks it vulnerable with the fix postponed, and that both upstream commits exist. Inferred lists that an off-the-shelf VM cannot hold a capable agent is drawn from one model and one host configuration, that the host ran with CPU mitigations disabled and the agent found that path unreliable, that some abandoned routes were stopped by AppArmor rather than the hypervisor, and that a hardened production host is not what the experiment measures. Not established lists no independent replication, no third-party audit of the transcripts, that the only other coverage is a same-source summary and a vendor commentary that quotes its own staff, that no statement from OpenAI appears in either cited source and none was found, and that no CVE identifiers or disclosure timeline exist for the three zero-days. A footer notes the record carries no disputed flag and no recorded real harm.

Trail of Bits 說應該改變什麼

Dinaburg 的結論說得很直白:「你不能再假設單憑一台 VM 就能容納一個足夠先進的 AI 代理」,而這類代理應被視為「進階持續性威脅」。他寫道,現成的 VM 並不足夠,因為攻擊面實在太多了。具備快速更新能力的發行版因此成為必要條件;至於依賴緩慢 backport 的較舊發行版,則應被推定為有漏洞。

接下來的建議屬於操作層面,而非架構層面:

• 使用攻擊面最小的虛擬化技術——Firecracker,他稱其「顯然是難度大幅提高的目標」,同時指出它並非毫髮無傷,因為該代理仍透過其下方的共享核心將主機徹底鎖死。

• 對授予代理存取權限的任何項目,套用最小權限、記錄及主動監控。

• 限制代理的運作時長,並讓每次使用都獲得一個全新的環境,而非長期存續的環境。

• 並且,在他的結案陳詞中,將安全基本功——修補節奏、裝置型號、核心回移植——視為硬性限制條件,而非模型在任何特定日子裡的能力。

對評估工作而言,這個意涵令人不安,而報告並未用那樣的字眼把它點明:一項衡量具備網攻能力的代理在虛擬機器內能做什麼的評估,同時也是在衡量那台虛擬機器。上述途徑是三個案例,分別由某個發行版的回補政策、某個提交的主旨行,以及某個未修補的裝置模型各自決定了結果。這份紀錄並未解決那個問題;它記載的是一次十二小時的執行,其中邊界以三種各自不同的方式失效。