你有没有想过一个问题:AI 让你
npm install的那个包,真的存在吗?
7 月 8 日,以色列特拉维夫大学、Technion(以色列理工学院)和 Intuit 的研究人员联合发表了一篇论文,提出了一种叫 HalluSquatting 的新型攻击方式。
核心发现让我出了一身冷汗:AI 编程助手推荐的 GitHub 仓库名称,平均幻觉率高达 92.4%。
不是拼错了包名,不是搞混了版本号——是整个仓库根本不存在,AI 凭空捏造了一个名字。
而攻击者已经在利用这一点了。
论文全名叫 "Beware of Agentic Botnets: Scalable Untargeted Promptware Attacks via Universal and Transferable Adversarial HalluSquatting",名字很长,核心思路三句话讲清:
你可能听过 typosquatting(域名/包名抢注),攻击者注册和知名包相似的名字,比如 loadash 冒充 lodash。
HalluSquatting 比这狠得多:它不需要猜你会打错什么字,它直接预测 AI 会编什么名字。而且预测准确率极高。
整个攻击链分五步:
攻击者选一个热门开源项目,反复问不同的 AI 助手:"帮我克隆这个项目"或"帮我安装这个工具"。
AI 会编造一个不存在的仓库名或包名。关键发现:不同用户问同一个问题,AI 编出来的假名字有 58% 的概率是相同的。
这意味着攻击者可以大规模、自动化地预测 AI 会推荐哪些假名字。
攻击者拿到这些"AI 最爱编的名字",去 GitHub、npm、PyPI 上注册同名项目,放入看起来正常但暗藏恶意逻辑的代码。
这是 HalluSquatting 和普通供应链攻击的关键区别。攻击者不只放恶意代码,还会在 README 或代码注释里嵌入 Prompt Injection——专门劫持 AI Agent 的指令。
一旦 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%。
这不是纯理论攻击。
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.dev 或 snyk 扫描依赖树 |
每次构建时 |
最重要的一条原则:永远不要让 AI Agent 自动执行未经你确认的 npm install。
一行命令就能验证:
# 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 推荐安装的包是否真实存在吗?还是直接复制粘贴就装了? 评论区说说你的习惯。