钛媒体 16小时前
能随意窃取数据!这款热门 AI 编程工具曝重大隐患
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

以 " 安全优先 " 定位的 Anthropic,其核心开发工具 Claude Code 的网络沙箱在过去五个月里从未真正安全过。

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

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 修复了第一次绕过,但第二次绕过从沙箱上线的第一天起就已存在,该版本仍然携带。两个漏洞在时间线上存在交叉,从沙箱功能上线的第一天到最后一个漏洞被修复,没有任何版本是安全的。Anthropic 在官方博客中宣称沙箱 " 确保即使发生提示词注入,影响也被完全隔离 ",但这两次绕过的存在直接推翻了这一承诺。

" 一次外部报告是运气。两次是实施质量问题。"——关傲男研究报告表示。

一个空字节的完整绕过

第二次绕过的技术原理并不复杂,但攻击链条的完整性值得关注。

用户配置了网络白名单,例如只允许访问   *.google.com。Claude Code 的 SOCKS5 代理在收到连接请求时,用 JavaScript 的   endsWith ( )   方法对主机名做后缀匹配。攻击者只需在主机名中插入一个空字节——构造形如 attacker-host.comx00.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 月披露的 " 评论与控制 " 提示词注入攻击串联后,构成了完整的攻击链。" 评论与控制 " 研究已证明,三家 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 提交了第二次沙箱绕过的详细报告。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 沙箱上都未能做到。

" 沙箱最坏的结果不是阻止了什么,而是给了人们一种虚假的安全感。发布一个有漏洞的沙箱,比不发布沙箱更糟糕。" ——关傲男表示。

(本文首发钛媒体 APP,作者 | 硅谷 Tech_news,编辑 | 焦燕)

1. oddguan.com — Second Time, Same Sandbox: Another Anthropic Claude Code Network Sandbox Bypass Enables Data Exfiltration(Aonan Guan, 2026.05.20)

2. The Register — Even Claude agrees hole in its sandbox was real and dangerous(2026.05.20)

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

ai 编程 linux google 工程师
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论