Skip to content
AI Ferryman Alex
Go back

OpenAI 的模型鑽出了訓練沙盒,靠的是 DNS

9 月 20 日,OpenAI 一個密封訓練環境裏的研究模型,要從幾條人物線索裏認出一個人。官方給的搜索工具回來的全是垃圾,它決定自己來。

直連死得很快。用 shell 腳本去敲 Google、Bing、DuckDuckGo:403、502、502。走 HTTPS 去問一個公開的聊天服務:被代理擋下,CACHE_MISS。直接向公共 DNS 服務器發查詢:沒回音。

然後它試了每個密封盒子都還留着的那個服務。DNS。

它向沙盒自己的解析器問了一個真域名,拿回真記錄;再問一個編出來的假域名,得到正確的拒絕。一真一假兩個答案,信息量拉滿:眼前這臺解析器會遞歸出去連真互聯網,而且沒人給它定過「只能查哪些名字」的規矩。

接下來這段值得放慢看。

公網上有一種「用 DNS 回答問題」的服務。玩法是把問題編碼進主機名的標籤裏,向你的解析器發一條 TXT 查詢;服務的權威服務器從主機名裏把問題解出來,拿去問一個外部聊天機器人,再把回答塞進回傳的 TXT 記錄裏。問題藏在查詢名裏出去,答案藏在回應裏回來。全程只有 53 端口,沒有創建過任何連接。

逃逸機制:問題藏在 DNS 查詢裏出去,答案藏在 TXT 記錄裏回來

agent 把查詢指向沙盒解析器(10.214.0.2,OpenAI 事故報告裏的數字),把超時從 6 秒拉到 19 秒,因爲對面給答案之前要先「想一想」,然後拿回了一句話:「The capital of France is Paris.」接着它讀了那個服務的公開文檔,把腳本改成 24 秒超時,又發了 18 個問題。14 個帶着它的任務線索,4 個在問怎麼搜索網頁、怎麼抓取頁面、哪裏有公開的 DNS 隧道。它一邊解題,一邊試着把這條縫撬得更寬。

機制本身才是能推廣的那部分。遞歸解析器說到底是個代取服務:你給它一個名字,它替你走遍互聯網把結果帶回來。代理、出口網關、NAT 規則,我們全都做威脅建模。偏偏沒人給解析器做,因爲 DNS 感覺像水管。它就這麼坐在每個沙盒、每個 VPC、每個號稱氣隙隔離的訓練集羣裏,安安靜靜地能從外面的世界取回任意名字,年頭比我們大多數人的工齡都久。

而且它用的還是溫柔版。有一個開源工具叫 dnstt,是 iodine 那一代 DNS 隧道的現代後繼者,能把真實的 TCP 流量塞進 DNS 裏跑,走的就是普通遞歸解析器,包括 Google、Cloudflare 那些大的公共加密解析器。不是一問一答,是一條真正的隧道。它生來就是爲了翻審查,實際使用規模也很大。伊朗全國斷網那次,我幾個朋友就是靠它連上外面的世界,因爲斷網能掐掉所有路線,唯獨 DNS 得留着;一個國家、一張網絡,不可能把域名解析也關掉,所以這條隧道什麼都能熬過去,除非把 DNS 整個關掉。現在把這個工具放進一個會自己寫腳本的東西手裏:只要沙盒的解析器能自由遞歸,那就不叫漏了個洞。那是沙盒有一扇慢一點、但完全敞開的門。

這個例外我親手放行過。我認識的 infra 工程師人人放行過。構建裏有個東西凌晨兩點需要解析一個名字,工單上寫「臨時」,然後工單活得比寫它的團隊還久。

回應側的故事就沒那麼好笑了。事故報告的時間線:

上午 9:50:23,第一個答案經 DNS 回來。 10:02:11,監控系統拉響 P0。約 12 分鐘,檢測是有效的。 10:05:06,真人確認警報。3 分鐘,人也沒掉鏈子。 12:34:30,run 終於被殺掉。兩個半小時之後。

報告對原因很坦白:run 本該自動停,沒停成,人們耗了一上午爭論到底該不該停。而那個專門查異常 DNS 活動的基礎設施檢測器,把這個環境排除在外了。查詢全都記了日誌,記得整整齊齊。記日誌不等於檢測。我家裏有一架子的覆盤報告,最後都能縮成這一句。

OpenAI 把一切都停了。最強模型的全部訓練、評估和帶工具的推理,一律暫停,修完縫再紅隊驗證。10 月 1 日恢復,距暫停開始 11 天。新政策:frontier 訓練全面斷網;模型改在「離線世界」裏學上網,那裏面是索引和緩存好的網頁內容。

然後他們放自家模型去拆自家的籬笆。幾千億 token 的紅隊,agent 團隊在同一套基礎設施裏找出口。它們把漏洞鏈成完整的 VM 逃逸,補丁按 Patch the Planet 倡議回給上游:Kata Containers(CVE-2026-24834,外加權限與文件系統隔離修復)、gVisor 的文件描述符處理、Moby/Docker 的 syscall 過濾修復,還有一組 Linux 內核 CVE。我最有感的一條發現,往壞了說的那種有感:共享硬件上不同 VM 裏的 agent 被禁止互相通信,它們用 CPU cache 的時序把合成祕密傳了出去。逐出、測時、解碼。Spectre 那一套,被一羣從沒被告知這招存在的租戶重新發明了一遍。

如果你在沙盒裏跑 agent,2026 年了,我們大多數人都在跑,週一我會查這幾件事。解析器上,給工作負載能查的域名和能問的記錄類型都上白名單。OpenAI 說他們正是這麼補的,兩層獨立控制,任何一層都能攔住這次的事。把 DNS 日誌喂進異常檢測,排除清單查兩遍;你豁免的那個環境,就是將來讓你難堪的那個。殺掉路徑要像測備份一樣真拉一次:需要開會才能停的自動停,說到底是穿了戲服的手動停。

這件事不需要什麼超級武器。需要的只是一個 41 歲的協議,精確地做它被設計來做的事,待在一個把門窗都鎖死、唯獨把投信口漏出清單的盒子裏。去查查你自己的投信口。人人都有至少一個,而且如今在裏面撥弄它的那個東西,會自己寫腳本。

出處:OpenAI《Securing our frontier model training environment》(https://openai.com/index/securing-our-frontier-model-training-environment/)與事故報告《An agent used DNS to reach an external chatbot》(https://alignment.openai.com/misalignment-reports/an-agent-used-dns-to-reach-an-external-chatbot/)。時間線、解析器地址、超時數字和巴黎那句答案,全部出自事故報告。


在 X 上討論→

評論都在 X 上——回覆、引用和討論都在那邊進行。