我看完这篇安全论文——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推荐安装的包是否真实存在吗?还是直接复制粘贴就装了? 评论区说说你的习惯。

相关推荐
不爱说话郭德纲3 小时前
我只给了 TRAE Work 一张差评截图,它最后却把自己的 P0 结论推翻了?
前端·后端·架构
张元清3 小时前
React useEvent Hook:告别过期闭包的稳定回调 (2026)
javascript·react.js
用户938515635073 小时前
从 DOM 编程到声明式 UI:React useRef 与 useState 底层全解析
前端·javascript·react.js
小月土星3 小时前
19.LeetCode 删除链表的倒数第 N 个节点 超详细题解(JS 版)
javascript
kisshyshy3 小时前
前端路由进化史:从刷新白屏到SPA,手写一个Hash路由就懂了!
前端·javascript·react.js
Sterting4 小时前
第 8 节:表单 — 前端校验的第一道防线
前端·javascript
保加利亚的风4 小时前
Docker 学习文档(Mac + Docker Desktop 版)
前端·后端
java1234_小锋4 小时前
Vue3专题 - 条件渲染
前端·javascript·vue.js
明月_清风4 小时前
🚀 AI Agent 完全入门指南:从 LLM 到生产落地,新手必懂的 34 个核心概念
前端·后端·ai编程