咨询服务热线:400-099-8848
能随意盗取数据!这款抢手 AI 编程东西曝严重危险 |
| 发布时间:2026-05-24 文章来源:本站 浏览次数:18 |
以“安全优先”定位的Anthropic,其核心开发东西Claude Code的网络沙箱在过去五个月里从未实在安全过。 独立安全研讨员关傲男(Aonan Guan)5月20日发布新研讨,发表Claude Code网络沙箱存在第二个完好绕过缝隙——一个SOCKS5协议中的空字节注入进犯,能够让沙箱内的进程拜访用户战略清晰制止的任意主机。这意味着从2025年10月沙箱功用上线至今,约5.5个月、130个发布版别,Claude Code的每一个版别都存在可被完好绕过的安全缺陷。这已是同一研讨员对同一道防线的第2次完好打破。 Anthropic对此的回应是缄默沉静:没有安全布告,没有CVE编号,没有用户通知。缝隙在4月1日的版别中静默修正,更新日志未提及任何安全相关内容。也就是说,一位仍在运转旧版别的用户,彻底无从知晓自己装备的沙箱从一开端就形同虚设。 同一道门的两次钥匙 Claude Code是Anthropic于2025年头推出的AI编程帮手,定位是“驻留在终端中的AI工程师”。与传统的聊天式代码补全不同,Claude Code具有对用户代码库的读写权限和指令履行才能,能够自主完结导航代码、修改文件、运转测验等一系列操作。这种深度介入也意味着极高的安全危险——如果模型被提示词注入进犯劫持,进犯者将取得同等用户终端权限的才能,包含读取本地环境变量、履行任意体系指令、拜访内部网络资源等。 为了平衡安全与功率,Anthropic在2025年10月引入了网络沙箱功用(v2.0.24),允许用户经过装备文件设定域名白名单,约束AI履行环境的外部网络拜访。例如装备 allowedDomains: [“*.google.com”] 后,Claude Code只能拜访Google及其子域名,其余流量一概阻断。官方文档清晰许诺:“空数组等于制止所有网络拜访。” 这一机制由一个SOCKS5署理完成:底层沙箱运转时(@anthropic-ai/sandbox-runtime)发动署理服务器,沙箱内的进程不直接主张网络衔接,而是经过署理转发,署理根据用户在 settings.json 中装备的白名单履行域名过滤。操作体系层面的沙箱机制——macOS的sandbox-exec、Linux的bubblewrap——正确地将Agent约束在本地回环地址,出站决议计划则彻底委托给这个SOCKS5署理。 Anthropic官方博客展现的Claude Code沙箱架构图——用户指令经由SOCKS/HTTP署理过滤后到达沙箱,沙箱内的文件操作与网络拜访受严格权限管控 问题就出在这个署理的完成上。两次独立的安全研讨均证明,它能够被完好绕过。 时间线暴露出更深层的问题:2025年11月26日发布的v2.0.55修正了第一次绕过,但第2次绕过从沙箱上线的第一天起就已存在,该版别仍然携带。两个缝隙在时间线上存在交叉,从沙箱功用上线的第一天到后一个缝隙被修正,没有任何版别是安全的。Anthropic在官方博客中声称沙箱“保证即使产生提示词注入,影响也被彻底隔离”,但这两次绕过的存在直接推翻了这一许诺。 “一次外部陈述是运气。两次是实施质量问题。”——关傲男研讨陈述表明。 一个空字节的完好绕过 第2次绕过的技术原理并不杂乱,但进犯链条的完好性值得关注。 用户装备了网络白名单,例如只允许拜访 *.google.com。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自身供认了这一成果。 Claude Code v2.1.86中四个赤色标示过程的完好缝隙复现——战略供认、一般阻拦、空字节绕过、Claude自身供认 而这一沙箱绕过与关傲男4月发表的“谈论与操控”提示词注入进犯串联后,构成了完好的进犯链(拜见:三层防护仍然不行,一条PR标题就能偷走你的API密钥:AI Agent安全裂痕再现)。“谈论与操控”研讨已证明,三家AI编程东西均存在提示词注入进犯面,但进犯进口各不相同:Claude Code仅经过PR标题,Gemini CLI经过Issue谈论或正文,Copilot Agent则使用HTML注释完成隐蔽注入。以Claude Code为例,其PR标题会被直接拼接至提示词模板,未经过滤或转义,模型无法区别人类意图与歹意注入。 将两者组合——隐藏指令让Agent在沙箱内运转进犯代码,空字节注入打破网络封闭——环境变量中的API密钥、AWS凭证、GitHub令牌、内部API端点数据等,均可被外传至互联网上的任意服务器。数据经过SOCKS5署理自身流出,进犯全程无需外部服务器中转,而该署理恰恰是用户信赖为安全鸿沟的组件。进犯者甚至不需要仓库写入权限,只需提交一个揭露Issue即可。人类审查者在GitHub烘托视图中看到的是正常协作恳求,AI Agent解析的却是完好歹意源码。 连Claude都供认:缝隙是实在的 此次发表中的一个要害细节来自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.”(“这是对网络沙箱过滤器的实在绕过,不是测验假象。你应该向Anthropic陈述这个问题。”) 被测验的产品自己供认了缝隙的实在性和严重性,甚至主动给出了上报途径。这个细节被关傲男完好记录在研讨陈述中,并成为The Register报道标题的来源——“Even Claude agrees hole in its sandbox was real and dangerous”(连Claude都认同,其沙箱中的缝隙是实在且危险的)。 关傲男研讨封面——Claude Code被展现自身缝隙后供认“这是对网络沙箱过滤器的实在绕过”,赤色框标示要害供认语句 Anthropic的回应与五个月的缄默沉静 缝隙自身令人担忧,但Anthropic的处理方式更值得职业审视。 关傲男于2026年4月初经过HackerOne缝隙赏金计划(陈述编号#3646509)向Anthropic提交了第2次沙箱绕过的具体陈述。Anthropic的初步回应是: “Thank you for your report. After reviewing this submission, we've determined it's a duplicate of an existing internal report we're already tracking.”(“感谢您的陈述。经审阅,咱们认定该提交与咱们已在追寻的既有内部陈述重复。”) 陈述随即被关闭。当关傲男诘问CVE编号计划时,Anthropic于4月7日回复: “We have not yet decided whether a CVE will be published for this issue and can't share a timeline on that decision.”(“咱们尚未决议是否为该问题发布CVE编号,也无法供给相关决议的时间表。”) 此后缝隙在v2.1.90版别中静默修正。没有安全布告,没有CVE编号,Claude Code安全主张页面无任何条目,更新日志未提及任何安全相关描述。一个从沙箱上线第一天就存在、持续5.5个月、覆盖约130个版别的完好绕过,对用户而言仿佛从未产生过。 这一处理形式并非初次呈现。第一次绕过(CVE-2025-66479)的应对方式简直千篇一律:Anthropic将CVE仅分配给底层库 @anthropic-ai/sandbox-runtime(CVSS评分仅1.8,“Low”),而非面向用户的产品Claude Code;更新日志中写的是“Fixed proxy DNS resolution”(修正了署理DNS解析),未提及安全缝隙。关傲男在研讨陈述中对此写道:“当React Server Components呈现严重缝隙时,React和Next.js各自取得了独立的CVE,Meta和Vercel都发布了安全布告,两个社区都得到了充分告知。Anthropic挑选了不同的做法。”截至目前,查找“Claude Code Sandbox CVE”仍然无法找到任何官方安全布告。 在应对凭证盗取问题时,Anthropic挑选封禁ps指令,但黑名单思路先天不足——封禁一个指令,进犯者有无数替代途径。正确做法是清晰声明Agent只需要哪些东西。而在“谈论与操控”研讨中,Anthropic虽将缝隙评级提升至CVSS 9.4(Critical级别)并转入私有赏金计划,发言人却表明“该东西在规划上并未针对提示词注入进行加固”。厂商默许信赖模型自身的安全才能,却在体系架构层面缺乏纵深防护;当缝隙暴露出这种缺失时,“规划限制”便成了一个方便的分类——它既供认了问题,又在某种程度上免除了发布安全布告的责任。 更广泛的职业图景是,同样的问题不止于Anthropic一家。4月发表的“谈论与操控”研讨中,Google的Gemini CLI和微软GitHub的Copilot Agent均被证明存在同一进犯面,三家公司均供认并修正,但没有一家发布安全布告或CVE编号。Anthropic付出100美元赏金,Google付出1337美元,GitHub初以“已知问题,无法复现”关闭陈述,在收到逆向工程证据后以“信息性”标签结案,发放500美元。算计1937美元——而这三款产品覆盖了《财富》百强中绝大多数企业。 虚伪的安全感比没有安全措施更具危害。没有沙箱的用户知道自己没有鸿沟;具有破损沙箱的用户认为自己有。一个运转Claude Code并装备了域名白名单的团队,在5.5个月里对危险毫不知情,升级后看到更新日志只会得出结论:沙箱一直在正常工作。此外,当缝隙被发表后,没有安全布告意味着用户无法判别自己是否曾受到影响,也缺乏回溯审计的依据。 面临这一现状,安全社区开端形成一致:不能将信赖单点化地押注在厂商的沙箱完成上。Claude Code的SOCKS5署理构建在一个仅10个GitHub Star、后提交停留在2024年6月的第三方npm包之上,安全鸿沟横跨JavaScript和C两种运转时,却在信赖交界处缺少基本的规范化处理。修正补丁中增加的isValidHost()函数——担任回绝空字节、百分号编码、CRLF等非法字符——本应从沙箱上线第一天就存在。关傲男提出了一个务实的防护框架——将AI Agent视为需要遵从小权限准则的超级职工,核心在于多层防护: 安全的名誉建立在每一次发表和每一个补丁的透明度之上,而非品牌叙事。当用户基于信赖将凭证交给Agent处理时,厂商有责任保证防线有效,也有责任在失效时及时告知。这两点,Anthropic在Claude Code沙箱上都未能做到。 “沙箱坏的成果不是阻挠了什么,而是给了人们一种虚伪的安全感。发布一个有缝隙的沙箱,比不发布沙箱更糟糕。”——关傲男表明。 |