文章

你让AI写的每一行代码,都在帮黑客「占坑」

想象一个场景。

你让 Cursor 帮你写一个 Django REST API。AI 秒回——代码干净、注释清晰,连 pip install 指令都贴心地列好了。你扫了一眼,看起来都对,复制粘贴,回车。一切正常。

只有一个问题。

它让你装的某个包,根本不存在。

不,不是「作者删库跑路了」那种不存在。是这个包从头到尾就没被任何人创建过。它是 AI 自己编出来的——一个听起来极其合理、但纯属幻觉的包名。

如果只是这样倒还好。代码跑不起来,报个错,你骂一句「什么破 AI」,换个别的方式搞定。

但真正的剧情是:有人抢在你前面,把这个不存在的包名注册下来了。里面塞的不是你想要的工具库,是一个后门。

你 pip install 的那一瞬间,攻击者拿到了你开发环境的完整权限。

这种事已经有名字了。它叫 Slopsquatting——「幻觉占坑」。

不是手滑,是AI在替你犯错

传统的供应链攻击,赌的是你手滑。

typosquatting 就是典型的「欺负你打错字」——把 requests 注册成 reqeusts,把 djangorestframework 注册成 django-rest-framework,等你不小心输错。

但 Slopsquatting 不一样。它不赌你手滑。它赌的是 AI 每次都会犯同一个错。

今年 5 月,一位独立研究者测试了 5 个最前沿的代码大模型——Claude Sonnet 4.6、GPT-5.4-mini、Gemini 2.5 Pro、DeepSeek V3.2、Claude Haiku 4.5——在 20 万次代码生成中检查模型是否引用了不存在的包名。

结果让人背脊发凉:五个模型共同幻觉了 127 个包名,其中 53 个至今仍可被攻击者注册。

不是某个模型有 bug。是所有模型都在犯同一批错。

比如模型经常让你装一个叫 aws-cdk 的包——听起来完全正确,AWS CDK 啊。但实际包名是 aws-cdk-lib。同理,opentelemetry 不存在,真实被拆分成了 opentelemetry-apiopentelemetry-sdktencentcloud 不存在,真实的是 tencentcloud-sdk-python

这些幻觉包名有一种诡异的「正确感」。它们不是胡说八道,它们是模型的「合理外推」——正因为太合理了,人类反而不会怀疑。

而攻击者要做的,只是在 PyPI 或 npm 上蹲守这些名字。

从Slopsquatting到HalluSquatting:攻击升级了

如果说 Slopsquatting 是「在 AI 可能走错的路上挖坑」,那今年 7 月刚被披露的 HalluSquatting 就是「在 AI 的盲区里建了一座军火库」。

特拉维夫大学和以色列理工的研究团队发现,问题不只是包名。AI 编码助手会幻觉出完整的 GitHub 仓库名、插件名、Skill 名。 而一旦你让 Cursor 或 Copilot「帮我克隆那个缓存库」,它可能给你一个听起来很靠谱的仓库名——攻击者早就注册好了,里面藏着恶意指令。

更可怕的是,这些恶意指令不是传统的病毒代码。它们是间接提示注入

什么意思?你让 AI 去拉一个仓库,AI 拉回来了。在这个仓库的 README 或代码注释里,藏着一段你看不到、但 AI 会读到并执行的指令。然后你的 AI 编码助手——那个拥有你终端完整权限的工具——开始按照攻击者的指令干活了。

研究团队测试的结果:让 AI 克隆仓库时,幻觉率高达 85%。让它安装一个具名 Skill 时,幻觉率 100%。

100%。

九个主流 AI 编码工具全部中招:Cursor、Windsurf、GitHub Copilot、Cline、Gemini CLI……一个不剩。

这不是漏洞,这是AI的「出厂设定」

最让人不安的是:这个问题没法从模型层面修复。

你可以让模型更谨慎、少幻觉——但你无法让模型永远不说出「不存在但听起来很对」的东西。因为幻觉不是 bug,是生成式 AI 的工作原理。模型没有「我不知道」的开关,它的底层逻辑就是「根据概率生成最像正确答案的东西」。

而攻击者做的,就是利用这个「像」。

研究论文的结论很直接:「缓解方案存在结构性障碍。」 翻译成人话就是:短期内,这个问题无解。

你想想看,如果一个攻击者提前知道了主流模型都会幻觉哪些包名——而这些包名跨模型高度一致——他只需要花一个下午注册 50 个域名和仓库,然后躺平等着。

不需要钓鱼邮件。不需要社工。不需要零日漏洞。

你的 AI 助手会自己走过去,敲门,把钥匙插进锁孔。

85%的开发者都在用AI写代码

再看一组数据:2026 年,85% 的开发者使用 AI 编码工具,73% 日常使用。GitHub Copilot 付费用户超 470 万,Cursor 超 100 万。Gartner 预测,到 2026 年底,60% 的新代码将由 AI 生成。

这些数字意味着什么?

意味着 HalluSquatting 的攻击面不是某个公司的内网,不是某个产品的用户群——是所有在用 AI 编程的人。每一次「帮我写个脚本」「帮我装个包」「帮我克隆个仓库」,都是一次潜在的攻击入口。

而攻击者要做的,只是在正确的路口提前站好。

那怎么办?

不是让你戒了 AI 编程。那不现实,也没必要。

真正要做的是改一个习惯:不要把 AI 给出的依赖名当作「已确认」,只当作「候选」。

装任何包之前,去 PyPI 或 npm 搜一下是否真的存在。看一眼维护者、下载量、GitHub 仓库是不是活的。这些事花不了 30 秒,但能在整条供应链上砍掉一大半的攻击面。

如果你维护 CI/CD 流水线——锁死依赖版本,新增外部包必须有 PR review,build 阶段的网络权限能收多紧收多紧。

这些操作一点都不酷。跟 AI 画风也不搭。但它们是目前为止,唯一有效的防御。

最后

AI 辅助编程这件事,本质上是把「信任」前置了。以前你查文档、看 GitHub、翻 Stack Overflow,每个环节都有一道人工判断。现在你把这道判断外包给了模型——它说装什么你就装什么。

你省了 30 秒。

但有人在路的尽头,等了三个月了。

热点 AI 安全

如果内容对你有帮助,欢迎请我喝杯咖啡

请我喝咖啡

读者留言

留言

还没有留言,欢迎抢沙发。

留言会立即显示。请友善交流,不要发布广告或无关链接。