Claude Code 修复命令启动前沙箱漏洞
据文章介绍,Claude Code 2.1.309 修复了 macOS 和 Linux 下执行沙箱命令前,Shell 启动文件在沙箱外运行的问题。该案例说明,命令受限并不代表其启动过程也受到同样约束。
原文暂未完整获取,基于公开信息的快读
据文章披露,Claude Code 2.1.309 修复了 macOS 和 Linux 上的一处沙箱边界问题:执行受沙箱限制的命令前,Shell 启动文件会先在沙箱外运行。即使 npm test、git status 本身受到限制,启动脚本仍可能拥有当前用户的完整权限。
目前能确认什么
原文节选引用的修复记录明确指出,问题涉及每条沙箱命令执行前的 Shell 启动文件。文章没有给出旧版内部实现,不能把其中的示意代码当成 Claude Code 的真实调用流程。
触发它不需要打开交互式终端。zsh 执行 zsh -c 'git status' 时,通常也会读取 ~/.zshenv;非交互式 Bash 则会执行环境变量 BASH_ENV 指向的文件。这些文件可以运行代码,并非只能声明环境变量。
命令进入沙箱,不等于启动命令的整个过程都已进入沙箱。
如果启动脚本会调用凭证工具、联网或写缓存,这些操作也需要受到边界约束。仅设置 PATH 的配置,与加载不受自己控制的脚本,风险显然不同。
我的判断
对依赖 Claude Code 沙箱的开发者,检查是否已升级到包含该修复的版本,比单看「沙箱已开启」更有意义。同时应检查 ~/.zshenv、BASH_ENV 及其继续加载的脚本,确认每次命令启动时到底会执行什么。
这份材料能支持「启动代码曾在沙箱外执行」,但不能据此断言代理能够任意修改这些文件,也没有提供实际攻击或数据泄露的证据。
验证修复时,仅记录启动脚本是否执行还不够,因为修复后它仍可能在沙箱内执行。更有价值的是确认:脚本能否写入明确未获授权的目录。旧版具体如何启动 Shell、修复覆盖哪些调用路径,仍需完整原文或官方实现说明确认。