能随意窃取数据!这款热门 AI 编程工具曝重大隐患

独立安全研究员关傲男披露Claude Code网络沙箱存在第二个完整绕过漏洞(SOCKS5空字节注入),该漏洞自沙箱功能上线5.5个月间始终存在,导致用户配置的域名白名单形同虚设。与提示词注入结合可窃取API密钥等敏感数据,Anthropic在静默修复后未发布任何安全通告。

能随意窃取数据!这款热门 AI 编程工具曝重大隐患 - AI编程工具, Anthropic, Claude Code, SOCKS5代理, 安全漏洞, 沙箱绕过, 空字节注入

独立安全研究员关傲男(Aonan Guan)于5月20日发布最新研究,披露了Anthropic旗下AI编程工具Claude Code网络沙箱存在第二个完整绕过漏洞。该漏洞基于SOCKS5协议中的空字节注入攻击,能够让沙箱内的进程访问用户策略明确禁止的任意主机。从2025年10月沙箱功能上线至今,约5.5个月、130个发布版本中,Claude Code的每一个版本都存在可被完整绕过的安全缺陷。这已是同一研究员对同一道防线的第二次完全突破。

Claude Code是Anthropic于2025年初推出的AI编程助手,定位为“驻留在终端中的AI工程师”。它拥有对用户代码库的读写权限和命令执行能力,可自主完成代码导航、文件编辑、测试运行等操作。若模型遭到提示词注入攻击劫持,攻击者将获得等同于用户终端权限的能力,包括读取本地环境变量、执行任意系统命令、访问内部网络资源等。为平衡安全与效率,Anthropic在2025年10月引入网络沙箱功能(v2.0.24),允许用户通过配置文件设定域名白名单,限制AI执行环境的外部网络访问。官方文档明确承诺:“空数组等于禁止所有网络访问。”

两次完整的防线突破

沙箱机制由一个SOCKS5代理实现:底层沙箱运行时启动代理服务器,沙箱内进程通过代理转发网络连接,代理根据用户settings.json配置的白名单执行域名过滤。操作系统层面的沙箱机制正确地将Agent限制在本地回环地址,出站决策完全委托给该SOCKS5代理。然而,两次独立安全研究均证明,这一代理实现可以被完整绕过。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解析器知道你在连接攻击者的服务器。这属于经典的“解析器差异”攻击,与HTTP请求走私属同一技术类别(CWE-158 / CWE-436)。

关傲男使用两个最小化的Node.js脚本完成了漏洞复现:控制脚本使用普通主机名发起SOCKS5连接,返回BLOCKED;攻击脚本在主机名中注入空字节,返回BYPASSED rep=0x00,意味着代理已成功建立连接,出站通道被打开。Claude Code自身确认了这一结果。而这一沙箱绕过与关傲男此前披露的“评论与控制”提示词注入攻击串联后,构成了完整的攻击链。以Claude Code为例,其PR标题会被直接拼接至提示词模板,未经过滤或转义,模型无法区分人类意图与恶意注入。组合攻击可让Agent在沙箱内运行攻击代码,通过空字节注入突破网络封锁,进而窃取环境变量中的API密钥、AWS凭证、GitHub令牌、内部API等敏感数据。

Anthropic对此事的回应是沉默:没有安全通告,没有CVE编号,没有用户通知。漏洞在4月1日的版本中静默修复,更新日志未提及任何安全相关内容。一位仍在运行旧版本的用户,完全无从知晓自己配置的沙箱从一开始就形同虚设。

本文参考来源:钛媒体:引领未来商业与生活新知

发表回复