AI编程工具的普及速度超出了所有人的预期。JetBrains开发者生态调研显示,Claude Code的采用率从2025年4月的3%飙到2026年1月的18%,九个月翻了六倍。GitHub Copilot、Cursor、Claude Code加起来有数百万日活开发者。
效率的代价随之而来。安全公司Socket的威胁情报显示,2026年上半年软件供应链攻击的活动量是2025年全年的2.6倍,被投毒包的数量是去年的4.5倍。其中一类新攻击专门盯上AI的幻觉,安全圈给它起了个名字:Slopsquatting(幻觉包抢注)。
什么是Slopsquatting
原理拆开看非常简单。
大模型不查包管理器。它根据训练数据的统计规律”编”出一个听起来合理的包名,比如`requests-enhanced`、`fastapi-middleware`、`aws-helper-sdk`。这些包在PyPI或npm上根本不存在。
USENIX Security 2025的一项研究测试了16个大模型、57.6万个样本,结果约19.7%的AI包推荐指向不存在的包。Socket.dev的测试数据更高:涉及第三方库的提示词里,20%到30%的回复包含虚构包名。
攻击者做的事只有两步:批量向AI编程助手发送真实场景的提示词,收集它反复”梦”出来的包名;抢在这些名字被人发现之前去PyPI、npm注册,塞进恶意载荷。
注册成本为零,PyPI和npm上传都不收钱。攻击者的成本接近零,收益却可能覆盖成千上万个开发者。
幻觉是可预测的,这才是最危险的地方
单次幻觉像随机错误,批量幻觉就成了攻击者的情报。
研究人员把同样的提示词重跑十次,43%的幻觉包名每次都一模一样。攻击者只需要对着热门模型跑几十个提示词,找出那些稳定出现的名字,抢先注册即可。
Aikido Security的研究员Charlie Eriksen做过一个演示。2026年1月,他发现某个大模型总把两个真实工具jscodeshift和react-codemod”融合”成一个不存在的包`react-codeshift`。他防御性地抢注了这个npm包名,结果令他后背发凉:
这个幻觉名已经通过AI生成的Agent技能文件扩散到237个GitHub仓库,注册当天就记录到来自自主Agent的真实下载请求。Eriksen的原话是:”这本来就是一次幻觉,它扩散到了237个仓库,产生了真实下载。它没变成攻击武器的唯一原因是我先到了。”
不止幻觉:攻击者已经开始给AI”投喂”恶意包
Slopsquatting利用的是AI犯错。更进阶的攻击直接操纵AI的判断。
ReversingLabs披露的PromptMink攻击活动值得所有团队警惕。朝鲜威胁组织Famous Chollima制作了诱饵包`@solana-launchpad/sdk`,它的README不是写给人看的,是写给大模型看的:文档措辞经过专门设计,让AI在解析依赖时认为这个包”权威且合适”。这种手法被称为LLM优化(LLMO)滥用加知识注入。
后果很具体:一个参加Solana Graveyard黑客松的合法项目把该包写进了依赖,仓库历史显示,那笔提交的co-author是Claude Opus。也就是说,AI自己把恶意包推荐进了人类的项目。
2026年2月披露的Clinejection事件把风险又推高一级。Cline AI编程工具的GitHub仓库配置了AI issue分诊工作流,权限过宽。攻击者在issue标题里嵌入指令,诱导Agent执行来自攻击者提交的npm install,再通过GitHub Actions缓存投毒,最终窃取了nightly发布管线的npm、VS Code Marketplace和OpenVSX发布凭证——影响面覆盖500万开发者。
四道防线,今天就能落地
2026年5月,CISA联合NSA和五眼联盟发布联合指南,核心态度很明确:把AI编程Agent当作”默认不可信的组件”,管好它。
具体到开发团队,四件事优先做:
1. 装包前花30秒验证。 AI推荐的任何包,先去PyPI或npm确认存在、看发布日期和维护者。发布不到一周、星标几十个、README明显机器生成的包,直接跳过。这一步成本极低,收益最大。
2. 锁文件必须进版本库。 `requirements.txt`、`package-lock.json`、`cargo.lock`提交到仓库,版本锁定,并在代码评审中重点检查新增依赖。幻觉包在评审环节会露出马脚。
3. CI/CD接入行为分析扫描。 Socket、Snyk、Aikido这类工具会分析包的安装钩子、混淆代码和可疑网络请求,能在载荷执行前拦下来。传统CVE库查不到新注册的投毒包,行为分析是关键。
4. 收紧Agent权限。 CISA指南要求:维护一份预审批的第三方组件白名单,限制Agent只能从中选;任何高影响操作(比如在生产管线装新依赖)必须人工批准;给Agent最小工具权限;审计所有Agent的install日志——那些没有人类评审记录的安装最危险。
写在最后
传统供应链防御的假设是”人会犯错”,防的是手滑装错包。AI时代的前提变了:AI不但会错,还会稳定地错同一个地方。
npm针对相近名称的碰撞检测对幻觉包完全失效,因为幻觉名是全新的字符串。防线上没补丁,防线只在习惯里——把”验证AI推荐的每个依赖”变成和”写测试”一样的肌肉记忆,你的项目就甩开了大多数团队。
苏公网安备32010502011527号
发表回复