防火牆只對透過 MCP 派發路徑或評估鉤子路由穿越閘道的目的地看見外向請求。
你的代理完全在其自己行程內執行的工具在其視野之外。透過閘道路由你的代理的
網路綁定工具呼叫,它們就受到治理。
1. 攻擊如何運作
透過代理的標準路徑分三步執行:- 注入——代理讀取攜帶嵌入指令的不可信內容(一個網頁、一份擷取的文件、一個 CRM 備註)。
- 收集——注入的指令告訴代理使用它已擁有的工具收集敏感材料——API 金鑰、資料庫行、使用者 PII。
- 外洩——代理被告知通過擷取形狀工具發送該材料:
http_fetch、web_search、fetch_url或request。 目的地是攻擊者控制的。
169.254.169.254(雲端元資料)、
內部 Redis 連接埠或另一個私有服務,而不是外部主機。
參見提示注入了解注入步驟;
本頁重點是網路步驟。
2. 外向允許清單——鎖定外向目的地
最持久的防禦是外向允許清單:列舉你的代理被合法允許觸及的主機, 並拒絕其他一切。 外向規則使用stage: egress 和 egress 欄位。裁決控制極性——
allow 通過列出的目的地;較低優先順序的 deny 兜底封鎖其餘的:
169.254.169.254 這樣的目的地
仍然被 10.0.0.0/8 CIDR 拒絕條目捕捉。被封鎖的呼叫返回帶有錯誤代碼 firewall_blocked 的 HTTP 400。
要拒絕已知的惡意範圍而不需要明確允許清單,撰寫一個針對性的外向拒絕規則,
列出雲端元資料端點(169.254.169.254)和 RFC-1918 私有範圍(10.0.0.0/8、
172.16.0.0/12、192.168.0.0/16)。在更低的優先順序數字上疊加你的允許清單,
使拒絕規則先被評估。
3. 在名稱層面封鎖擷取形狀工具
在外向目的地甚至被評估之前,你可以完全移除這個能力。tight 自主等級
以工具名稱 glob 拒絕 http_fetch、web_search、fetch_url 和 request,
作為 SSRF 和外洩的最後防線。如果你的代理不需要任何這些工具,
tight 在一步中移除攻擊面:
tight 姿態的情況下拒絕擷取工具,撰寫一個 inbound 表面拒絕規則。
inbound 在模型能夠選擇工具之前封鎖工具——代理在其工具清單中永遠不接收該能力:
4. Secrets Blocker 防護欄——在提示詞層面阻止憑證
Secrets Blocker 防護欄在輸入階段執行,在請求離開閘道之前掃描提示詞中的 AWS 風格存取金鑰、OpenAI 金鑰、Anthropic 金鑰、GitHub 權杖和類似的憑證模式。 如果偵測到密鑰,請求就被封鎖——憑證永遠不會到達模型,也永遠不會出現在工具呼叫中。 從防護欄面板啟用它,或作為tight 自主等級的一部分。它獨立於防火牆外向規則。
| 威脅 | 阻止它的層次 |
|---|---|
| 提示詞攜帶 API 金鑰 | Secrets Blocker(輸入防護欄) |
| 代理呼叫擷取工具到攻擊者主機 | 外向允許/拒絕規則 |
| 向模型公告的擷取形狀工具 | Inbound 拒絕規則或 tight 自主 |
| 代理觸及雲端元資料或 RFC-1918 | 列出那些 CIDR 的外向拒絕規則 |
5. 用影子模式推出
如果你不確定你的代理今天合法觸及哪些主機,在強制執行之前以影子模式開始:- 使用你預期的允許清單建立外向規則,並在政策上設定
shadow_mode: true。 - 觀察 Events 動態——將被封鎖的呼叫以
[shadow] would deny加目的地出現。 - 調整
allow清單,直到只有攻擊者可觸及的目的地會被拒絕,然後禁用影子模式以開始強制執行。
6. 下一步去哪裡
防火牆規則參考
完整的匹配語言——外向清單、CIDR、引數子句和所有裁決。
代理防火牆概覽
政策、表面、自主等級和可觀測性。
提示注入
將代理引導到外洩的注入步驟。
MCP 工具投毒
登錄擷取形狀能力的惡意 MCP 工具。
