一个以"安全优先"为品牌核心的人工智能公司,其旗舰开发工具的网络隔离机制,从上线第一天起就是敞开的。
独立安全研究员关傲男5月20日发布的研究报告揭示,Anthropic的Claude Code网络沙箱存在第二个完整绕过漏洞。这个SOCKS5代理中的空字节注入攻击,能让沙箱内进程访问用户明确禁止的任意主机。时间跨度令人震惊:从2025年10月沙箱功能上线到2025年4月修复,约5.5个月、130个发布版本,全部存在可被完整绕过的安全缺陷。
这是同一研究员对同一道防线的第二次突破。更令用户不安的是Anthropic的应对方式——没有安全通告,没有CVE编号,没有用户通知。漏洞在4月1日版本中静默修复,更新日志未提及任何安全相关内容。运行旧版本的用户,无从知晓自己配置的沙箱从未生效。
被高估的防线
Claude Code是Anthropic 2025年初推出的AI编程助手,定位"驻留在终端中的AI工程师"。与传统代码补全工具不同,它拥有用户代码库的读写权限和命令执行能力,可自主完成导航代码、编辑文件、运行测试等操作。这种深度介入意味着极高风险——若模型被提示词注入攻击劫持,攻击者将获得等同用户终端的权限,包括读取本地环境变量、执行系统命令、访问内部网络资源。
为平衡安全与效率,Anthropic在2025年10月引入网络沙箱功能(v2.0.24)。用户可通过配置文件设定域名白名单,限制AI执行环境的外部网络访问。例如配置 allowedDomains: ["*.google.com"] 后,Claude Code只能访问Google及其子域名。官方文档承诺:"空数组等于禁止所有网络访问。"
该机制由SOCKS5代理实现:底层沙箱运行时启动代理服务器,沙箱内进程不直接发起连接,而是通过代理转发,代理根据 settings.json 中的白名单执行域名过滤。操作系统层面的沙箱机制——macOS的sandbox-exec、Linux的bubblewrap——将Agent限制在本地回环地址,出站决策完全委托给这个代理。
两次独立研究均证明,这个代理可被完整绕过。2025年11月26日发布的v2.0.55修复了第一次绕过,但第二次绕过从沙箱上线第一天就已存在,该版本仍携带。两个漏洞时间线交叉,从上线到最后修复,没有任何版本是安全的。Anthropic官方博客曾宣称沙箱"确保即使发生提示词注入,影响也被完全隔离",这一承诺被直接推翻。
"一次外部报告是运气。两次是实施质量问题。"关傲男在报告中写道。
空字节的双面欺骗
第二次绕过的技术原理属于经典攻击类型,但链条完整性值得细究。
用户配置网络白名单后,Claude Code的SOCKS5代理用JavaScript的 endsWith() 方法对主机名做后缀匹配。攻击者只需在主机名中插入空字节——构造形如 attacker-host.com\x00.google.com 的字符串。JavaScript将空字节视为普通UTF-16字符,endsWith(".google.com") 返回 true,代理放行。但同一字符串被传递到底层C语言函数 getaddrinfo() 进行DNS解析时,空字节被视为字符串终止符,实际解析的是 attacker-host.com。
同样的字节,两层代码两种解读。过滤器认为你在访问Google,DNS解析器知道你在连接攻击者的服务器。
这是"解析器差异"攻击,与2005年发现的HTTP请求走私属同一技术类别(CWE-158 / CWE-436)。本质是同一条数据流经两个语义解释规则不同的组件时,攻击者让一层做出"安全"判断,另一层执行"危险"操作。此类漏洞在网络安全领域反复出现,关键教训始终相同:跨越信任边界的字符串传递,必须经过严格规范化与验证,而非信任上层已做过检查。
关傲男用两个最小化Node.js脚本完成复现:控制脚本用普通主机名发起SOCKS5连接,返回BLOCKED;攻击脚本注入空字节,返回 BYPASSED rep=0x00——代理已成功建立连接,出站通道被打开。Claude Code自身确认了这一结果。
完整的攻击链条
这一沙箱绕过与关傲男4月披露的"评论与控制"提示词注入攻击串联,构成完整攻击链。
"评论与控制"研究已证明,三家AI编程工具均存在提示词注入攻击面,但入口各不相同:Claude Code仅通过PR标题,Gemini CLI通过Issue评论或正文,Copilot Agent利用HTML注释实现隐蔽注入。Claude Code的PR标题会被直接拼接至提示词模板,未经过滤或转义,模型无法区分人类意图与恶意注入。
将两者组合——隐藏指令让Agent在沙箱内运行攻击代码,空字节注入突破网络封锁——环境变量中的API密钥、AWS凭证、GitHub令牌、内部API端点数据等,均可被外传至互联网任意服务器。数据通过SOCKS5代理本身流出,攻击全程无需外部服务器中转,而该代理恰恰是用户信任为安全边界的组件。
攻击者甚至不需要仓库写入权限,只需提交一个公开Issue。人类审查者在GitHub渲染视图中看到正常协作请求,AI Agent解析的却是完整恶意源码。
被测试者的证词
披露中的一个关键细节来自Claude Code自身。关傲男将漏洞复现代码交给Claude Code运行,要求其做出技术判断。Claude Code在执行控制测试(普通主机名被拦截)和攻击测试(空字节主机名绕过拦截)后,给出明确结论:
"This is a real bypass of the network sandbox filter, not just a test artifact. You should report this to Anthropic at https://github.com/anthropics/claude-code/issues."
被测试的产品自己确认了漏洞的真实性和严重性,甚至主动给出上报路径。这一细节被完整记录在研究报告中,并成为The Register报道标题的来源——"Even Claude agrees hole in its sandbox was real and dangerous"(连Claude都认同,其沙箱中的漏洞是真实且危险的)。
讽刺的是,Anthropic最终的处理方式与这一坦诚形成对照:修复、沉默、无追溯通知。对于一款被设计为深度嵌入用户开发环境的工具,这种信息不透明本身构成了第二层风险。用户基于"已配置沙箱"做出的安全决策,建立在从未生效的机制之上——而他们可能永远不会知道。
热门跟贴