Slopsquatting
Slopsquatting(AI 幻觉包抢注攻击)是一种软件供应链攻击,它利用 AI 编造的软件包名称,诱骗开发者安装恶意依赖项。
Slopsquatting(AI 幻觉包抢注攻击)是一种软件供应链攻击,攻击者会使用 AI 编程助手编造的名称发布恶意软件包,然后诱使开发者或自动化工具安装它。这种陷阱将听起来合理的依赖项推荐变成可执行的第三方代码。它将LLM 中的幻觉——即把编造的信息当作事实呈现——与用于构建软件的软件包管理器联系起来。
安全研究员 Seth Larson 于 2025 年 4 月创造了这个术语,Andrew Nesbitt 随后通过其最初对 slopsquatting 的定义推广了这一术语,并注明 Larson 的贡献。这个名称结合了AI 垃圾内容与“抢注”,指的是抢先注册一个其他人会想要使用的软件名称。
Slopsquatting 的运作方式#
大型语言模型生成的代码中可能包含编造的软件包名称或安装命令。攻击者识别出这个名称后,会在 PyPI 或 npm 等注册表中用该名称发布软件包。当这个推荐再次出现时,安装操作就会获取攻击者发布的软件包。软件包幻觉可能在不同提示和模型中反复出现,使需求集中到攻击者可以抢注的名称上。
注册表的状态决定了结果。未注册的名称会导致安装失败;由攻击者控制的名称则能成功解析,并将恶意代码引入环境。开发者对助手的信任会成为进入软件供应链的途径。
这种风险既影响有人参与的开发,也影响智能体编程。具备工具使用能力的AI 智能体可以将生成的依赖项转化为安装操作。恶意软件包代码可在安装期间或后续使用时执行,并根据环境权限访问文件、凭据和构建产物。
编造的软件包如何进入开发者的工作流程#
Bar Lanyado 发布了一个名为 huggingface-cli 的空 Python 软件包,此前 AI 模型曾推荐这个并不存在的依赖项。截至 2024 年 3 月 28 日,这个由模型幻觉生成的软件包在三个月内获得了超过 30,000 次真实下载。Alibaba 的一个研究代码库 README 中也出现了安装说明。这个空软件包被采用,证明了编造的依赖项名称确实可能进入真实的开发工作流程。
软件包命名还会带来另一种混淆:命令行可执行文件、可导入模块和可安装发行包可能各自使用不同的名称。在生成环境配置说明的计算机视觉开发中,这一点尤其重要。Ultralytics YOLO 通过 ultralytics Python 软件包支持 YOLO26,该软件包提供训练、预测和导出工作流程;将生成的安装说明与该软件包的身份信息进行核对,可在依赖项选择这一 Slopsquatting 可能介入的环节解决问题。
Slopsquatting 与相关攻击#
这些术语描述了影响依赖项安全的不同机制:
- 软件包幻觉:模型编造出一个依赖项。Slopsquatting 通过对抗性注册,将这种命名错误武器化。
- 拼写抢注:攻击者注册一个与现有软件包名称相似的名称,以利用拼写错误获利。Slopsquatting 针对的是 AI 生成的名称。
- 依赖项混淆:当原本需要私有依赖项时,软件包管理器却获取了公共软件包。
- 提示注入:攻击者控制的内容会改变 AI 系统的行为。Slopsquatting 则通过注册表利用生成的软件包推荐。
在构建流水线中防范 Slopsquatting#
依赖项审批会在安装前确认预期的项目、发布者、源代码库和发布历史。以安全为重点的依赖项审查既适用于 AI 生成的新增内容,也适用于人工编写的代码。确认注册表中存在某个名称,只能证明该名称存在;检查其所有权才能确认将运行谁的软件。让助手以已批准的软件包文档为依据进行信息校准,可为这项审查提供软件包身份信息。
在持续集成中,审查关卡会在依赖项变更进入构建前进行控制。固定版本可标识已批准的发行版,而构件哈希值可标识其确切文件。智能体沙箱隔离、受限网络访问和最小权限凭据会限制依赖项代码可使用的资源,从而减少其访问敏感数据和部署凭据的权限。
Python 的哈希校验安装模式使用 --require-hashes 将下载的软件包文件与 requirements 文件中记录的哈希值进行校验。每个依赖项(包括传递依赖项,即其他库所需的库)都必须指定确切版本和获准的构件哈希值。如果下载的软件包哈希值与所有获准哈希值均不匹配,pip 就会拒绝该文件并停止安装。










