大语言模型随口编出的软件包名称,正在被攻击者注册成真正的恶意程序。当开发者用GPT-4这类助手写代码时,助手偶尔会“幻觉”出一个看起来很合理的第三方库,攻击者只需提前占坑,就能把后门送到生产环境。
这种攻击叫“slopsquatting”——利用模型生成虚假但似真的依赖名,再将其植入公开仓库。攻击逻辑很直接:模型产生幻觉名→攻击者注册幻名包→开发者或被AI工具自动引入这个包→恶意代码注入项目。整个过程没有复杂的漏洞利用,只靠对AI输出习惯的预判。
扫描这种威胁的思路也相对明确:对每个依赖项检查它在公开仓库中是否存在。如果仓库里找不到对应的注册信息,就标记为潜在风险。核心代码不过几十行——用Python封装一个检查函数,查询仓库接口,再将项目里的全部依赖轮询一遍。提到的例子中,扫描逻辑把“example-package”“fake-package”这类名字送进registry.api校验,返回200就算存在,否则打上安全警告。
攻击者要完成一次slopsquatting,前面需要走通三步:看准模型高频幻想的包名风格;实时监控并抢注对应的空包;让被污染的包进入实际构建链。只要开发者或AI工具不核对仓库注册情况,恶意依赖就会溜进项目。而且这种攻击不需要窃取凭证,也不依赖任何零日,本质上是对自动化信任的滥用。
防御要从依赖验证流程入手。每次引入一个新包,先通过公开仓库接口做存在性检查;自动化扫描管线里加入对“未被注册依赖”的阻断;定期回扫已有依赖,防止攻击者事后注册。文中给出的脚本思路就是把校验动作前置,不等构建失败才发现问题。
slopsquatting之所以值得关注,是因为它把AI模型的随机输出变成了稳定的攻击面。哪怕模型只是偶尔“胡编”,只要攻击者押中一次,影响就能沿供应链扩散。与其指望模型不再幻觉,不如在工程侧补上验证这一环。
热门跟贴