当 AI Agent 被赋予足以关闭内部服务的权限时,传统的 "人类在环" 审批模式已无法满足安全需求。Anthropic 近期系统阐述了其在 Claude.ai、Claude Code 与 Claude Cowork 三款异构产品中实施的统一 Containment(沙箱隔离 / 行为边界约束)策略,核心思路是将安全防护从概率性的模型层下沉到确定性的环境层,通过进程沙箱、虚拟机、文件系统边界和出口控制来设定 Agent 的行为硬边界。
三种隔离模式的技术实现
针对三款产品的不同使用场景与用户能力,Anthropic 设计了三种递进式的隔离架构。
Pattern 1:短暂容器(Ephemeral Container)—— Claude.ai 代码执行
Claude.ai 的代码执行环境采用 gVisor 容器运行在隔离基础设施上,Agent 完全在服务端运行,不触及用户本地机器,文件系统为会话级临时存储。这种设计的爆炸半径最小,但能力上限也受限 —— 没有持久工作区,也无法访问用户本地文件系统。配合 seccomp 系统调用过滤,该架构主要保护 Anthropic 自身基础设施免受租户间横向移动攻击。
Pattern 2:人机循环沙箱(HITL Sandbox)—— Claude Code
Claude Code 需要访问用户本地文件系统、Shell 和网络才能发挥编程助手的作用。Anthropic 采用 OS 级沙箱技术 ——macOS 上使用 Seatbelt,Linux 上使用 Bubblewrap—— 在文件系统和网络两个维度实施硬隔离。文件系统层面,Agent 只能读写工作目录内的文件,无法触碰系统敏感文件如 SSH 密钥;网络层面,默认拒绝所有出站连接,仅通过 Unix Domain Socket 连接到运行在沙箱外的代理服务器,由该代理根据允许列表(allowlist)决定是否放行特定域名。
这种设计使 Claude Code 在内部使用中减少了 84% 的权限提示,同时保持安全性。Anthropic 已将这套沙箱运行时开源(sandbox-runtime),使边界可被审计。
Pattern 3:本地虚拟机(Sealed VM)—— Claude Cowork
面向非技术知识工作者的 Claude Cowork 采用完整虚拟机隔离 ——macOS 使用 Apple Virtualization 框架,Windows 使用 HCS(Host Compute Service)。VM 拥有独立的 Linux 内核、文件系统和进程表,用户选定的工作区通过受控挂载点接入,主机其他文件对 Agent 不可见。关键设计是凭证永不进入沙箱:用户凭证保留在主机密钥链中,VM 仅获得会话级限域令牌。
Claude Cowork 最初将 Agent 循环完全置于 VM 内运行,但 VM 启动失败会导致产品不可用。后续架构调整将 Agent 循环移至主机,仅将代码执行保留在 VM 内,这样既保持了文件系统和网络隔离的安全性,又提升了可靠性。
核心设计原则与工程教训
凭证外置原则:无论沙箱如何被突破,只要敏感凭证从未进入沙箱,就无法被外泄。Claude Code on the Web 使用自定义代理服务处理所有 Git 交互,沙箱内的 Git 客户端使用限域凭证向代理认证,代理验证后才附加真实令牌向 GitHub 发送请求。
出口控制的重新理解:Anthropic 曾将域名允许列表视为 "目的地过滤器",但一次漏洞披露改变了这一认知。攻击者通过在用户工作区放置恶意文件,诱导 Claude 读取其他文件后,使用攻击者控制的 API 密钥调用 api.anthropic.com/v1/files 将数据上传到攻击者的 Anthropic 账户 —— 出口代理检查到目的地是允许列表内的 api.anthropic.com 便放行请求,数据成功外泄。
修复方案是在 VM 内部署防御性中间人代理,仅放行携带 VM 自身会话令牌的请求,攻击者嵌入的密钥被拦截。这一事件印证了 Anthropic 的关键洞察:"你自建的最弱层往往是最薄弱环节"—— 经过充分对抗测试的 gVisor、seccomp、Bubblewrap 表现可靠,而自定义的允许列表代理成为失效点。
隔离强度与用户能力的匹配:开发者能够阅读 Bash 脚本并理解风险,因此 Claude Code 可采用人机循环模式;非技术知识工作者无法判断复杂命令的风险,因此 Claude Cowork 采用无需用户判断的绝对边界。错误匹配任一方向 —— 给专家过多摩擦,或给非专家过多信任 —— 都是设计失败。
可落地的实施要点
对于正在构建 Agent 系统的团队,Anthropic 的实践提供了可操作的参考框架。
确定性边界优先于概率性防护:模型层防护(分类器、系统提示、训练调整)只能塑造 Agent 的 "倾向" 而非 "能力上限"。当用户本身就是攻击向量(如钓鱼邮件诱导员工粘贴恶意提示)时,模型层无法识别异常,唯有环境层的硬边界能够阻断数据外泄。
文件系统隔离的双重要求:有效的沙箱必须同时具备文件系统隔离和网络隔离。仅有文件系统隔离而无网络隔离,被攻破的 Agent 可通过网络外泄敏感文件;仅有网络隔离而无文件系统隔离,Agent 可轻松逃逸沙箱获取网络访问。
符号链接处理顺序:在实现文件系统允许列表时,符号链接解析必须在路径验证之前完成,否则沙箱内的符号链接可指向授权目录外部实现逃逸。
VM 隔离的可见性代价:完整 VM 隔离在阻止 Agent 逃逸的同时,也阻止了主机 EDR(端点检测响应)软件对 Guest 的可见性。企业安全团队无法实时监控 VM 内部活动,只能依赖事后拉取的 OTLP 日志。在设计阶段需预留与合规团队的沟通周期。
MCP 服务器的信任边界:远程 MCP 服务器可在获得批准后随时变更行为,应视为不可信输入源;本地 MCP 服务器虽可审计,但应像对待用户自行安装的软件一样由管理员管控启用。工具输出本身也是攻击面,即使工具可信,其返回的 poisoned 数据(如恶意 README)仍可能劫持 Agent 行为。
资料来源
- Anthropic Engineering: "How we contain Claude across products" (2026-05-30)
- Anthropic Engineering: "Making Claude Code more secure and autonomous with sandboxing"
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。