返回 文章 apply CMS 文章

Anthropic 为 Claude Code 引入沙箱技术:权限提示减少 84%,兼顾安全与自主

Anthropic 用操作系统级沙箱同时解决 Claude Code 的安全风险与权限提示疲劳,内部实测权限提示减少 84%。

Claude Code沙箱AI 安全提示注入
成长分 / 100 79 综合收获、行动、留存与影响

Anthropic 为 Claude Code 引入沙箱技术:权限提示减少 84%,兼顾安全与自主
为什么值得读了解 Anthropic 如何用操作系统级原语(Linux bubblewrap、macOS seatbelt)为编码代理构建安全边界,而非依赖容器。

理解为什么有效的沙箱必须同时具备文件系统隔离和网络隔离,以及单一隔离为何不足。

关键洞察
  1. Claude Code 默认采用基于权限的只读模型,大多数操作需明确批准,但频繁批准会导致“批准疲劳”,反而降低安全性。
  2. 沙箱通过预定义边界让 Claude 更自主地运行,内部使用中权限提示减少 84%,同时安全性得到提升。
  3. 有效的沙箱必须同时具备文件系统和网络隔离:缺少网络隔离可能被窃取 SSH 密钥,缺少文件系统隔离则可能逃逸沙箱获得网络访问。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:6125

在 Claude Code 中,Claude 与你并肩编写、测试和调试代码,浏览你的代码库、编辑多个文件,并运行命令来验证自己的工作。让 Claude 拥有如此多的代码库和文件访问权限可能带来风险,尤其是在遭遇提示词注入(prompt injection)的情况下。

为了解决这一问题,我们在 Claude Code 中推出了两项基于沙箱技术的新功能。它们都旨在为开发者提供更安全的工作环境,同时让 Claude 能更自主地运行,并减少权限提示。在我们的内部使用中,我们发现沙箱可以安全地将权限提示减少 84%。通过划定 Claude 可以自由工作的明确边界,这两项功能既提升了安全性,也增强了自主性。

保障 Claude Code 用户的安全

Claude Code 采用基于权限的模型:默认情况下是只读的,这意味着在进行修改或运行任何命令之前,它都会先请求许可。也有一些例外:我们会自动放行 echo 或 cat 这类安全命令,但大多数操作仍需要明确批准。

不断点击“批准”会拖慢开发节奏,还可能导致“批准疲劳”:用户可能不再仔细留意自己批准的内容,从而使开发变得更不安全。

为此,我们为 Claude Code 推出了沙箱功能。

沙箱:更安全、更自主的方式

沙箱预先划定边界,Claude 可以在边界内更自由地工作,而不必对每个操作都请求许可。启用沙箱后,权限提示会大幅减少,安全性也随之提高。

我们的沙箱方案建立在操作系统级功能之上,以实现两道边界:

  1. 文件系统隔离,确保 Claude 只能访问或修改特定目录。这对于防止遭受提示词注入的 Claude 修改敏感系统文件尤为重要。
  2. 网络隔离,确保 Claude 只能连接到已批准的服务器。这可以防止遭受提示词注入的 Claude 泄露敏感信息或下载恶意软件。

值得注意的是,有效的沙箱需要同时具备文件系统隔离和网络隔离。没有网络隔离,被攻陷的智能体可能会窃取 SSH 密钥等敏感文件;没有文件系统隔离,被攻陷的智能体则可能轻易逃出沙箱并获得网络访问权限。正是同时采用这两种技术,我们才能为 Claude Code 用户提供更安全、更快速的智能体体验。

Claude Code 中的两项新沙箱功能

沙箱化的 bash 工具:无需权限提示即可安全执行 bash

我们推出了全新的沙箱运行时,目前以研究预览形式提供 beta 版本。它让你能精确定义智能体可以访问哪些目录和网络主机,而无需承担启动和管理容器的开销。它可用于对任意进程、智能体和 MCP 服务器进行沙箱隔离,同时也以开源研究预览的形式提供。

在 Claude Code 中,我们用这个运行时对 bash 工具进行沙箱隔离,让 Claude 在你设定的限制范围内运行命令。在安全的沙箱内,Claude 可以更自主地运行,并在无需权限提示的情况下安全地执行命令。如果 Claude 试图访问沙箱之外的内容,你会立即收到通知,并可以选择是否允许。

我们基于 Linux bubblewrap 和 MacOS seatbelt 等操作系统级原语来构建,在操作系统层面强制执行这些限制。它们覆盖的不仅是 Claude Code 的直接交互,还包括该命令所衍生的任何脚本、程序或子进程。如上所述,这个沙箱同时强制执行以下两点:

  1. 文件系统隔离:允许对当前工作目录进行读写,但禁止修改其之外的任何文件。
  2. 网络隔离:仅允许通过一个 unix domain socket 访问互联网,该套接字连接到运行在沙箱之外的代理服务器。该代理服务器对进程可连接的域名施加限制,并处理用户对新请求域名的确认。如果你希望进一步提高安全性,我们还支持自定义该代理,对出站流量强制执行任意规则。

这两个组件都是可配置的:你可以轻松选择允许或禁止特定的文件路径或域名。

这张图展示了 Claude Code 中沙箱的工作方式。
Claude Code 的沙箱架构通过文件系统和网络控制来隔离代码执行:自动放行安全操作,阻止恶意操作,仅在必要时请求许可。

沙箱确保即使提示词注入成功,其影响也会被完全隔离,不会危及用户的整体安全。这样一来,即便 Claude Code 被攻陷,也无法窃取你的 SSH 密钥,或向攻击者的服务器回传数据。

要开始使用这项功能,请在 Claude Code 中运行 /sandbox,并查看我们安全模型的更多技术细节。

为了让其他团队更容易构建更安全的智能体,我们已将这项功能开源。我们认为,其他团队应当考虑为自己的智能体采用这项技术,以提升其安全态势。

Claude Code on the web:在云端安全地运行 Claude Code

今天,我们还发布了 Claude Code on the web,让用户可以在云端的隔离沙箱中运行 Claude Code。Claude Code on the web 将每个 Claude Code 会话放在独立的沙箱中执行,它在其中可以安全可靠地完整访问自己的服务器。我们在设计这个沙箱时,确保敏感凭据(如 git 凭据或签名密钥)永远不会与 Claude Code 一同位于沙箱内。这样一来,即便沙箱中运行的代码被攻陷,用户也不会受到进一步的伤害。

Claude Code on the web 使用一个自定义代理服务,透明地处理所有 git 交互。在沙箱内,git 客户端使用专门构建的限定范围凭据向该服务认证。代理会验证这个凭据和 git 交互的内容(例如确保只推送到已配置的分支),然后附上正确的认证令牌,再将请求发送到 GitHub。

这张图描绘了 Claude Code on the web 如何使用自定义代理处理所有 git 交互。
Claude Code 的 Git 集成会将命令路由到一个安全代理,由其验证认证令牌、分支名称和仓库目标,从而在保证版本控制工作流安全的同时,防止未经授权的推送。

开始使用

我们全新的沙箱化 bash 工具和 Claude Code on the web,为使用 Claude 开展工程工作的开发者在安全性和生产力两方面都带来了显著提升。

要开始使用这些工具:

  1. 在 Claude 中运行 `/sandbox`,并查看我们的文档了解如何配置该沙箱。
  2. 前往 claude.com/code 试用 Claude Code on the web。

或者,如果你正在构建自己的智能体,请查看我们开源的沙箱代码,并考虑将其集成到你的工作中。我们期待看到你的作品。

想进一步了解 Claude Code on the web,请阅读我们的发布博客文章。

致谢

本文由 David Dworken 和 Oliver Weller-Davies 撰写,Meaghan Choi、Catherine Wu、Molly Vorwerck、Alex Isken、Kier Bradwell 和 Kevin Garcia 参与贡献