我看完这篇安全论文——AI推荐的npm包,92%是编出来的

你有没有想过一个问题:AI让你 npm install 的那个包,真的存在吗?

7月8日,以色列特拉维夫大学、Technion(以色列理工学院)和 Intuit 的研究人员联合发表了一篇论文,提出了一种叫 HalluSquatting 的新型攻击方式。

核心发现让我出了一身冷汗:AI编程助手推荐的GitHub仓库名称,平均幻觉率高达 92.4%。

不是拼错了包名,不是搞混了版本号------是整个仓库根本不存在,AI凭空捏造了一个名字。

而攻击者已经在利用这一点了。

什么是 HalluSquatting

论文全名叫 "Beware of Agentic Botnets: Scalable Untargeted Promptware Attacks via Universal and Transferable Adversarial HalluSquatting",名字很长,核心思路三句话讲清:

  1. AI编程助手会编造不存在的包名和仓库名(这就是大模型的"幻觉")
  2. 同一个问题反复问,AI编出来的假名字惊人地一致------58% 的概率编出同一个名字
  3. 攻击者提前注册这些假名字,埋入恶意代码和 Prompt 注入------坐等开发者通过AI上钩

你可能听过 typosquatting (域名/包名抢注),攻击者注册和知名包相似的名字,比如 loadash 冒充 lodash

HalluSquatting 比这狠得多:它不需要猜你会打错什么字,它直接预测AI会编什么名字。而且预测准确率极高。

攻击怎么运作的

整个攻击链分五步:

第一步:挖掘"幻觉包名"

攻击者选一个热门开源项目,反复问不同的AI助手:"帮我克隆这个项目"或"帮我安装这个工具"。

AI会编造一个不存在的仓库名或包名。关键发现:不同用户问同一个问题,AI编出来的假名字有58%的概率是相同的。

这意味着攻击者可以大规模、自动化地预测AI会推荐哪些假名字。

第二步:抢注假名字

攻击者拿到这些"AI最爱编的名字",去 GitHub、npm、PyPI 上注册同名项目,放入看起来正常但暗藏恶意逻辑的代码。

第三步:植入 Prompt 注入

这是 HalluSquatting 和普通供应链攻击的关键区别。攻击者不只放恶意代码,还会在 README 或代码注释里嵌入 Prompt Injection------专门劫持AI Agent的指令。

一旦AI读取了这些内容,它会被"洗脑",开始执行攻击者预设的操作。

第四步:等AI上钩

当一个真实的开发者问AI:"帮我安装这个工具",AI编出同一个假名字,自动去 npm/GitHub 拉取------拿到的就是攻击者的恶意版本。

第五步:感染扩散

被劫持的AI Agent开始执行攻击者的指令:开反向 shell、偷密码和 Token、挖矿,甚至感染其他AI Agent,形成僵尸网络(Botnet)。

论文标题里的 "Agentic Botnets" 就是这个意思------由AI Agent组成的僵尸网络。

有多严重?论文里的数字

研究人员对多款主流AI编程工具做了大规模测试:

场景 幻觉率
2025年新发布的GitHub仓库 92.4%
2019年之前的老牌GitHub仓库 0.9%
仓库克隆场景(整体) 最高 85%
Skill/插件安装场景 最高 100%

一个反直觉的发现:越新的项目,AI越容易编造假名字。

老项目(2019年前)因为训练数据充分,幻觉率只有 0.9%。但2025年新发布的项目,AI几乎在瞎编------因为这些项目不在训练数据里,模型只能"猜"。

这意味着:当你让AI帮你克隆一个最近刚火起来的新项目时,它给你的仓库地址大概率是假的。

哪些工具中招了

论文测试了9款AI编程工具,攻击成功率差距巨大:

工具 攻击成功率 风险等级
Cursor 20-35% ⚠️ 中等
GitHub Copilot 20-35% ⚠️ 中等
Gemini CLI 20-35% ⚠️ 中等
Windsurf 20-35% ⚠️ 中等
Cline 20-35% ⚠️ 中等
OpenClaw 80-100% 🔴 极高
ZeroClaw 80-100% 🔴 极高
NanoClaw 80-100% 🔴 极高

主流商业工具(Cursor、Copilot、Gemini CLI)的攻击成功率在 20-35%------看起来不算特别高?换个角度:你每让AI安装5个包,就有1到2个可能是假的。

而基于开源模型的工具(OpenClaw 系列),成功率直接飙到 80-100%。

真实案例:react-codeshift

这不是纯理论攻击。

2026年1月,安全公司 Aikido Security 的研究员 Charlie Eriksen 发现了一个真实案例:AI编程助手经常向开发者推荐一个叫 react-codeshift 的npm包。

问题是------这个包在 npm 上根本不存在。

它是AI编出来的。但 Eriksen 发现,已经有237个 GitHub 仓库的代码里包含了安装这个假包的指令,全都是AI生成的代码里写的。

如果有人抢先在 npm 上注册了 react-codeshift 并放入恶意代码,这237个仓库的所有用户都会中招------而且他们根本不知道自己装了个假包。

这不是孤例。2025年8月的 Nx 供应链攻击 中,攻击者利用 AI 编程工具扫描开发者的加密货币钱包和 Token。2026年3月的 Axios npm 攻击中,维护者 Token 被盗,恶意版本被推送到 npm 官方源。

AI编程工具正在成为供应链攻击的新入口。

防护速查表

收藏这张表,每次AI推荐你安装新包时对照检查:

检查项 具体操作 何时执行
验包真伪 运行 npm view <包名> 确认包存在且有下载量 每次AI推荐新包时
查仓库来源 去 GitHub 手动搜索仓库名,确认 Star/Fork/活跃度 每次AI给你仓库链接时
审查安装脚本 npm diff <包名> 查看包内容,特别看 postinstall 脚本 每次新增依赖时
锁定依赖版本 提交 package-lock.json,开启 npm audit 项目初始化时
用私有仓库 配置公司级 npm 私有源,只允许白名单内的包 团队项目必须
关闭自动执行 AI推荐安装命令时,先审查再手动执行,不要让Agent自动 npm install 所有场景
持续扫描 在 CI/CD 中集成 socket.devsnyk 扫描依赖树 每次构建时

最重要的一条原则:永远不要让 AI Agent 自动执行未经你确认的 npm install

一行命令就能验证:

bash 复制代码
# AI说"npm install xxx"之前,先跑这个
npm view xxx

# 看到 404?恭喜你,AI在编故事

写在最后

HalluSquatting 论文揭示了一个很多开发者还没意识到的问题:我们对AI编程助手的信任,已经超出了它应得的程度。

AI确实能帮你写出大部分代码。但它推荐的包名、仓库地址、安装命令------这些看起来最"确定"的输出,恰恰是它最容易编造的部分。92.4% 的幻觉率不是个小数字。

我不是说要停用 AI 编程工具。但至少,当它告诉你 npm install xxx 的时候,花 10 秒钟跑一下 npm view xxx

10秒钟,可能帮你避免一次反向 shell。


你平时会检查AI推荐安装的包是否真实存在吗?还是直接复制粘贴就装了? 评论区说说你的习惯。

相关推荐
心中有国也有家2 小时前
AtomGit Flutter 鸿蒙客户端:Canvas 绘制进阶-路径、渐变与混合模式
android·javascript·flutter·华为·harmonyos
蓝瑟2 小时前
代码越写越乱? 从 Vibe Coding 到 Spec + Harness
人工智能·ai编程·代码规范
小心我捶你啊2 小时前
数据采集和Web解锁不是一回事,从用途到规则区分
前端·爬虫·网络协议
hunterandroid3 小时前
[鸿蒙从零到一] ArkUI 基础组件实战:Text、Image、Button 与 TextInput
前端
fsssb3 小时前
Chromium 源码学习笔记(五):一次点击,在进入 JS 之前先经历了什么?
前端
hunterandroid3 小时前
WorkManager 可靠性实战:唯一任务、重试与幂等设计
android·前端
乐观的Terry3 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程
码哥字节3 小时前
Anthropic 官方的 7 种 Claude Code 自定义方式,你可能只用对了 1 种
ai编程·claude·mcp