跳到正文
meng shao· @shao__meng · X·· 2026-05-27AI 评分72
AI 导读

Anthropic 基于 Claude AI、Claude Code 和 Claude Cowork 的工程实践,系统总结了构建安全 AI 智能体的经验。核心原则是防御应随智能体能力演进,并优先使用沙箱来限制破坏性动作。文章详述了三层防御架构(环境层、模型层、外部内容层)及三款产品的隔离模式:Claude AI 使用短暂容器,Claude Code 采用人机协同沙盒,Claude Cowork 则部署密封虚拟机。关键数字包括:Claude Opus 4.7 在 Gray Swan Agent 红队基准上单次攻击成功率约 0.1%,100 次尝试后约 5-6%;Claude Code 自动模式拦截约 83% 的过度积极行为。通过真实攻击案例,强调了环境层防御(如出站阻断)的关键性。

正文 · 原文

基于 Claude AI、Claude Code、Claude Cowork 三款产品工程实践对 Agent 安全的实战总结
https://www.anthropic.com/engineering/how-we-contain-claude

核心设计原则放在最前面
· 先环境层,后模型层 — 确定性边界是最后防线
· 隔离强度匹配用户监督能力 — 开发者能理解 bash,知识工作者不能
· 警惕自建组件 — 优先使用久经考验的标准隔离原语
· 出站白名单应视为能力授权,而非目的地过滤 — 每个可调用函数都是攻击面

三种风险类型
· 用户误用:用户(有意或无意)指示 Agent 执行有害操作,如绕过检查、执行破坏性命令
· 模型行为失当:Agent 未经请求执行有害操作,如"好心"地逃离沙箱、查看 Git 历史获取测试答案、自动识别 benchmark 以破解答案
· 外部攻击:通过工具、文件、网络访问等向量攻击 Agent,包括提示注入和传统运行时攻击

三层防御架构
1. 环境层(最可靠)
· 沙箱、VM、文件系统边界、出站控制
· 核心原则:确定性边界 > 概率性防御
· 若凭证从不进入沙箱,无论何种原因都无法被窃取

2. 模型层
· 系统提示、分类器、探测、训练改进
· Claude Opus 4.7 在 Gray Swan 的 Agent 红队基准上,单次攻击成功率约 0.1%,100 次自适应尝试后约 5-6%
· Claude Code 自动模式拦截约 83% 的过度积极行为

3. 外部内容层
· MCP 服务器、第三方插件、网页搜索
· 关键洞察:审计过的连接器 ≠ 审计过的数据(如 GitHub 连接器可加载被污染的 README)

三款产品的隔离模式对比(模式、实现和场景)
· Claude AI:短暂容器 | gVisor 容器,服务端运行,每次会话文件系统归零 | 通用对话,代码执行
· Claude Code:人机协同沙盒 | Seatbelt(macOS)/ bubblewrap(Linux),允许读、工作区允许写、默认阻断网络 | 开发者工具,需本地文件访问
· Claude Cowork:密封虚拟机 | 完整 VM(Apple Virtualization/HCS),仅挂载用户指定工作区,凭证留在宿主钥匙串 | 知识工作者,非技术用户

关键教训(真实攻击案例)
1. 信任对话框之前的代码执行漏洞
· 问题:Claude Code 在启动时读取 .claude/settings.json(含钩子),此时用户尚未确认"是否信任此文件夹"
· 修复:延迟解析项目本地配置,直到用户通过信任提示

2. 用户作为注入向量(钓鱼攻击)
· 场景:研究员通过邮件发送恶意提示,诱导员工粘贴到 Claude Code
· 结果:24/25 次成功窃取 ~/.aws/credentials 并外泄
· 教训:仅环境防御有效(出站阻断 + 文件系统边界),模型层无法防御"用户本人"的指令

3. 通过已批准域名的外泄
· 漏洞:Cowork 的出站白名单允许 api.anthropic. com,攻击者嵌入 API 密钥,让 Claude 读取文件并上传到攻击者账户
· 修复:VM 内部署防御性中间人代理,仅携带 VM 自有会话 token 的请求可通过

4. 自建组件是最薄弱环节
· 经验:gVisor、seccomp、hypervisor 等久经考验的组件可靠,自定义代理/代理是失败点

未来风险方向
· 持久化内存污染:跨会话记忆的增多使注入可在每次启动时重新加载
· 多 Agent 信任升级:子 Agent 输出若被视为主 Agent 的"更高信任"内容,可能成为新的提示注入向量
· Agent 身份:跨平台 Agent 应拥有独立主体身份,还是继承用户权限?需要混合方案

引用Anthropic@AnthropicAI
New on the Engineering Blog: The access and permissions we grant agents should evolve with their capabilities. In our own products, we set these parameters through sandboxing, which limits the scope of any potentially destructive actions. Read more: https://www.anthropic.com/engineering/how-we-contain-claude
在 X 查看被引用的帖子

来源:meng shao · x.com