Claude Code 沙箱机制拆解:权限提示减少 84%,它是怎么做到的?

在 Claude Code(后文简称 CC)中,Claude 能和你一起写代码、跑测试、查 Bug,它可以浏览你的代码库、编辑多个文件、运行命令来验证自己的工作。

但你有没有想过一个问题:给 AI 这么大的权限,真的安全吗?

尤其是在提示词注入攻击的场景下,一个被"劫持"的 Claude 拥有文件读写和命令执行权限,后果不堪设想。

为了应对这个问题,Anthropic 在 CC 中引入了两项基于沙箱的新功能,核心目标只有一个:让 Claude 在明确的安全边界内自由工作,既减少权限提示的打扰,又不牺牲安全性。 内部数据显示,沙箱技术将权限提示减少了 84%。

CC 原来的安全模型:逐条审批

CC 默认以只读模式运行。任何文件修改或命令执行,都需要用户手动批准。

听起来很安全,但实际用起来你会发现:频繁地点"同意"不仅拖慢开发节奏,还会导致"审批疲劳"。 当你第 50 次点击"允许"的时候,你还会认真看它到底要执行什么吗?大概率不会。

这就形成了一个悖论:为了安全而设计的权限机制,反而因为使用体验差而降低了安全性。

Anthropic 的解法是 – 沙箱。

沙箱:划定边界,而非逐条审批

沙箱的思路很直接:与其每次都问"我能做这件事吗",不如提前划定"你能做哪些事"。

在边界之内,Claude 自由操作,不需要任何权限提示;一旦触碰边界之外的资源,用户会立刻收到通知。

这个沙箱构建在操作系统级别的能力之上,实现了两重隔离:

文件系统隔离 – Claude 只能访问和修改指定目录。即使遭遇提示词注入攻击,被"劫持"的 Claude 也无法染指系统敏感文件。

网络隔离 – Claude 只能连接到预先批准的服务器。被"劫持"的 Claude 既无法把你的敏感信息外泄,也无法下载恶意软件。

这两层隔离缺一不可。 没有网络隔离,被入侵的智能体可以把你的 SSH 密钥发送到攻击者的服务器;没有文件系统隔离,被入侵的智能体可以突破沙箱获取网络权限。只有双管齐下,才能真正构建安全防线。

具体实现:两个沙箱功能

沙箱化 Bash 工具

Anthropic 推出了一款新的沙箱运行时环境,允许你精确设定智能体可以访问哪些目录和网络主机,无需额外启动和管理容器。它不仅适用于 CC,还可以隔离任意进程、智能体和 MCP 服务器。这个工具已经开源

在 CC 中,这个运行时被用来对 bash 工具进行沙箱化。效果很直观:在沙箱内,Claude 可以自主执行命令,不再弹出权限提示;一旦尝试越界,用户立即收到通知。

底层实现基于操作系统级别的原语 – Linux 上用 bubblewrap,macOS 上用 seatbelt。这些限制不仅覆盖 CC 的直接操作,还包括命令衍生出的所有脚本、程序和子进程。 换句话说,不管 Claude 怎么套娃调用,都逃不出沙箱的管控。

具体来说,沙箱在两个维度强制执行隔离:

  • 文件系统隔离:允许对当前工作目录进行读写,阻止修改范围外的任何文件。
  • 网络隔离:所有互联网访问必须通过一个 Unix 域套接字(Unix domain socket)连接到沙箱外的代理服务器。这个代理服务器负责执行域名访问限制,并针对新请求的域名征求用户确认。如果你需要更高的安全等级,还可以自定义代理规则,对出站流量施加任意限制。

Unix domain socket 是一种用于同一台机器上进程间通信(IPC)的数据通道,比网络套接字更高效且更安全。

两个维度都支持灵活配置:你可以按需允许或禁止特定的文件路径和域名。

Claude Code 沙箱架构图

Claude Code 的沙箱架构通过文件系统和网络控制实现代码执行隔离,自动允许安全操作、阻止恶意行为,仅在必要时请求授权。

沙箱确保即使提示词注入攻击成功,其影响也被完全隔离。 被攻破的 Claude 既无法窃取你的 SSH 密钥,也无法向攻击者的服务器回传数据。

在 CC 中运行 /sandbox 命令即可启用沙箱功能。

CC 网页版:云端的隔离沙箱

Anthropic 还在网页端推出了 CC,让用户可以在云端的隔离沙箱中运行 CC。每个会话都在独立的沙箱环境中执行,Claude 在其中拥有对服务器的完整访问权限,但敏感凭证(如 Git 凭证和签名密钥)始终保持在沙箱之外。即使沙箱内的代码被攻破,用户的核心资产也不会受到影响。

在 Git 交互方面,网页版 CC 使用了一个自定义代理服务。沙箱内的 Git 客户端通过一个特制的、权限受限的凭证向代理服务认证。代理会验证凭证和 Git 操作的具体内容(比如确认只向配置的分支推送),然后附上正确的认证令牌,再将请求转发给 GitHub。

CC 网页版 Git 代理架构

Claude Code 的 Git 集成通过安全代理路由命令,验证认证令牌、分支名称和目标仓库,在支持正常版本控制工作流的同时防止未授权推送。

如何开始使用

  1. 在 CC 中运行 /sandbox,参考沙箱文档了解配置方式。
  2. 访问 claude.com/code 体验网页版 CC。
  3. 如果你在构建自己的智能体,可以参考开源的沙箱运行时,将沙箱能力集成到你的项目中。
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐