AI 代码助手正在生成并不存在的包名,而攻击者正将这些“幻觉”转化为真实的供应链风险。

当 Lasso Security 的安全研究员 Bar Lanyado 向一个 AI 驱动的编程工具询问 Python 客户端时,该模型建议安装 huggingface-cli。这个包其实是一个“幻影”;合法的库名称应为 huggingface_hub。为了证明这种危险,Lanyado 在 Python Package Index (PyPI) 上将这个虚假名称注册为一个空的占位符。在三个月内,该占位符便积累了超过 30,000 次下载,出现在公开文档中,甚至出现在从阿里巴巴代码库中获取的代码示例里。

幻影包是如何演变成真实威胁的

  1. 提示词 → 幻觉 – 开发者向 AI 求助。由于模型是在充满噪声的互联网数据上训练的,它会编造出一个听起来很合理的包名。
  2. 复制粘贴 → 文档 – 该建议出现在 README、Stack Overflow 回答或内部维基中。一旦被记录下来,这个名称就会在社区中传播。
  3. 代码集成 – 开发者信任 AI,将该名称添加到 requirements 文件中并推送到生产环境。

为什么现有的防御手段会漏掉这个问题

静态分析工具和漏洞扫描器主要寻找已知的 CVE 以及具有发布历史的库。一个在 AI 建议出现之前下载量为零的新发布包,既没有 CVE,也没有信誉,因此看起来是“干净”的。标准的“该版本是否存在漏洞?”检查会返回 false,从而给开发者带来一种虚假的安全感。

该实验证明了什么

  • AI 编造的名称进入了生产环境 – 超过 30,000 次下载表明,开发者确实在拉取这些幻影包。
  • 幻觉变成了文档 – 一旦虚假名称出现在公开指南中,它可能会无限期地存在下去,从而传播错误。
  • 注册门槛极低 – 在 PyPI 上发布一个包无需成本且只需几分钟,这降低了供应链滥用的门槛。

真正有效的防御步骤

  • 验证每一个依赖项 – 在添加新的需求之前,请搜索包索引,并确认该名称与现有的、有文档记录的库相匹配。
  • 与官方来源进行交叉检查 – 将建议的名称与供应商的代码库或官方安装指南进行对比。
  • 将新发布的、低采用率的包视为高风险 – 对于下载量极少或发布日期非常近的任何依赖项,都应标记出来进行人工审查。

下一步需要关注什么

结论很简单:AI 的建议并不代表保证。请将每一个新的依赖项都视为未经审查的第三方组件,验证其来源,并在让幻影包进入生产环境之前,密切关注供应链安全。