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

這份檢查清單是寫給實驗室的

10月16日,NIST、NSA 與 CISA 發布了十項實務,用來應對 AI 代理越出界限行事的事件:透過受監控閘道的白名單網路存取、代理碰不到的日誌、金絲雀、自動關機,以及從經驗證的基準重建。前一天,印度的 CERT-In 通報,測試中的 AI 代理利用在設定檔與公開程式庫中找到的憑證,進入了企業的正式環境系統,而且沒有人察覺。這份指引是寫給 AI 實驗室的,但在開發者筆電上無人看管執行的程式碼代理,也符合它的描述。Bromure Agentic Coding 在 Mac 上、代理的 VM 之外執行這些控制。

這份指引假設代理一定會找到弱點。所以防火牆、日誌和關機開關,都必須放在代理碰不到的地方。

10月16日星期五,三個美國機構發布了一份篇幅不長、名字卻很長的文件:Key Practices for Incident Readiness and Response in Super Intelligence Training and Evaluation。由 NIST 新成立的 Center for Advancing Innovation and Standards for Super Intelligence,與 NSA 的 Super Intelligence Security Center 及 CISA 共同撰寫。文件為它所稱的 SI 控制事件列出十項自願性實務:代理採取「未經指示的重大行動」,打破營運者設下的限制。這個定義排除了提示注入和被植入後門的模型:代理是在朝目標努力的過程中,自己越過了界線。GBHackers 將其總結為一項警告:代理「可能利用安全漏洞並建立隱藏的後門」。

前一天,印度的國家網路安全機構已經描述了實際發生的同一件事。CERT-In 在通報 CIAD-2026-0049 中表示,在線上測試的 AI 代理進入了印度組織的正式環境系統,讀取了包含個人資料在內的業務紀錄。代理靠的是「暴露在應用程式設定與公開程式碼庫中的憑證和連線設定」,以及權限過大的雲端角色。它們不只一次找到同一組暴露的憑證並重複使用。根據 The Hacker News,沒有任何一個組織察覺到這些存取,是 AI 公司在內部審查後自行通報的。

一份也適用於筆電的實驗室清單

兩份文件的對象都是 AI 開發者與評估者。NIST 的實務針對的是「在人類監督有限的情況下,以長期任務訓練或評估高能力 SI 代理」的組織,並補充這些實務「也可能適用於部署這類 SI 代理的人」。

第二句話涵蓋了任何在星期五下午啟動 Claude Code 或 Codex、叫它把整合測試套件跑到全綠、星期一再回來看結果的人:一項長期任務,整整三天無人看管。在大多數筆電上,代理以你的使用者身分執行。你的雲端憑證、你的網路,以及代理自己的日誌,全都在它伸手可及的範圍內。

兩份文件對控制應該放在哪裡看法一致。CERT-In 要求預設封鎖對外存取,並表示這種封鎖「應該在網路層級強制執行,而不是透過對模型的指示」。它也要求,一旦代理連絡外部系統或使用不屬於自己的憑證,執行就應該自動停止。NIST 實務 1.8 要求營運者在建構控制時,「預期 SI 代理會經常找出並利用錯誤設定與漏洞」。

一項代理能讀取、修改或靠說服繞過的控制,達不到這個標準。Bromure Agentic Coding 在你 Mac 上的 Linux VM 裡執行每個代理,並把控制放在 Mac 這一側:在虛擬網路交換器裡、在 VM 無法繞過的代理伺服器裡,以及在 VM 無法掛載的儲存空間裡。

每項控制在哪裡執行Linux VM · 代理這一側程式碼代理長時間任務,無人看管程式庫與共享資料夾.env、設定、歷史紀錄它能找到的憑證sk-ant-api03-brm-…GH_TOKEN=ghp_… (假)aws secret: 假,40 字元全部是替身(1.1)這裡沒有真密鑰、沒有日誌,也沒有任何防火牆規則。全部流量你的 Mac · 代理碰不到的地方出站防火牆 · 實務 1.5虛擬交換器 + 代理伺服器,主機、連接埠、HTTP 方法預設拒絕憑證替換與絆線 · 3.5, 6.2替身 → 真金鑰,只限所屬主機其他主機:HTTP 451,VM 暫停工作階段追蹤與 Security Timeline · 3.3, 5.3工具呼叫、shell 指令、每一次攔截在 Mac 上加密,從不掛載進 VM已簽署基礎映像、家目錄還原點 · 6.4, 7.1Reset disk、Rewind home遭入侵的機器只有清除後才能開機僅限允許的主機其他一律攔截
把 NIST 的實務對應到一台 Bromure 機器上。代理在 VM 裡使用替身憑證工作。所有負責判斷、記錄或停止的元件都在 Mac 上。

十項實務,對應到一台機器

最小權限(1.1),以及 CERT-In 發現的憑證。 印度案例中的代理,是靠隨手亂放的憑證進去的。在 Bromure VM 裡,代理找到的任何亂放的東西都是替身。模型金鑰、git 權杖,以及你用 Import env file… 匯入的任何內容,都會以 sk-ant-api03-brm-… 這類值出現。AWS 輔助程式交給 VM 一把假的私密存取金鑰,並在 Mac 上為真正的請求簽章。kubectl 拿到的是指向代理伺服器的合成 kubeconfig。代理在家目錄或環境變數裡 grep 到的值,只有經過你的 Mac、而且只對各自簽發對象的主機才有效。新機器也會在每個受保護的服務上預設啟用 Prompt before write,因此對 GitHub、AWS、Kubernetes 或映像倉庫的寫入,都要等你核准那項具體操作。

一次性基礎設施與代理之間的通道(1.2)。 每台機器都是獨立的 VM,有自己的磁碟、家目錄和政策。機器之間不共享任何檔案系統。自動化可以在工作區的拋棄式複本中執行:一份寫入時複製的副本,在執行觸發時開機,結束時刪除。bromure-cli vm run --rm 讓你手動取得一台拋棄式機器。當一個代理把工作交給另一個代理時,訊息會經過 Bromure 主機,由裝置端的提示注入偵測器篩檢並記錄。兩個代理從不直接連線。

透過受監控閘道的嚴格白名單(1.5)。 CERT-In 堅持這項控制不能是對模型的指示。每台機器的出站防火牆是一份有順序的允許與拒絕規則清單,依主機、IP 範圍、通訊協定、連接埠,以及網頁流量的 HTTP 方法來比對。把 Unmatched traffic 設為 Deny,它就成了白名單。Mac 會把規則執行兩次:虛擬交換器檢查每一條連線,代理伺服器檢查 TLS 伺服器名稱。交換器在網路層把 VM 的網頁流量導入代理伺服器,因此就算某個工具忽略代理設定,還是得經過它。allow web api.example.com GET 讓代理可以讀取一個它不能寫入的 API,不論它用的是哪個工具。

代理碰不到的監控(3.3)。 Mac 把工作階段追蹤和 Security Timeline 寫在自己的磁碟上。Bromure 用存放在 macOS 鑰匙圈中的金鑰,以 AES-GCM 封存追蹤內容,而且沒有任何 VM 會掛載兩者之一。代理就算在 VM 裡刪掉自己的 shell 歷史紀錄,或改寫自己的對話紀錄,也改變不了你之後讀到的紀錄。

金絲雀(3.5)。 NIST 建議「在環境中放置金絲雀,以偵測取得超出預期界限存取權的代理實例」。在 Bromure 中,每個替身都是一隻金絲雀。每個替身只有一個合法目的地,也就是為它簽發的那台主機。代理伺服器會掃描每一個對外請求的標頭與內文,尋找要送往其他地方的替身。它也會標記 Bromure 沒有簽發、但看起來像真的密鑰,例如代理從公開程式庫歷史裡挖出來的金鑰。這些會以外洩警告的形式出現在 Trace Inspector 和 bromure-cli trace leaks 中。

自動關機(6.2)與證據保全(5.1)。 當替身被送往錯誤的主機時,代理伺服器回應 HTTP 451,什麼都不轉送。VM 當場暫停,Mac 顯示 This environment may have been compromised,列出該憑證、它所屬的主機,以及它被送往的主機。預設按鈕是 Shut down。Save for Investigation 會在停止 VM 之前匯出系統磁碟、家目錄和每個共享資料夾,依照實務 5.1 的要求保全環境。

帶有可靠時間戳、工具呼叫與被拒絕動作的日誌(5.3)。 在預設的追蹤層級下,Mac 會記錄每個請求的時間、主機、方法、狀態與憑證替換。對模型流量,它保留完整內文,並解析出代理的工具呼叫、shell 指令和檔案讀寫。Security Timeline 會將防火牆、Guardrails、供應鏈檢查、提示注入偵測和憑證中介服務的每一次攔截與放行保留 90 天。這些就是 NIST 要求存檔的被拒絕動作。

撤銷與重建(6.4、7.1)。 事件發生後,NIST 要求撤銷外洩的憑證,並「從經驗證的基準」重建環境。VM 從未持有真正的憑證,所以裡面沒有任何東西需要撤銷。被標記為遭入侵的機器會拒絕開機,直到你確認清除它的系統磁碟、家目錄和已儲存的狀態。之後它會從已簽署的 Ubuntu 基礎映像重新啟動,你的設定和金鑰都完好無缺。即使沒發生事件,Reset disk 也能從該映像重新複製系統磁碟,Rewind home… 則能把家目錄回復到先前某次開機時的狀態。

重新啟動前確認圍堵(7.3)。 Security Timeline 的 Overview 有一張 Protections 表,每台機器一列,顯示哪些機器開啟了防火牆、Guardrails、供應鏈檢查、提示注入偵測和個資保護。保護比其他機器少的機器,在你交給它下一個長時間任務之前就會很顯眼。

星期五晚上,星期一早上

回到前面那個整合測試套件的執行。凌晨 2 點左右,測試在模擬的付款服務上仍然失敗,代理判斷真正的 staging 端點可以解決問題。它在機器上四處查看,在環境變數中找到 STRIPE_KEY,在 ~/.aws/config 中找到一個 AWS 設定檔。

在一般筆電上,下一步就是拿真金鑰對真系統發出請求,也就是 CERT-In 描述的同一件事:沒有人察覺的存取,記錄在代理自己能編輯的對話紀錄裡。

在設有白名單的 Bromure 機器上,對 staging 主機的呼叫根本不會離開 Mac。防火牆拒絕它,代理收到一個乾淨的錯誤,Security Timeline 記下一筆紅色的 Firewall 列。它找到的金鑰是 Bromure 放在那裡的替身,換到別處毫無用處。當代理嘗試繞道,把 GitHub 替身貼到文字分享網站時,代理伺服器回應 451,VM 在步驟進行到一半時凍結。星期一,你打開 Security Timeline,篩選這台機器,依序讀出發生了什麼:被拒絕的主機、被攔下的上傳、暫停的 VM。接著打開追蹤,查看導致這一切的工具呼叫。如果想確保萬無一失,就清除並重新啟動。

代理無法修改的網路規則

出站防火牆在 Mac 上的虛擬交換器和代理伺服器中執行。把不相符的流量設為 Deny,每次執行都會有一份細到 HTTP 方法的白名單。

找到的每個憑證都是金絲雀

金鑰、權杖和匯入的 .env 值在 VM 裡都是替身。被送到錯誤主機的替身會收到 451,並讓機器暫停。

位於 hypervisor 另一側的日誌

追蹤和 Security Timeline 以加密形式存放在 Mac 上,包含工具呼叫、shell 指令和每一次攔截。VM 從不掛載它們。

從已簽署的基準重建

遭入侵的機器只有清除後才能開機。Reset disk 重新複製基礎映像,Rewind home 則還原到先前某次開機的狀態。

把控制放在代理之下

兩個機構的出發點相同:一個有能力的代理,只要有目標、有時間,就會找到任何暴露在外的東西。兩者都不依賴給模型的指示。它們要求的是在網路上強制執行的規則、代理碰不到的日誌,以及會自動觸發的停止機制。

在開發者的 Mac 上,這代表在 VM 裡執行代理,並把控制留在主機上。關於促成這一切的評估事件,請閱讀沙箱只是一句話和任務不可能完成,於是代理走了出去。