你问你的 AI 助手怎么做某件事。它给了你干净、自信的代码,顶部还有一行安装命令:
pip installaws-helper-sdk
你运行它。构建成功。你继续往下走。
只不过aws-helper-sdk根本不存在。是模型编造出来的。而上个月,有人就在 PyPI 上注册了那个一模一样的名字——里面还藏着恶意软件——因为他们知道模型会推荐它。
这就是slopsquatting,一种专为 AI 编程时代打造的供应链攻击。这个名字由 Python 软件基金会的 Seth Larson 在 2025 年创造 [1],而且与大多数安全恐慌不同,这一次是有测量、有记录、且已经在野外出现的。让我带你了解它是怎么运作的、让它成为现实的那些数字,以及——你真正想看的部分——如何避免中招。
域名抢注需要你犯错。这个不需要。
你已经知道域名抢注(typosquatting)。攻击者发布一个名为expres的恶意包,赌的是某天某人手滑打错成pip install express。它偶尔能得手,但依赖于人为失误,而大多数人都会把express拼对。
Slopsquatting 把犯错的负担翻转了过来。你不需要手滑。AI 替你犯错——可靠地、自信地,在看起来完全正确的代码里——而攻击者提前注册了那个幻觉出来的名字。你做的一切都对。你只是信任了这个工具,而工具凭空造出了一个依赖项,某个陌生人早已把它抢注了。
这就是整个转变:漏洞从你的粗心转移到了你的信任。
让它成为现实的数字
这不是思想实验。那项奠基性研究——“We Have a Package for You!”,在 USENIX Security 2025 上发表——生成了横跨 16 个不同 LLM 的 576,000 个代码样本,并检查了模型推荐的每一个包 [2]。
最醒目的结果:所有被推荐的包中有 19.7% 是幻觉出来的——接近五分之一。在这些幻觉中,研究者记录到了205,474 个独一无二的不存在的包名[2]。这不是舍入误差;这是一片巨大、现成的攻击面。
这个比例并不均匀。开源模型更糟(最高约 22%);商业模型表现更好,其中 GPT-4 Turbo 表现最佳,为 3.59% [3]。而 2026 年对更新前沿模型的一次重新评估发现,这一范围已收窄到大约4.6%–6.1%——更好了,但离零还差得远 [4]。问题在缩小,但并未消失。
所以你的 AI 交给你的包名里,大约每 20 个到每 5 个之间就有一个可能指向根本不存在的东西。单看这一点,不过是件烦人的小事——一次失败的安装。但真正让它变成一场攻击的,是下一个事实。
把一个 bug 变成武器的关键:它是可预测的
这就是让 slopsquatting 真正危险的洞见,值得你好好琢磨一下。
如果幻觉是随机的——每次都是一个不同的编造名字——攻击者就做不了什么。你不可能注册 205,000 个名字,然后指望有人正好撞上你拥有的那一个。这种噪声反而会保护你。
但幻觉并不是随机的。当研究人员拿出 500 个曾产生过假包的提示词,把每一个再重新跑十次时,43% 的幻觉名字在每一次运行中都再次出现[2]。同样的提示词,同样的模型,同样的编造出来的包,一遍又一遍。
情况还要更尖锐。一项 2026 年的跨模型研究发现,有 127 个包名被五个不同的前沿模型完全一致地编造出来[4]。不同的工具,同样的幽灵依赖。
这种可预测性就是漏洞所在。一种系统性的、可重复的模型行为,变成了一个攻击者可以提前注册的命名空间[5]。他们不用猜——他们拿热门模型去跑热门提示词,收集那些可靠复现的幻觉,用恶意代码注册那些确切的包名,然后坐等。模型替他们完成了定位,而且是免费的,每当一个新开发者问出类似的问题时都会如此。
为什么你现有的防御措施抓不住它
你可能以为你的供应链工具已经覆盖了这一点。大多数情况下,并没有——因为它是为上一种攻击而建的。
域名抢注检测靠的是字符串相似度:多少次单字符编辑能把expres变成express?对于拼写错误来说,这是一种合理的防御。但 slopsquatting 的名字并不是拼写错误。同一项研究发现,按编辑距离算,只有大约 13% 的幻觉名字是真实包的简单拼写错误——将近一半与任何存在的东西都截然不同[6]。像这样的名字aws-helper-sdk或者fastapi-middleware[5] 与真实包的相似度不够高,无法触发相似性检查。它只是听起来合理——而这正是语言模型擅长生成的东西,也正是它能让不熟悉特定生态的人类审查者放行的原因。
为人类错误构建的防御对机器错误视而不见。这个缺口就是突破口。
这已经在发生了
Slopsquatting 不是一种预测。以幻觉名称注册的恶意包此刻就存在于公共注册表中。安全研究人员记录了一个被 slopsquat 的包,它截至 2026 年 2 月仍录得每周约 233 次下载——即便 npm 已对其施加了安全冻结 [3]。人们(以及他们的智能体)仍在拉取它。
传播途径也比单次安装更糟。当一条幻觉出来的安装命令出现在文档——一个 README、一篇教程、一份看似官方的指南——它会传播给每一个复制它的人。已有记录显示,AI 推荐的、针对不存在包的安装命令进入了受信任的机构文档 [3]。一个幻觉,被复制进一份流行指南,就变成了数千次安装。
而且攻击面如此之大有一个结构性原因:大约 90% 的开源生态处于休眠状态——数百万个被遗弃的 fork 和实验无人问津 [5]。人类停留在踩熟的路上。模型则采样整个互联网,包括被遗忘的角落,这也是它们会浮现出那些听起来真实却并不存在的名称的部分原因。
如何真正防御它
这是你今天就能采取行动的部分。没有单一的魔法修复方案——诚实的防御是几层乏味的控制措施,外加一次思维转变。思维转变才是重要的那个:
把 LLM 给你的任何包名当作不可信输入,而非已核实的事实。模型输出的包名是一个主张,而不是一条引用。每个主张在成为依赖之前都要经过核实。如果你只内化一件事,就内化这一点。
具体来说:
-
安装前先核实。在运行 AI 建议的
install,实际上查一下这个包。它存在吗?有多久了?有多少下载量?它有真实的仓库、真实的维护者、真实的历史吗?一个「听起来很官方」但三周前才发布、只有 200 次下载的包就是一个刺眼的危险信号——那正是刚注册的 slopsquat 的样子。 -
固定并哈希你的依赖。使用 lockfile(
package-lock.json,poetry.lock),固定版本,并在可能的情况下要求哈希(pip install --require-hashes)。任何你没有刻意审查过的东西都不应进入构建。 - 在模型和注册表之间设一道关卡。对于团队:使用私有注册表、允许列表或依赖防火墙,让只有经过批准的包才能解析。AI 想建议什么都可以;只有经过审查的名字才真正安装。
- 在 CI 中扫描新依赖,并把新增的依赖标记出来供人工查看。一个依赖扫描器,加上一条规则:任何新添加的包都要经过人工审查,就能在 slopsquat 合并之前抓住它。
- 扫描你自己的文档和 README。幻觉出来的安装命令会通过复制粘贴传播。像检查代码一样检查你文档中的包管理器命令。
-
这一条对智能体至关重要:如果你有一个自主编码智能体,它会自己运行
install命令,它就会在没有人类介入的情况下拉取恶意软件。一个能安装东西的智能体,就是一个能以机器速度被 slopsquat 攻击的智能体。把它的安装操作置于验证或批准之后——不要让它自行安装未经审查的包。(一些智能体平台开始内置这些安装关卡——我参与的 Xenition 就是其中之一——但原则比任何工具都重要。)
这些没有一条是令人兴奋的。但它们合在一起,就把「AI 这么说,所以我就运行了」变成了「AI 建议了它,所以我检查了它」。这就是全部的防御。
要点
域名抢注惩罚的是粗心——你必须自己犯错。Slopsquatting 惩罚的是信任——具体来说,是那种心照不宣的假设:AI 生成的代码基本上是正确的,所以顶部那行安装命令基本上也是安全的。
它并不安全。那些行里大约每五条就有一条(较新的模型上更少,但永远不会是零)指向不存在的东西——而那些指向不存在的东西的行,指向那里是可预测的,这正是攻击者能在你到达时正好站在另一端的原因。
所以规则很简单,而且只需要你花十秒钟:来自 AI 的包名是一个需要验证的声明,而不是可以直接运行的事实。检查它是否存在、是否真实、是否是你想要的那个——每一次都要检查。因为你不去检查的那一次,可能恰好就是某个人上个月注册的那个名字,就盼着你不会去查。
诚实地问一句:你有没有在没先检查包是否真实存在的情况下,就运行过 AI 建议的install命令?说实话——我干过,而且不止一次,那是在我知道还有这回事之前。你现在的先验证再安装流程是什么样的,这里有没有人真的在现实中抓到过 slopsquatting 的包?
来源与延伸阅读:[1] “slopsquatting” 一词由 Seth Larson(Python Software Foundation)创造,并由 Andrew Nesbitt 在 2025 年推广。[2] Spracklen 等,“We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code-Generating LLMs,” USENIX Security Symposium 2025(跨 16 个 LLM 的 576,000 个样本;19.7% 的幻觉率;205,474 个唯一虚假名称;重跑时 43% 会复现)。[3] 来自 Socket 的报道与分析、Cloud Security Alliance 关于 slopsquatting 的研究简报(2026 年 4 月),以及行业文章(GPT-4 Turbo 3.59%;截至 2026 年 2 月约每周 233 次下载的案例;文档传播案例)。[4] 2026 年前沿模型重新评估(“The Range Shrinks, the Threat Remains”):各模型比率约为 4.6%–6.1%;有 127 个包名在五个模型中被以相同方式幻觉出来。[5] Snyk / 行业评论,讨论可预测性作为可被利用的属性、示例幻觉名称,以及开源休眠(约 90%)。[6] USENIX 2025 研究的 Levenshtein 距离分析:约 13% 的幻觉名称是简单拼写错误;约 38% 是合并两个真实名称的“混同”。这些数字来自 2025–2026 年的学术和厂商研究;请将具体数字视为写作时的报告值,并查阅一手来源——尤其是 USENIX 论文——以了解方法论和最新数据。