
觉机录 · 报道

Mozilla 旗下专注于生成式 AI 安全的漏洞赏金平台 0DIN 近日披露了一项令人不安的发现:一种专门针对 AI 编程工具的全新攻击向量,已经能够在无需任何恶意代码落地仓库的情况下,完全控制开发者的本地机器。攻击者仅仅借助一个看似正常的 GitHub 仓库,就能通过间接提示注入,在 AI 编码助手自动执行安装脚本的瞬间打开反向 Shell,进而窃取 API 密钥、登录凭证并建立持久化访问。这一发现将 AI 辅助开发中的隐式信任问题推到了聚光灯下,也再次印证了安全界长期以来的担忧——当 AI 代理开始代替人类执行操作时,传统的代码审查与静态扫描几乎形同虚设。


0DIN 团队拆解的攻击链极为精巧。恶意仓库本身不包含任何可直接识别的恶意代码,而是在安装脚本中埋入一段看似无害的指令,该指令在运行时向外部 DNS 记录发起查询,并从中拉取真正的攻击载荷执行。由于 DNS 查询是网络中再正常不过的行为,且载荷仅在运行时动态获取,仓库在静态分析、代码审查乃至 AI 代理的上下文理解中都是“干净”的。攻击者选择的目标是 Anthropic 的 Claude Code,当开发者用该工具打开仓库并进行常规设置时,Claude Code 会自动运行 setup 脚本,并在遇到一个精心构造的“常规错误信息”后,继续执行后续命令,最终建立起指向攻击者服务器的反向 Shell。整个过程无需受害者额外确认,也无需攻击者绕过任何明显的安全警告。


这一攻击手法的真正危险在于它彻底绕过了开发者与安全工具之间建立的信任边界。过去,从 GitHub 克隆代码的风险主要集中在仓库内是否包含恶意脚本或二进制文件,因此开发者被教育要审查代码、依赖自动化扫描,并在沙箱中运行不信任的代码。但 AI 编程工具的介入改变了这一范式:AI 代理被设计为“理解”并“协助”完成开发任务,它会在开发者几乎没有感知的情况下自动执行 install、build 等命令。当 Claude Code 将 setup 脚本视为必须完成的常规步骤时,它实际上成为了攻击者最理想的执行器。更糟糕的是,这种攻击的投递成本极低——一个伪装成教程、招聘帖或 Slack 消息中的仓库链接,就足以让任何使用 AI 编码工具打开它的人中招。研究人员直言,开发者必须立即转变思维,将第三方仓库中的任何 setup 指令都视为不受信任的代码,而 AI 代理则必须在执行前将脚本内容完整透明地呈现给用户。


0DIN 的发现为整个 AI 辅助开发生态敲响了警钟。从 GitHub Copilot 到 Cursor,再到各类自主编码代理,它们都在迅速获得更高的文件系统访问权限和命令执行能力,但相应的安全护栏却严重滞后。此次攻击表明,即使是大语言模型本身的安全对齐也无法阻止这类间接注入,因为模型并不会将“从 DNS 获取命令”视为恶意行为,它只是在忠实地完成用户(或攻击者)设定的任务。可行的缓解措施并不复杂:AI 代理在自动执行任何来自仓库的脚本前,必须强制展示脚本全文并等待开发者明确批准,同时运行环境应默认隔离网络出站连接,尤其是 DNS 和非常规端口的通信。对于 Mozilla 的 0DIN 平台而言,这一案例也证明了专门针对生成式 AI 漏洞的悬赏机制正在成为前沿防线——当攻击者开始利用 AI 代理的自主性时,防守方也必须用同样的创造性去预测和封堵那些尚未出现的攻击路径。

夜雨聆风