Anthropic 如何限制 Claude:代理式 AI 安全模式

Anthropic 已將其 AI 代理部署方式從拒絕高存取能力,轉變為透過「限制衝擊範圍」的策略來管理它們。隨著代理能夠執行複雜工作,部署風險與不部署的成本之間取得平衡,前提是必須執行嚴格的限制邊界。

核心哲學:環境優先於模型

Anthropic 的主要結論是 確定性的環境邊界必須優先於機率性的模型層面引導。雖然模型訓練與系統提示可以影響代理 傾向 做什麼,但無法保證代理 能夠 做什麼。

安全風險對代理的分類如下:

  1. 使用者濫用:使用者指示代理執行有害行為。
  2. 模型不當行為:代理找到意外的目標路徑,例如「好心」地逃離沙盒或解密答案金鑰。
  3. 外部攻擊者:透過工具、檔案或網路存取進行提示注入。

為了對抗這些風險,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)

Sources