Anthropic Claude Code 沙箱化:增强安全性与自主性
Anthropic 为 Claude Code 引入了沙箱化功能,通过建立严格、预定义的操作边界,显著提升开发者安全性和代理自主性,从而减少对用户频繁权限提示的需求。
代码代理中的安全性与自主性挑战
Claude Code 为开发者提供代理式体验,允许 Claude 编写、测试、调试代码、导航代码库并运行命令。这种访问级别带来了固有风险,尤其是涉及提示注入攻击时。
Claude Code 传统上基于权限模型运行,默认只读,大多数修改或命令需要用户明确批准。这种不断点击“批准”的需求可能导致“批准疲劳”,从而可能危及开发周期的安全性。
沙箱化解决方案
沙箱化通过创建预定义边界来解决这些挑战,使 Claude 能够在其中更自由地操作,大幅减少权限提示次数,同时提升整体安全性。这种方法让 Claude 在保持安全的同时更自主地运行。
有效的沙箱化依赖于实施两个关键的隔离边界:
文件系统隔离
文件系统隔离确保 Claude 只能访问或修改特定、已批准的目录。此边界对于防止提示注入的代理修改其指定工作区之外敏感的系统文件至关重要。
网络隔离
网络隔离确保 Claude 只能连接到已批准的服务器。这可以防止被入侵的代理泄露敏感信息或从未授权的外部来源下载恶意软件。
必须注意,文件系统隔离和网络隔离必须同时实施;没有网络隔离,被入侵的代理可能窃取 SSH 密钥等敏感文件,而没有文件系统隔离,被入侵的代理可能逃出沙箱以获取网络访问权限。
用于自主执行的沙箱化 Bash 工具
Anthropic 引入了一个新的沙箱运行时,以研究预览形式提供测试版,允许用户精确定义代理可以访问的目录和网络主机,而无需管理完整容器的开销。该运行时用于在 Claude Code 中对 bash 工具进行沙箱化。
这个沙箱化的 bash 工具使 Claude 能够在定义的限制内自主、安全地执行命令。如果 Claude 尝试访问沙箱之外的资源,用户会立即收到通知,并必须选择是否允许该操作。
沙箱化 Bash 工具的技术实现
此功能基于操作系统级原语构建,特别是 Linux bubblewrap 和 MacOS seatbelt,它们在操作系统层面强制执行限制。沙箱强制执行两个关键限制:
- 文件系统隔离: 它授予对当前工作目录的读写访问权限,但阻止对该目录之外文件的任何修改。
- 网络隔离: 它将互联网访问限制为连接到外部代理服务器的 Unix 域套接字。该代理强制执行域限制,并处理新请求域的用户确认。代理还可以自定义以对出站流量强制执行任意规则。
文件路径和域均可由用户配置。
Claude Code 网页版:安全的云端执行
Claude Code 网页版允许用户在云端的隔离沙箱中运行 Claude Code 会话。此架构旨在即使沙箱中运行的代码被入侵,也能保护用户。
通过自定义代理实现安全的 Git 集成
为了在版本控制工作流中保持安全性,Claude Code 网页版对所有 Git 交互使用自定义代理服务。此代理服务确保敏感凭据(如签名密钥或 Git 凭据)永远不会与 Claude Code 一起存储在沙箱中。
当沙箱内的 Git 客户端进行身份验证时,它会连接到这个自定义代理。代理在将请求发送到 GitHub 之前执行多个验证步骤:验证凭据,确认 Git 交互的内容(例如,确保推送仅到配置的分支),最后附加正确的身份验证令牌。
采用与开源可用性
Anthropic 已通过 anthropic-experimental/sandbox-runtime GitHub 仓库将沙箱化技术开源,鼓励其他团队采用此技术以增强其自身代理的安全态势。
开发者可以通过在 Claude Code 中运行 /sandbox 开始使用沙箱化的 bash 工具。此外,用户可以通过访问 Claude Code 网页版来使用该工具的云端版本。