概述

Claude Code 具有原生沙箱隔離功能,為代理執行提供更安全的環境,同時減少對持續權限提示的需求。沙箱隔離不是要求對每個 bash 命令進行權限批准,而是預先創建定義的邊界,讓 Claude Code 能夠以更低的風險更自由地工作。 沙箱化 bash 工具使用作業系統級別的原語來強制執行檔案系統和網路隔離。

為什麼沙箱隔離很重要

傳統的基於權限的安全性需要對 bash 命令進行持續的使用者批准。雖然這提供了控制,但可能導致:
  • 批准疲勞:重複點擊「批准」可能導致使用者對他們批准的內容注意力不足
  • 生產力降低:持續的中斷會減慢開發工作流程
  • 自主性受限:當等待批准時,Claude Code 無法高效工作
沙箱隔離通過以下方式解決這些挑戰:
  1. 定義清晰的邊界:精確指定 Claude Code 可以訪問的目錄和網路主機
  2. 減少權限提示:沙箱內的安全命令不需要批准
  3. 維護安全性:嘗試訪問沙箱外的資源會觸發即時通知
  4. 啟用自主性:Claude Code 可以在定義的限制內更獨立地運行
有效的沙箱隔離需要同時進行檔案系統和網路隔離。沒有網路隔離,受損的代理可能會洩露敏感檔案,如 SSH 金鑰。沒有檔案系統隔離,受損的代理可能會對系統資源進行後門操作以獲得網路訪問權限。配置沙箱隔離時,重要的是確保您配置的設定不會在這些系統中造成繞過。

工作原理

檔案系統隔離

沙箱化 bash 工具將檔案系統訪問限制在特定目錄:
  • 預設寫入行為:對當前工作目錄及其子目錄的讀寫訪問
  • 預設讀取行為:對整個電腦的讀取訪問,除了某些被拒絕的目錄
  • 被阻止的訪問:在沒有明確權限的情況下無法修改當前工作目錄外的檔案
  • 可配置:通過設定定義自訂允許和拒絕的路徑

網路隔離

網路訪問通過在沙箱外運行的代理伺服器進行控制:
  • 域名限制:只能訪問已批准的域名
  • 使用者確認:新的域名請求會觸發權限提示
  • 自訂代理支援:進階使用者可以在出站流量上實施自訂規則
  • 全面覆蓋:限制適用於所有指令碼、程式和由命令生成的子流程

作業系統級別的強制執行

沙箱化 bash 工具利用作業系統安全原語:
  • Linux:使用 bubblewrap 進行隔離
  • macOS:使用 Seatbelt 進行沙箱強制執行
這些作業系統級別的限制確保由 Claude Code 命令生成的所有子流程都繼承相同的安全邊界。

入門

啟用沙箱隔離

您可以通過運行 /sandbox 斜杠命令來啟用沙箱隔離:
> /sandbox
這會使用預設設定啟動沙箱化 bash 工具,允許訪問您的當前工作目錄,同時阻止訪問敏感系統位置。

配置沙箱隔離

通過您的 settings.json 檔案自訂沙箱行為。有關完整配置參考,請參閱 設定
模式支援:
  • 路徑支援絕對路徑(/home/user)、相對路徑(./src)、主目錄(~)和萬用字元(**/*.json
  • 域名支援精確匹配(github.com)、萬用字元(*.npmjs.org)和子域名

安全優勢

防止提示注入

即使攻擊者成功通過提示注入操縱 Claude Code 的行為,沙箱也能確保您的系統保持安全: 檔案系統保護:
  • 無法修改關鍵配置檔案,如 ~/.bashrc
  • 無法修改 /bin/ 中的系統級檔案
  • 無法讀取在您的 Claude 權限設定 中被拒絕的檔案
網路保護:
  • 無法將資料洩露到攻擊者控制的伺服器
  • 無法從未授權的域名下載惡意指令碼
  • 無法對未批准的服務進行意外的 API 呼叫
  • 無法聯絡任何未明確允許的域名
監控和控制:
  • 所有沙箱外的訪問嘗試都在作業系統級別被阻止
  • 當邊界被測試時,您會收到即時通知
  • 您可以選擇拒絕、允許一次或永久更新您的配置

減少攻擊面

沙箱隔離限制了以下情況造成的潛在損害:
  • 惡意依賴項:具有有害程式碼的 NPM 套件或其他依賴項
  • 受損指令碼:具有安全漏洞的構建指令碼或工具
  • 社交工程:欺騙使用者運行危險命令的攻擊
  • 提示注入:欺騙 Claude 運行危險命令的攻擊

透明操作

當 Claude Code 嘗試訪問沙箱外的網路資源時:
  1. 操作在作業系統級別被阻止
  2. 您會收到即時通知
  3. 您可以選擇:
    • 拒絕請求
    • 允許一次
    • 更新您的沙箱配置以永久允許它

安全限制

  • 網路沙箱隔離限制:網路過濾系統通過限制流程允許連接的域名來運行。它不會以其他方式檢查通過代理的流量,使用者負責確保他們只在其策略中允許受信任的域名。
使用者應該意識到允許廣泛域名(如 github.com)可能帶來的潛在風險,這可能允許資料洩露。此外,在某些情況下,可能可以通過 域名前置 繞過網路過濾。
  • 通過 Unix 套接字的權限提升:allowUnixSockets 配置可能會無意中授予對強大系統服務的訪問權限,這可能導致沙箱繞過。例如,如果它用於允許訪問 /var/run/docker.sock,這將有效地通過利用 docker 套接字授予對主機系統的訪問權限。建議使用者仔細考慮他們通過沙箱允許的任何 unix 套接字。
  • 檔案系統權限提升:過於寬泛的檔案系統寫入權限可能導致權限提升攻擊。允許寫入包含 $PATH 中可執行檔案的目錄、系統配置目錄或使用者 shell 配置檔案(.bashrc.zshrc)可能導致當其他使用者或系統流程訪問這些檔案時在不同安全上下文中執行程式碼。
  • Linux 沙箱強度:Linux 實現提供強大的檔案系統和網路隔離,但包括 enableWeakerNestedSandbox 模式,該模式使其能夠在 Docker 環境中工作而無需特權命名空間。此選項會大大削弱安全性,應僅在其他隔離方式得到強制執行的情況下使用。

進階用法

自訂代理配置

對於需要進階網路安全的組織,您可以實施自訂代理來:
  • 解密和檢查 HTTPS 流量
  • 應用自訂過濾規則
  • 記錄所有網路請求
  • 與現有安全基礎設施集成
{
  "sandbox": {
    "httpProxyPort": 8080,
    "socksProxyPort": 8081,
  }
}

與現有安全工具的集成

沙箱化 bash 工具與以下工具配合使用:
  • IAM 策略:與 權限設定 結合以實現深度防禦
  • 開發容器:與 devcontainers 一起使用以實現額外隔離
  • 企業策略:通過 託管設定 強制執行沙箱配置

最佳實踐

  1. 從限制性開始:從最少權限開始,根據需要擴展
  2. 監控日誌:查看沙箱違規嘗試以了解 Claude Code 的需求
  3. 使用環境特定配置:開發和生產環境的不同沙箱規則
  4. 與權限結合:將沙箱隔離與 IAM 策略一起使用以實現全面安全
  5. 測試配置:驗證您的沙箱設定不會阻止合法工作流程

開源

沙箱執行時可作為開源 npm 套件提供,供您在自己的代理專案中使用。這使更廣泛的 AI 代理社群能夠構建更安全、更安全的自主系統。這也可用於沙箱化您可能希望運行的其他程式。例如,要沙箱化 MCP 伺服器,您可以運行:
npx @anthropic-ai/sandbox-runtime <command-to-sandbox>
有關實現詳情和原始程式碼,請訪問 GitHub 儲存庫

限制

  • 效能開銷:最小,但某些檔案系統操作可能稍慢
  • 相容性:某些需要特定系統訪問模式的工具可能需要配置調整,或甚至可能需要在沙箱外運行
  • 平台支援:目前支援 Linux 和 macOS;計劃支援 Windows

另請參閱

  • 安全性 - 全面的安全功能和最佳實踐
  • IAM - 權限配置和訪問控制
  • 設定 - 完整配置參考
  • CLI 參考 - 命令列選項,包括 -sb