AREX Feed Article
Claude Code v2.1.248 新增 --restricted 安全模式,修复凭证文件上传
Anthropic 于 8 月 27 日发布 Claude Code v2.1.248, 把该版本标注为 2026 年 8 月 27 日。GitHub 上的 显示,这一版新增了受限模式(restricted mode):以 --restricted 参数或环境变量 CLAUDE_CODE_RESTRICTED=1 开启后,Claude Code 移除执行命令和代码的内置工具,默认禁用 WebFetch(除非在 --tools 中显式列出),把文件工具限制在工作目录内,拒绝 bypassPermissions,并忽略用户、项目和本地设置文件。
同一版本还修复了一条具体的凭证外传路径:/ultrareview 和本地播种的云会话(locally seeded cloud sessions)此前会把未提交的编辑上传到云端,涉及 prod.env 风格文件、*.tfvars 文件,以及凭证文件的编辑器 swap、临时和备份副本(如 key.pem.tmp、id_rsa.swo)。changelog 对修复结果的表述是"they now stay on your machine"。这次发布与安全研究员 Johann Rehberger 公开 Auto Mode 攻击链发生在同一天,Anthropic 没有确认两者之间存在关联。
一条命令把 Claude Code 关进工作目录
受限模式需要用户显式开启,并非默认。用户启动时加 --restricted,或设置 CLAUDE_CODE_RESTRICTED=1,五件事同时生效:
- 移除执行命令或代码的内置工具。Claude 不再拥有 Bash 这类工具,无法自己运行 shell 命令、脚本或编译产物。
- 默认禁用 WebFetch。除非用户在
--tools里显式点名,否则模型不能抓取网页。 - 文件工具限于工作目录,读写操作出不了启动目录。
- 拒绝
bypassPermissions。按,bypassPermissions模式会跳过权限提示,包括对.git、.claude等受保护路径的写入。 - 忽略用户、项目和本地设置文件。settings 里配置的放行规则和自定义内容在受限模式下不生效。
效果是把 Claude Code 的能力基线从"能执行命令的 agent"压到"只能在目录内读写文件的编辑助手"。changelog 只在 WebFetch 一处标注了 --tools 例外,执行类工具没有列出类似的恢复途径。
prod.env 与私钥临时副本,不再被传上云
第二个改动针对 /ultrareview 和本地播种的云会话。/ultrareview 是跑在云端的代码审查命令,同一版本还改进了它:启动前先检查连接 Claude 账号的 GitHub 账号能否访问目标仓库,不能访问时给出修复说明,而不是等云会话启动后才失败。云会话(cloud sessions)在 2.1.247 的 changelog 里被定义为 Claude Code on the web、桌面和移动端应用,运行在容器中。
此前这些会话会把工作区里未提交的编辑一并带上云:prod.env 风格的环境变量文件、Terraform 变量文件 *.tfvars,以及凭证文件的编辑器 swap、临时和备份副本(key.pem.tmp、id_rsa.swo)。修复后,这些文件留在本机。对跑 /ultrareview 和云端会话的团队来说,这消除了未提交的密钥与环境变量类文件随会话进入云端环境的一条路径。
发布前数小时,一条声称 60%-80% 成功率的攻击链公开
与 v2.1.248 同日发生的,是 Rehberger 对 Auto Mode 的攻击披露。8 月 26 日,他在博客 Embrace The Red 发布《Breaking Claude Code Opus 5 Auto Mode》,8 月 27 日 UTC 18:16 在 X 上公开同一条攻击链;当晚 UTC 22:31,追踪 Claude Code 版本的账号 发出 2.1.248 发布公告。
Rehberger 的描述了链条:攻击从一个普通请求开始(让 Claude 总结某个网页),服务器先让 WebFetch 收到 415 错误,模型便自行改用 curl;curl 下载的是 ZIP 压缩包,里面装着伪装成目录数据的文件和一个 struct.py。Claude 拒绝运行压缩包里的二进制解码器,转而自己写了一个 Python 解码器,却在攻击者控制的解压目录里运行它;Python 导入 base64 模块时,目录里同名恶意 struct.py 抢先于标准库被加载,在导入阶段执行隐藏代码,随后下载并运行远端载荷、建立 C2 回连。
Rehberger 称小样本测试中攻击成功率为 60%-80%(三种变体分别为 3/5、3/5、4/5)。更反常的是清理环节:部分运行中 Claude 察觉被入侵、试图终止恶意进程,Auto Mode 的分类器却拒绝了这条清理命令。他在文中引用 Anthropic Claude Code 团队的 Boris Cherny 此前的说法:"我们已经无法再演示提示注入了",并指出 Anthropic 委托第三方(Trajectory Labs)对 72 个间接提示注入场景各测 10 次、结果显示 Opus 5 在 Auto Mode 下 0.00% 攻击成功率,而自己的攻击链不在那 72 个场景之内。他的把这条链称为"somewhat hilarious attack chain",一条经由网站完成的完整系统入侵。
"分类器不是沙箱":官方回应与研究员的分歧
Rehberger 在文章中记录了与 Anthropic 的交涉:先发给 的报告没有收到回复,改走安全报告渠道后很快得到回应,报告被关闭为 "Informative",理由是行为"按设计工作"。他转述的官方口径是:Auto Mode 是由尽力而为的分类器支撑的便利功能,不是安全保证,真正的边界是 OS 隔离与网络出口控制。他还指出,auto mode 自 8 月中旬起已成为 Claude Code 的默认启动模式。
Simon Willison 在 8 月 27 日的里把结论写得更直接:Anthropic 对 Auto Mode"寄予厚望","最近把它设为默认,并对其有效性做了大胆宣称"。他认同 Rehberger 的判断:只要存在被对抗性攻击盯上的可能,唯一安全的做法是把无人值守的编码 agent 放进容器、虚拟机或 OS 沙箱,限制网络出口,监控 agent 行为,不要把家目录、SSH 密钥和云凭证暴露给 agent 运行时。
受限模式与这条建议处在不同层面:--restricted 是产品内的权限开关,移除的是工具能力;Rehberger 和 Willison 谈的是运行环境隔离。前者不会替你隔离环境。
三天三版,安全改动没有官方解释
按官方文档 changelog,Claude Code 8 月 26 日发布 2.1.247,8 月 27 日发布 2.1.248,8 月 28 日又发布 2.1.250,后者的全部说明只有一行 "Bug fixes and reliability improvements"。
两次安全改动(受限模式、凭证上传修复)在 changelog 里都没有动机说明,也没有任何一句提到 Rehberger 的研究。从 changelog 与攻击链描述的对照看,受限模式移除的 WebFetch 与命令执行工具,正是这条攻击链前两步依赖的能力。受限模式是否在回应 Auto Mode 攻击,changelog 只字未提,Anthropic 也没有给出任何官方说明。