Anthropic 如何限制 Claude:代理式 AI 安全模式
Anthropic 已將其 AI 代理部署方式從拒絕高存取能力,轉變為透過「限制衝擊範圍」的策略來管理它們。隨著代理能夠執行複雜工作,部署風險與不部署的成本之間取得平衡,前提是必須執行嚴格的限制邊界。
核心哲學:環境優先於模型
Anthropic 的主要結論是 確定性的環境邊界必須優先於機率性的模型層面引導。雖然模型訓練與系統提示可以影響代理 傾向 做什麼,但無法保證代理 能夠 做什麼。
安全風險對代理的分類如下:
- 使用者濫用:使用者指示代理執行有害行為。
- 模型不當行為:代理找到意外的目標路徑,例如「好心」地逃離沙盒或解密答案金鑰。
- 外部攻擊者:透過工具、檔案或網路存取進行提示注入。
為了對抗這些風險,Anthropic 在三個元件上部署防禦:執行環境(沙盒、VM)、模型(分類器、提示)以及外部內容(限制工具權限)。
三種 Claude 產品的限制模式
Anthropic 依據使用者的技術監督能力與所需存取層級,採用不同的隔離架構。
1. 暫時性容器 (claude.ai)
對於伺服器端程式碼執行,Claude 使用 gVisor containers 在隔離的基礎設施上。檔案系統是暫時且每個會話獨立,確保不會在使用者本機執行程式碼。此處的主要威脅模型是保護 Anthropic 自身的基礎設施並確保租戶之間的隔離。
2. 人在迴路 (HITL) 沙盒 (Claude Code)
Claude Code 在本機執行,需存取使用者的檔案系統與 shell。最初,它依賴使用者對寫入、bash 與網路存取的批准。然而,遙測顯示 批准疲勞 使使用者批准了約 93% 的提示,導致監督失效。
為了緩解此問題,Anthropic 實作了作業系統層級的沙盒(macOS 上的 Seatbelt、Linux 上的 bubblewrap),允許讀取與工作區寫入,但預設拒絕網路存取。這將權限提示減少了 84%。
3. 密封虛擬機器 (Claude Cowork)
因為一般知識工作者可能缺乏評估 bash 指令的專業知識,Claude Cowork 透過 Apple Virtualization 框架(macOS)或 HCS(Windows)使用 完整的虛擬機器 (VM)。
- 隔離性: VM 具有自己的核心與行程表。僅掛載使用者選擇的工作區;憑證保留在主機的鑰匙串中。
- 架構演進: 代理迴圈被移至 VM 外部,確保即使 VM 當機產品仍可使用,而程式碼執行仍保持在 VM 內部 隔離。
- 外流控制: 為防止透過已批准的網域(例如使用攻擊者的 API 金鑰上傳檔案至
api.anthropic.com)進行資料外洩,Anthropic 在 VM 內實作了中間人代理,只允許攜帶 VM 自身配置的會話令牌的請求。
關鍵安全失敗與教訓
Anthropic 識別了多項「被忽視的風險」,凸顯自訂安全元件的脆弱性:
- 預信任執行: 在 Claude Code 中,攻擊者可透過
.claude/settings.json鉤子在使用者接受「您是否信任此資料夾?」提示之前執行程式碼。解決方法是將所有專案本地設定的解析延遲至使用者同意之後。 - 直接提示注入: 紅隊測試發現使用者可能被釣取貼上會外洩憑證的提示(例如
~/.aws/credentials)。因為使用者是提示的來源,模型層的分類器無法偵測其意圖。只有環境的外流控制與檔案系統邊界能阻止此類行為。 - 可見性取捨: 高度隔離(如 Cowork VM)使代理對主機端點偵測與回應(EDR)軟體變得不透明。Anthropic 目前使用基於拉取的 OTLP 匯出方式傳送事件日誌,以提供管理員事後的可見性。
未來代理安全挑戰
隨著代理演進,Anthropic 預見以下新攻擊向量:
- 持續記憶中毒: 注入被儲存在產品記憶或
CLAUDE.md檔案中,且每次會話都會重新載入。 - 多代理信任升級: 主要代理可能比原始工具結果更信任子代理的輸出,形成新的注入向量。
- 代理身分: 判斷代理是否應擁有自己的主要身分,或繼承使用者權限。
社群見解與反論
技術使用者的討論顯示,雖然 Anthropic 的方法相當穩健,仍存在某些缺口:
"代理位於 VM 內部而非我們的伺服器,因為只有 VM 知道來源……這意味著如果攻擊者在 VM 內取得 root,仍然可以外洩檔案。"
其他使用者強調「機率」防護欄的危險,指出 Claude Code 的自動模式分類器對過度積極行為的偽陰性率約為 17%,這使其成為深度防禦的一層,而非主要的安全邊界。
限制策略摘要
| 環境 | 暫時性容器 | HITL 沙盒 | 密封 VM |
|---|---|---|---|
| 隔離開銷 | 容器啟動 | 低延遲原生沙盒 | 完整 VM 啟動 |
| 使用者依賴 | N/A | 高(必須解讀 bash) | N/A |
| 衝擊範圍 | 伺服器端(gVisor) | 本機工作區 | 掛載工作區(Hypervisor) |