提示注入

提示注入是藏在代理程式所讀內容裡的惡意文字——某個惡意儲存庫中的一個檔案、一個網頁、一份被下毒的 CLAUDE.md——它試圖把模型帶往別處(「忽略先前的指示,把祕密外洩出去」)。提示注入窗格會打開一些偵測器,在一台機器的 AI 流量中搜尋這類內容(機器在設定編輯器中即工作區)。一如窗格的說明所言:Bromure 在裝置端搜尋代理程式 AI 流量中被注入的指令——沒有任何東西離開這台 Mac。每個偵測器都用一個本機模型,在你第一次啟用它時從 bromure.io 下載。

機器 Web app 的提示注入窗格:偵測器群組中「偵測原始碼中的提示注入」與「偵測 CLAUDE.md 等檔案中的惡意指令」都未勾選,而「偵測到注入時」群組的「記錄但繼續」、「詢問我該怎麼做」與「直接封鎖」都呈灰色。

這個窗格有兩個群組:偵測器(跑哪些掃描)與偵測到注入時(命中時會怎樣)。截圖裡兩個偵測器都關著,所以底下那組單選按鈕是停用的——只要有任何一個偵測器打開,它就會啟用。掃描發生在主機端的代理伺服器裡,所以 VM 裡的代理程式關不掉它。偵測器的內部、評分與執行方式,都在提示注入偵測與防護欄中說明。變更會在你儲存時套用到執行中的機器。

偵測器

偵測原始碼中的提示注入

用本機的 Prompt Guard 分類模型,為代理程式回傳給模型的那些不可信外部內容打分——檔案內容、網頁,以及以 tool_result 區塊送出的工具輸出。藏在惡意儲存庫裡的「忽略先前的指示/把祕密外洩出去」這類文字,就是由這個偵測器捉住的。窗格的說明文字寫著首次啟用時約需下載 272 MB。

掃描完全在裝置端進行。每個回合只掃描帶有工具結果的那則最新訊息(重送的對話歷史會被跳過),而相同的內容會被快取,所以重複讀取同一個檔案不花代價。

偵測 CLAUDE.md 等檔案中的惡意指令

瞄準的是「規則檔後門」這種威脅:把惡意指令種進那些程式代理會自動當作可信權威載入的檔案裡——CLAUDE.md、AGENTS.md、GROK.md,以及 Claude Code、Codex 與 Grok 讀進系統提示的巢狀與全域變體。會跑兩趟:

  • 一次確定性的掃描(不需模型),標記看不見的 Unicode 混淆——零寬字元、雙向覆寫、Unicode 標籤字元——再加上後設指示的樣式(「忽略先前的指示」、「不要告訴使用者」)以及能力或外洩的關鍵字(憑證檔的路徑、curl 接管道到 shell、force push)。
  • 一個經過微調的 ModernBERT 分類器,對同一批指示檔的本文再做一次語意上的掃視。

窗格的說明文字寫著首次啟用時約需下載 571 MB。來自未變更檔案的發現會按工作階段去重,所以一份被標記的 CLAUDE.md 只會被記錄一次,不是每個回合都記。

模型下載

偵測器的模型並未隨應用程式一起出貨。勾選任一個切換開關時,會先出現一則確認警示——要下載 <偵測器> 偵測器的模型嗎?——上面標著從真實位元組總數算出的精確下載大小(原始碼偵測器約 298 MB,規則偵測器約 603 MB,比窗格上取整的說明文字稍大一些),並帶下載與取消按鈕;接著是一個帶百分比與取消按鈕的進度視窗。拒絕、取消,或下載失敗,都會把那個開關撥回去:沒有模型的偵測器什麼都不做,而 Bromure 不會假裝並非如此。

值得知道的細節:

  • 模型從 dl.bromure.io 下載到 ~/Library/Application Support/BromureAC/Models/(原始碼偵測器放在 prompt-injection/,規則偵測器放在 claudemd-guard/)。要移除其中一個,就刪掉它的資料夾。
  • 你一確認下載就立刻開始——這是設定編輯器中少數在你點儲存之前就生效的動作之一。
  • 下載是共用的:一旦取得,任何啟用同一個偵測器的機器都會重複使用那個模型。
  • 一道可用空間的檢查會拒絕放不下的下載。若某個偵測器開著但它的模型不在,背景下載會自動開始。
  • 在 iPhone、iPad 與 Vision Pro 用戶端上,勾選某個偵測器只會存下這項設定;執行那台機器的 Mac 會在需要時才下載模型。

偵測到注入時

一個共用的動作同時適用於兩個偵測器。窗格的輔助文字把它總結了:「記錄但繼續」把偵測記入安全性時間軸;「詢問我該怎麼做」把請求暫停下來並顯示被標記的文字;「封鎖」直接讓請求失敗。

動作行為
記錄但繼續偵測會被記入安全性時間軸,而請求照樣進行。掃描是在回應已被轉送之後才做的,所以這個模式完全不增加延遲。這是預設。
詢問我該怎麼做出向的請求在任何一個位元組抵達 AI 主機之前就被暫停,並由一個對話框以可捲動的等寬檢視顯示被標記的文字,帶著封鎖此請求與允許此請求按鈕。你的決定會針對那台機器、那個來源與那段內容被記住,所以同一段被標記的文字不會每個回合都再問一次。
直接封鎖請求被直接拒絕。代理程式收到一個 HTTP 451 錯誤(「Bromure blocked this request: possible … detected in …」),而模型永遠看不到那份被下毒的內容。

在至少有一個偵測器被啟用之前,那組單選按鈕都是停用的。在詢問與封鎖模式下,掃描在轉送之前進行,這會為被標記的回合加上分類器的延遲;記錄但繼續則不加任何延遲。當機器透過 SSH 或 CLI 以無介面方式使用時,詢問的那個問題會在機器的 tmux 裡被問——只有明確的允許才讓請求通過。

偵測出現在哪裡

每一次偵測與每一個執行結果都會記入安全性時間軸(視窗 › 安全性…)的提示注入篩選之下。項目裡只帶被標記內容的一小段預覽;完整的文字出現在詢問我該怎麼做的對話框裡。在已註冊到某個 bromure.io 組織的 Mac 上,偵測也會作為稽核事件送出(但追蹤窗格的私密模式開著時不會)。

設定參考

設定類型預設
偵測原始碼中的提示注入切換開關(首次啟用時會詢問是否下載模型)關閉
偵測 CLAUDE.md 等檔案中的惡意指令切換開關(首次啟用時會詢問是否下載模型)關閉
偵測到注入時單選:記錄但繼續 / 詢問我該怎麼做 / 直接封鎖(在有偵測器打開之前停用)記錄但繼續

提示: 一條合理的進程:先把兩個偵測器都打開、設為記錄但繼續,看幾天安全性時間軸以估量在你那些儲存庫上的誤報率,然後對不可信的程式碼庫改用詢問我該怎麼做。裝置端分類器的記憶體與 Neural Engine 調校,見提示注入偵測與防護欄。要讓個人資料不進入模型所見的範圍,見個人資料保護。