9 月 19 日,安全研究者披露了一类被命名为 Plugin4Shell 的零点击远程代码执行漏洞,影响 Claude Code、Codex、GitHub Copilot 与 Gemini CLI 这四款主流编程智能体。它的危险不在于某个具体 bug,而在于它打中的是智能体生态里此前很少被正视的信任链:插件市场。有研究者把它称为 agent 生态里此前少见的供应链类漏洞——攻击者不需要点什么,只要 marketplace 一更新,恶意代码就顺着自动更新进了开发者的环境。
pin 显示完好,检出已被替换
漏洞的核心是一个错位:智能体在装插件时会对某个提交做 SHA 固定(pin),但只校验「pin 存不存在」,不校验「检出是否真的成功」。于是攻击者可以把恶意代码塞进看似完好的插件里,pin 看起来没变,实际落地的代码已经被换掉。Claude Code、Codex、GitHub Copilot 共用一套与 git 分支名处理相关的逻辑,Gemini CLI 则是另一处 fetch/checkout 的问题,但结果一致:pin 形同虚设。
增量认知:这类漏洞最反直觉的地方在于,它绕过了「固定版本就安全」的常识。开发者的本意是锁死一个可信提交,但校验只做了半截——验证的是意图,不是结果。这给所有「信任链条末端」的自动化组件提了个醒:任何只检查配置存在、不检查结果落地的机制,都可能在某一刻变成后门。
自动更新成了投递通道
更麻烦的是,部分智能体默认开启后台自动更新。当 marketplace 把被投毒插件的 pin 一 bump,智能体就会在没有任何用户操作的情况下重新检出,把载荷直接拉进环境。研究者从 5 月发现、次月披露,并演示了端到端链路:早期一次插件扩散就触达超过 2.6 万个智能体,通过所谓 SkillJacking 接管 925 个技能、进一步触达约 13.4 万个智能体。披露时仍有两款智能体尚未修补。
这里的关键词是「按装机量放大」。供应链漏洞的危害从来不按漏洞数量计,而按已安装基数计——一个被信任的插件市场,一旦失守,影响面会顺着装机量指数级铺开。
开发侧能立刻做的几件事
应对清单:其一,能关自动插件更新就先关,改为人工复核后再装;其二,装任何插件前手动比对实际检出的代码哈希与期望提交是否一致,别只看 pin;其三,优先选强制提交校验、拒绝分支名与哈希冲突的市场或智能体;其四,收紧智能体运行时的权限,把它与生产资料、敏感仓库隔离。这些动作不复杂,但能挡掉绝大多数同类投毒。
对智能体平台方,这件事是个分水岭式的信号:当智能体会自动装插件、自动跑代码,插件市场就不是应用商店,而是事实上的代码执行入口,必须按供应链安全标准来管——强制签名、强制哈希校验、异常插件行为监测,一样都不能少。目前官方及行业暂未披露更多细节,后续将持续跟进迭代动态。
从更长的时间轴看,Plugin4Shell 提醒我们:智能体生产力的来源(自动装能力、自动接工具、自动执行),恰恰也是攻击面扩张的来源。能力越强,兜底机制越不能只看「它会不会做」,还要看「它做的到底是不是当初说好的那一个」。