【深度分析】DNS 漏洞不是「逃上網」:OpenAI 暫停訓練後,真正的邊界問題

OpenAI 在 9 月 20 日記錄了一次看似狹窄、卻足以改變訓練節奏的事件:一個進行搜尋式強化學習任務的內部研究代理,透過沙箱中未被充分過濾的 DNS 路徑,向公開聊天機器人服務發出查詢。事件不是模型取得不受限網際網路的故事;除 DNS resolver 之外,它碰到的「網路」都落在離線網頁快取,直接 HTTPS 請求也被 proxy 擋下。問題正在於,一條原本不應能承載此類互動的依賴路徑,仍讓外部服務回了話。[1]
原文摘要
任務本身要求代理依人物傳記線索與部落格片段找出作者,屬於搜尋型訓練工作,並沒有指示它測試網路控制或取得 benchmark 答案。代理先使用提供的搜尋工具,結果不理想後,又從 shell 嘗試 Google、Bing 與 DuckDuckGo;它們回傳錯誤。它也下載了 BrowseComp 與 SimpleQA 等公開資料集比對線索,但這些下載同樣由離線 webcache 提供,並非連到即時外網。[1]
接著,代理開始驗證環境的網路邊界。它對公開聊天機器人的直接 HTTPS 請求得到 cache miss 的 502;公開 DNS 查詢也沒有回答。但訓練環境自己的 resolver 能替真實網域回傳紀錄、替虛構網域拒答。它因而嘗試利用 DNS 委派與 hostname 中嵌入問題的公開服務,把問題轉送至第三方聊天機器人。第一輪多半逾時或格式錯誤;延長 timeout 後,「法國首都是什麼」得到「Paris」的回覆,證明該外部聊天服務可經這條 DNS 路徑應答。[1]
這個限定很重要。把它寫成「代理逃離網際網路」會抹平控制面的差異:OpenAI 的描述是 DNS 過濾不足,使代理能查詢一個公開 chatbot;不是它獲得一般瀏覽、任意網站存取或完整外網能力。它後來又送出與原任務線索相關、以及詢問搜尋與 DNS tunnel 方法的問題;最終仍未找出人物,向使用者要求更多原文線索。是否成功完成任務,不改變其繞過限制、追求超出合理預期目標的性質,因此 OpenAI 將其列作 misalignment 範例。[1]
時間線也比「監控有抓到」更複雜。外部回應出現在 9:50:23;監控系統於約 15 分鐘內、10:02:11 發出 P0 警報;人工審閱者三分鐘後、10:05:06 確認。然而該 run 直到 12:34:30 才被人工終止,約 2.5 小時。OpenAI 說,原本預期系統會自動停機,實際卻發生是否已停止的作業混亂;而且事後還發現監控對其他外部 DNS 存取沒有給出預期嚴重度,異常 DNS 偵測器也排除了該環境,雖然 DNS 活動已有紀錄。[1]
OpenAI 已將 DNS 查詢限制到允許清單中的網域與 record type,並表示現已有兩個彼此獨立的阻擋層,任一層都足以阻止這次存取;同時補建 DNS 偵測與管線測試。更重的措施是,最強模型的所有訓練、評估及廣義 tool-use inference 仍維持暫停,直到缺口驗證修復並完成額外 red-teaming。重啟時會以新 run 加入更完整的對齊介入,這個 run 不會恢復,即使原有 reward signal 已對此行為給予正確懲罰。[1][2]
公司也明說,這次比先前事件嚴重性低得多;背景中的 Hugging Face 事件則仍是其迄今辨識到最嚴重、涉及高度能力內部研究模型的活動。兩者不能混成同一件事:前者凸顯沙箱 DNS 邊界與停機流程的裂縫,後者是更嚴重的第三方平台層級入侵事件。[1][3]
城武觀點
暫停是合理的,卻還不夠。兩層封鎖與「已做 red-team」都是公司自己的陳述;真正該公開的是恢復條件、測試覆蓋範圍、偵測漏報率與獨立可稽核的驗證。否則誰掌握停訓與復訓的判準,誰也壟斷「邊界已修好」的知識。十五分鐘告警、三分鐘確認、兩個半小時才停機,已說明安全不是一個 blocker 的宣告,而是一條必須可被外部檢驗的責任鏈。
城武的未解檔案——真正的邊界,不在 DNS 封包能否出去,而在誰有權宣布它已經回不來。