AI 编程工具直接在你的电脑上跑命令,沙盒就是那道"别让它碰不该碰的文件"的围墙。10 月 22 日,Anthropic 发布 Claude Code 2.1.309,一口气堵上了这道围墙上的好几个洞——其中有的是真实的沙盒逃逸。
这次修了哪几个洞
- shell 启动文件在沙盒外执行:macOS 和 Linux 上,沙盒内的 Bash 命令在每次执行前,会先在沙盒之外跑一遍 shell 的启动文件(比如
.bashrc)。启动文件里能干的事可不少,这等于每次命令执行前都有一段代码跑在围墙外面。 - MCP 配置文件能被沙盒命令改:沙盒内的命令和自动接受的编辑,可以修改用
--mcp-config传进来的 MCP 配置文件。MCP 配置决定了 Agent 能连哪些外部服务,被改了等于围墙的门锁被人换了。 - macOS 上 symlink 绕过写保护:sandbox 的
denyWriteglob 规则,在目标路径是通过符号链接到达时不生效。 - Windows PowerShell 安全钩子被绕过:为 PowerShell 写的安全钩子在某些情况下放行了本该拦截的命令。
- 另外还有几处权限检查的修补:Bash 权限检查信任了一个可能被重定向失败污染的变量;
cd被包裹或加前缀后再跑 git 时权限检查缺失;Edit的 deny 规则挡不住带子 shell 的 Bash 重定向。
官方 changelog 没有说明这些洞是否被实际利用过。
升级:一条命令的事
跑 claude update,再用 claude --version 确认版本号是 2.1.309 或更高。用沙盒模式、尤其是开自动模式(auto-accept)让 Agent 自己跑命令的用户,建议现在就升。
顺手检查你的沙盒配置
借这个机会把沙盒配扎实一点,几个关键开关:
- 沙盒默认是关闭的,先确认你真的开了。
sandbox.failIfUnavailable:沙盒依赖缺失或起不来时直接报错,而不是静默回退到不隔离执行。sandbox.allowUnsandboxedCommands: false:关掉dangerouslyDisableSandbox这个"逃生舱"——Claude Code 会在命令因沙盒限制失败时自己重试到沙盒外(要过一次用户确认),关掉它等于堵死这条官方后门。
要点解读
- 沙盒逃逸的可怕之处在于"静默":启动文件在沙盒外跑、MCP 配置被改,用户侧没有任何提示。Agent 工具的权限模型还在快速迭代,别把默认配置当安全配置。
- 开自动模式的用户风险最高:命令自动执行 + 沙盒有洞 = 最坏组合。这次升级的优先级,对自动模式用户是"现在",对手动确认每条命令的用户是"尽快"。
- 更大的信号:AI 编程工具正在变成高价值攻击面。把
claude update加进你的例行更新清单,和系统补丁同等对待。
(观点部分为本刊解读,仅供参考。)
此處評論已關閉