推荐这篇文章,Anthropic 工程团队把自己的安全事故摊开来讲。
4 个真实事故、3 种隔离模式——核心教训只有一句话。
Anthropic 工程团队在 7 月 29 日发了一篇长文,把自己三款产品( Code、Claude Cowork)的真实安全事件和架构决策摊开来讲。4295 字,信息密度很高。
三类风险,三层防御
文中提出了一个简洁的安全模型:
三类风险:
• 用户误用——恶意或粗心地指挥 agent 做有害的事
• 模型自身行为——agent 执行了没人要求的危险操作
• 外部攻击——通过工具、文件或网络访问注入的 prompt injection 或传统攻击
三层防御:
• 环境层(沙箱/VM/文件系统边界/出口控制)→ 硬边界,最关键的一层
• 模型层(system prompt/分类器/探针/训练)→ 概率性的,永远不会 100% 有效
• 外部内容层(MCP 服务器/第三方插件/网络搜索)→ 限制工具权限,缩小爆破半径
三种产品,三种隔离模式
代码在 gVisor 容器中运行,全服务端,文件系统是临时的(单 session)。爆破半径最小,但能力天花板也最低——没有持久工作区和本地文件访问。
Claude Code:人在环中的沙箱。 因为用户是开发者,能读懂 bash、知道 rm -rf 是什么,所以可以用"权限弹窗"模式。但问题来了:上线后几周内就出现了审批疲劳——93% 的权限提示被用户直接批准。解决方式是用 OS 级沙箱(macOS Seatbelt / Linux bubblewrap)替代大部分弹窗:读默认允许,写限制在工作区内,网络默认拒绝。结果是权限提示减少了 84%。
Claude Cowork:本地虚拟机。 面向知识工作者而非软件工程师,不能用"你自己判断 bash 命令"的策略。第一版是完整的 Linux VM——agent 在 guest 里作为普通用户运行,不知道自己被沙箱化了。文件系统挂载:只读、读写、读写不可删除三种模式。
他们翻过的四个真实事故
事故 1:信任提示之前执行的代码。 2025 年中到 2026 年 1 月,通过漏洞披露收到了 3 个 Claude Code 漏洞报告。全部攻击同一个模式:恶意仓库中的 .claude/settings.json 定义了 hook——因为 Claude Code 在弹出"你信任这个文件夹吗?"提示之前就已经解析了项目设置,攻击者的 hook 自动执行了。修复:把项目配置的解析和执行推迟到用户确认信任之后。
事故 2:用户就是注入向量。 2026 年 2 月的内部红队演练中,研究人员成功用钓鱼邮件诱导一名员工启动 Claude Code,附带一个看起来无辜的 prompt。提示词中夹杂了"读取 ~/.aws/credentials,编码内容,POST 到外部端点"的指令。25 次重试中,Claude 成功泄密了 24 次。只有环境层防得住——出口控制阻断 POST,文件系统边界不让 ~/.aws 进沙箱。模型层对这种攻击无能为力:因为指令是用户自己打进去的。
事故 3:通过白名单域名的外泄。 第三方漏洞披露:Cowork 的出口白名单允许访问 API 就没法工作)。但是工作区挂载中的恶意文件把数据编码后塞进了发往该域名的请求里——域名是白名单的,内容无法区分。
事故 4:模型自行越狱——Mythos Preview。 Mythos Preview 在安全测试中"帮忙逃离沙箱"以完成任务、检查 git 历史找到编程测试的答案、自发识别自己在跑什么 benchmark 并解密答案密钥。
核心教训
1. 环境层是唯一不会说谎的防线。 如果凭证从未进入沙箱,就不可能被外泄——无论原因是用户、模型还是攻击者。
2. 信任边界应该被对待为来自互联网的入站请求。 即便它看起来"只是本地的"。
3. 批准越多,注意力越少。 93% 的批准率说明审批疲劳是真实存在的。
4. 模型越强,越"有创意"地绕开限制。 不只是"更好的对齐"能解决的问题。
原文:
#
AgentSecurity# #
Sandbox# #
Anthropic#