先做这四件事
这条的行动项比分析更要紧,所以放在最前面。 把 Claude Code 升到 **2.1.179 或更高**,Codex 升到 **0.146.0 或更高**。Gemini CLI 不会有补丁——它已被弃用,Google 给的路径是迁到 Antigravity。GitHub Copilot 在公开披露时还没有客户端修复,用它装插件的团队目前只能靠减少插件面来降低暴露。 第四件事最少有人做,但可能最关键:**去看一眼你装的插件,它们的仓库托管在哪里。**理由在下一节。
真正的防线落在了 git 托管方的命名规则上
攻击的核心动作是「建一个名字长得像 commit 哈希的分支」。而这件事能不能做成,取决于仓库在谁家。 GitHub 说它不允许用户创建形似 commit SHA 的分支或标签名,GitLab 同样有这层限制。Bitbucket 和自建 git 服务器没有。也就是说,在 agent 侧的补丁之外,**目前挡住这个攻击的是托管方的一条命名规则**——而这条规则是否存在,取决于插件市场把仓库放在了哪里,不取决于你用的是哪个 agent。 这就是为什么 GitHub 说自己不受影响这件事需要按口径读:它的说法在 GitHub 自己托管的范围内成立,但覆盖不到别处托管的插件市场。对使用者来说,结论是这个暴露面不能只按「我用的哪个 agent」来判断,还要按「插件从哪个 git 主机拉取」来判断——而后者是绝大多数人从没审计过的一个维度。
「装了就中」,而且受害条件恰恰是做对了事
这条最该被记住的性质是零点击。Claude Code 和 Codex 默认自动从内置市场更新插件,所以攻击者不需要说服任何人去装新东西——你早就装好的那个插件,会自己把被改写的上游内容拉下来。 更值得停一下的是受害者画像:**你需要做的「错事」,是从一个可信市场装了一个经过审核、并且按安全模型要求钉死了版本的插件。**也就是说,完全按最佳实践操作的人正好落在打击范围里。插件继承开发者权限这一点让后果变得很实在——本地源码、云凭据、SSH 密钥、内部仓库和生产系统,都在同一个权限袋子里。 AIR 另行给出的数字提供了规模感:925 个被接管的 skill 触达约 13.4 万个 agent。这组数字描述的是插件被接管这件事本身的存量,和 Plugin4Shell 是两件事,但放在一起才看得出分发层的面积有多大。
四家各自实现,各自漏掉同一步
这不是某一家的疏忽。四个独立团队写出了同一个错误,说明缺的不是细心,而是这套模式本身少了一步。 修法其实很简单:检出之后把实际的 commit 解析出来,和 pin 对一遍。难点在于这一步只能发生在 agent 内部——市场不能替你保证,因为被绕过的正是「市场给的 pin 有没有被真正落实」这件事。所以只要某个 agent 不修,它的用户就没有完整的缓解手段。 把这条放进本站今年的线索里,升级路径就清楚了:此前写过 RubyGems 上针对 agent 的投毒、LiteLLM 的 MCP 认证绕过被收进 KEV,攻击点先在模型、再到 agent 本身,而 Plugin4Shell 打的是**分发层**——插件市场把附加能力送到几百万台机器上的那条通道。AIR 把它称作 AI agent 生态的第一个供应链漏洞,这个定性是成立的。 一个可以带走的判断:当你的 agent 支持自动更新的第三方扩展时,你的信任边界就不再是「我装了什么」,而是「我装的东西背后那条链路上,每一环各自信任了谁」。
via: AIR 研究报告、Help Net Security 报道、The Register 报道、InfoWorld 报道