HalluSquatting攻击曝光,AI编程助手推荐的那个包可能是陷阱你用Claude Code或者Cursor写代码的时候,有没有遇到过它给你推荐一个npm包或者GitHub仓库,你装下去发现根本不存在?大多数人会觉得这就是个AI犯傻的瞬间,笑笑就过去了。但特拉维夫大学的安全研究团队不这么想。他们7月8日在arXiv上发的论文"Beware of Agentic Botnets",把这个"AI犯傻"变成了一套完整的攻击方法,起名HalluSquatting。攻击者做的事情很简单。先搞清楚AI最可能编造哪些假包名,然后去GitHub抢注这些名字,塞进恶意代码,接下来就是等。等你让AI助手去"安装那个工具"的时候,AI会幻觉出攻击者注册好的那个名字,把恶意代码拉下来,再用它自己的终端权限执行掉。把整个链条梳理了一遍,发现它需要两个条件叠加才能成立。第一个条件是幻觉。AI模型在面对训练数据里没覆盖到的新资源时,会"猜"一个名字出来。研究者测试发现,仓库请求场景下AI的幻觉率最高达到85%。技能安装场景更夸张,100%。几乎所有测试里AI都会编造一个不存在的资源名。第二个条件是间接提示注入。攻击者在抢注的假包里藏一段指令,AI读到这段指令后会被"劫持",用自己手里的命令行工具去执行攻击者的命令。这里的关键在于,恶意代码不会自己跑起来。是AI被忽悠之后,用自身权限主动执行的。研究者测试了9个主流工具,包括Cursor、Windsurf、GitHub Copilot、Cline、Gemini CLI、OpenClaw、NanoClaw、Windsor。全部中招。攻击者拿到执行权限后能干什么?反向shell、偷密码和数据、装挖矿程序、或者继续操控AI做后续操作。传统防火墙看不到异常,因为载荷是AI读的文本,走的不是网络漏洞利用那条路。说实话一开始也以为这只是学术圈的思维实验,直到看到The Hacker News报道里提到的一个案例。2026年1月,Aikido Security的Charlie Eriksen发现一个叫 react-codeshift 的npm包。这个包根本不存在,但AI生成的指令已经把它传播到了237个代码项目里,而且AI代理还在每天尝试安装它。Eriksen抢在攻击者之前注册了这个包名,所以没出事。Palo Alto Networks的Unit 42最近也发了一份报告,发现大约25万个AI幻觉出的域名还没被注册,谁都可以去认领。25万个。这个攻击面的宽度值得认真想想。很多人觉得,这不就是恶意包吗,加个白名单不就行了。问题在于,HalluSquatting利用的是AI模型的认知缺陷,跟代码漏洞是两码事。你不能给AI装一个杀毒软件就完事。攻击载荷是文本,是AI"读"到的内容,不是二进制文件,不是网络流量。传统安全防御体系在这条攻击链上几乎是空白的。有意思的是,攻击者完全不需要接触受害者系统,只需要在GitHub上注册一个名字然后等。这意味着任何使用同一AI模型的用户,只要幻觉出相同的假包名,都会被引导到同一个恶意资源。研究者提了一个最直接的防御建议,让AI在获取资源之前先搜索一下。搜索能把AI"锚定"到真实存在的资源上,大幅降低幻觉概率。但这个修复需要工具厂商来实现,用户自己改不了。关闭自动运行模式。Claude Code有skip-permissions参数,Gemini CLI有yolo mode,这些模式让AI不等确认就执行命令,是HalluSquatting最喜欢的场景在CI/CD流水线里加一步包名验证,确认AI推荐的包在官方registry里真实存在关注工具厂商的安全更新,研究者说已经在公开前通知了所有受影响的厂商翻了一圈Hacker News和安全社区的讨论,开发者对这事的态度分两派。【数据洞察】理性用户A算了一笔账,85%的幻觉率意味着如果你每天让AI安装10个包,其中有8个可能是AI编出来的名字。如果这些名字被抢注了,你的开发环境就是攻击者的后花园。【犀利吐槽】安全从业者B说得更直接,"我们花十年教育开发者不要随意pip install,结果AI编程工具把这个安全意识一键清零了。"也有人觉得不用太紧张。理由是目前没有大规模攻击案例,研究者用的是受控环境,实际成功率可能没那么高。这个说法有道理,但攻击"还没大规模发生"不等于"不会发生"。25万个可注册的幻觉域名摆在那里,react-codeshift已经传播到237个项目了,这事的窗口期不会太长。具体到开发者日常场景,如果你每次让AI装包的时候都开了自动确认,那被攻击的概率就不是理论值了。HalluSquatting让我想到一个老故事。19世纪英国电信刚普及的时候,有人发现可以在电话线上搭线窃听。当时的反应是"谁会这么干",而不是"怎么防"。等到真正出事了,加密通信才被认真对待。AI编程助手的幻觉问题也是类似的。我们一直在说"幻觉是体验问题","AI偶尔编东西出来很正常"。现在安全研究人员把"偶尔编东西"变成了一条可复现的攻击链。从"AI犯傻"到"攻击入口",中间只隔了一个GitHub注册按钮。更值得想的是,AI编程工具的权限模型正在往"给AI更多自主权"的方向走。skip-permissions、yolo mode、auto-accept,这些功能的存在说明市场认为"减少确认步骤"是好的用户体验。但每减少一次确认,就多一次AI被劫持后执行恶意代码的机会。体验和安全之间的张力,在这件事上体现得很具体。算了一笔账,如果一个10人团队全部开启auto-accept,每个开发者每天让AI执行20条命令,一天就是200次"AI可能被劫持"的窗口。一周就是1400次。
如果你每天都在用AI编程工具,可以检查一下最近的依赖列表,看看有没有AI推荐但你从来没在官方registry里确认过的包。这个不花什么时间,但可能帮我们避开一个坑。研究论文已经公开了,厂商回应和安全补丁的节奏,值得持续关注。