# 擅自抢注：当你的人工智能编码助手发明了一个包，而其他人注册了它

> 代码生成模型以可测量的、有时是可预测的速度产生包名称的幻觉。攻击者真实注册这些名称。研究发现了什么，以及为什么它在 `pip install` 运行时很重要。

HisnLabs Security & Research Team · Published 2026-09-25
Canonical: https://hisnlabs.com/zh/blog/slopsquatting-hallucinated-packages-coding-agents

要求编码助手解决问题，有时它会建议安装一个包：用于常见任务的真实包，并且通常是根本不存在的包。它发明了一个看似合理的名称，因为周围的代码模式需要那里的依赖关系。如果您或您的编码代理无论如何运行安装命令，则在 PyPI 或 npm 上实际以该名称注册的任何内容都会出现在您的计算机上。 Python 软件基金会的驻地开发人员、安全研究员 Seth Larson 将由此产生的攻击命名为“slopsquatting”，并注册了模型幻觉的名称，这是 AI 生成的与拼写错误等效的名称。

## 这种情况实际发生的频率有多少

来自德克萨斯大学圣安东尼奥分校、弗吉尼亚理工大学和俄克拉荷马大学的团队直接对其进行了测量：[“我们为您准备了一个包裹！”](https://arxiv.org/abs/2406.10279)，已接受 USENIX Security 2025。在两种语言的 16 个流行模型生成的 576,000 个代码样本中，他们发现“商业模型中至少有 5.2% 是幻觉包，开源模型中至少有 21.7% 是幻觉包”，总共有 205,474 个独特的幻觉包名称。这种情况并不罕见。对于某些开源模型，它大约是建议的依赖项的五分之一。

| 模型类 | 幻觉率（套餐建议） |
| --- | --- |
| 商业模式（平均） | 至少 5.2% |
| 开源模型（平均） | 至少 21.7% |

*Spracklen 等人，USENIX 安全 2025，arXiv：2406.10279。测试的 16 个模型的平均值；个别型号各不相同。*

## 为什么这是可深蹲的，而不仅仅是错误的

一次性发明的名称会带来麻烦，而不是攻击面。让它可被利用的原因是重复：正如 2025 年 4 月 12 日的 [据《登记册》报道](https://www.theregister.com/2025/04/12/ai_code_suggestions_sabotage_supply_chain/) 一样，当研究人员重复运行相同的提示十次时，“43% 的幻觉包每次都会重复，39% 的包永远不会再次出现。”近一半的幻觉名字并非随机噪音；它们与模型在可靠地给出相似代码时所达到的猜测相同。攻击者不需要猜测特定开发人员将输入什么内容。他们可以根据常见提示运行相同的模型，收集重复的名称，并提前在真实包索引上注册这些名称。

*说明：危险时刻*

```console
$ pip install fast-json-normalizer   # suggested by a coding assistant
Collecting fast-json-normalizer
  Downloading fast-json-normalizer-0.3.1.tar.gz
Running setup.py install for fast-json-normalizer ... done
# Nothing here indicates whether this name was ever a real, reviewed project
# or was registered specifically because models keep suggesting it.
```

## 为什么这符合 OWASP 已经跟踪的模式

这是 [OWASP 法学硕士申请前 10 名](https://owasp.org/www-project-top-10-for-large-language-model-applications/) 所说的人工智能辅助开发的供应链风险的一个变体：过去的信任边界是“人类是否选择添加此依赖项”转变为“模型的模式完成是否选择了它”，而模式完成没有名称是否真实的概念。

## 实际该怎么做

- 将编码代理建议的每个包名称视为验证建议，而不是已知良好的依赖项，就像对待初级贡献者从记忆中输入的名称一样。
- 在安装任何不熟悉的东西之前检查注册日期和下载历史记录；最近出现的一个包与常见的人工智能生成的提示模式非常匹配，值得再看一下。
- 固定依赖项并使用锁定文件，因此一旦出现的幻觉名称不会在以后默默地重新解析。
- 观察新安装的软件包在第一次运行时实际执行的操作。新注册的依赖项伸向与它没有业务联系的服务器，这是防火墙可以捕获的信号，即使代码审查错过了该名称。

## FireAI 和 HisnLabs 在其中扮演的角色

A squatted package that phones home still has to make a connection to do it, from a Python or Node process you just ran; FireAI shows you that connection, the process behind it and where it is going, before you decide whether it belongs there.

FireAI 是 HisnLabs 自己的产品：一款直接在 Mac 上运行的 AI 防火墙。它用通俗易懂的语言显示你的应用建立的每一个连接，并让你决定哪些数据可以离开你的 Mac——它的 AI 在本地运行，因此你的流量永远不会发送给我们或任何其他人。HisnLabs 的安全研究团队负责让这些判断保持准确：归类哪些域名只是普通的遥测、哪些属于真正的服务，追踪连接背后的国家和网络，并用真实的流量模式训练设备端模型（FireAI Pilot 功能）——这一切都不会离开你的 Mac。

你可以阅读它背后的技术决策，或试用 FireAI 17 天：[HisnLabs 出品的 FireAI](https://hisnlabs.com/fireai/zh/download)。

## Sources

- [Spracklen et al., “We Have a Package for You!” (USENIX Security 2025 / arXiv:2406.10279)](https://arxiv.org/abs/2406.10279)
- [The Register: AI code suggestions sabotage software supply chain](https://www.theregister.com/2025/04/12/ai_code_suggestions_sabotage_supply_chain/)
- [OWASP: Top 10 for Large Language Model Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)
