一句话看懂:安全公司 Air Security 披露了一个名为 Plugin4Shell 的漏洞,攻击者用一个伪装成 commit 哈希的分支名,就能让 Claude Code、Codex、GitHub Copilot、Gemini CLI 在用户毫无操作的情况下装上恶意插件代码。它直指 AI 编程 agent 插件生态的信任根基。
事件核心:发生了什么
AI 编程 agent 会从插件市场安装扩展。为保证安全,市场通常把插件锁定到某个 commit 哈希,即一串 40 字符、指向某一份代码快照的标识,审查一次便长期运行该版本。
Air Security 发现,agent 只请求这份锁定快照,却从不对实际拉到的代码做校验。Git 允许分支使用几乎任意名字,包括长得像 commit 哈希的字符串;当一个名字同时是合法分支和合法对象时,Git 会优先选分支。因此,控制插件仓库的人只要建一个以锁定哈希命名的分支、指向恶意代码并设为默认分支,agent 就会拉取并运行它,同时报告“安装于锁定提交”。Gemini CLI 则是另一种失效路径:它拉对了 commit,却被名为 FETCH_HEAD 的默认分支劫持了 checkout,正确代码根本没落盘。
受影响的是四款主流产品:Anthropic 的 Claude Code、OpenAI 的 Codex、GitHub Copilot 和 Google 的 Gemini CLI。Anthropic 已在 Claude Code 2.1.179 修复,OpenAI 在 Codex 0.146.0 修复;微软尚未为 Copilot 提供补丁,Google 则表示将停用 Gemini CLI,不再修复。Air 的研究者在 5 月做出可运行的概念验证,6 月通知四家厂商,截至 9 月中旬,公开信息显示尚无 CVE 编号,也没有厂商发布安全公告。
为什么重要
攻击链条里没有“点击”这一步。Claude Code 和 Codex 默认在后台自动刷新已安装插件,也就是说,攻击者不需要诱导开发者安装任何新东西,只要替换一个用户早已信任、日常运行的插件即可。一个可行的路径是:先发布一个真正有用的插件,通过审核、积累用户,再推送一次常规更新让市场重新锁定到新 commit,随后用该 commit 哈希命名一个恶意分支。剩下的由自动更新完成。
更关键的是权限。插件以使用 agent 的同一个人的身份运行,被替换的代码因此能触达其本地文件、保存的凭证,以及所有可登录的系统。OWASP 本月已把“过度代理权”提到 2026 年十大风险第三位,这正是一个具体注脚。插件市场“锁版本”的信任模型,被证明只是假设,而非强制。
对用户/开发者/创作者的影响
GitHub 回应称其拒绝哈希形状的分支名,因此该分支技巧在 GitHub 上无效,其用户不受影响。Air 并不同意这一说法:插件市场可以托管在 Bitbucket 或企业自建 Git 服务器上,两者都允许这类分支名,Anthropic 自家文档也把它们列为合法的市场后端,Copilot 同样支持这些主机,风险正在这里。微软未对媒体置评。
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
对多数开发者而言,实际暴露面比“四款产品”听起来更窄。第三方媒体在 9 月 18 日核查各 agent 自带市场后发现,Anthropic 社区目录以及 Claude Code、Copilot 默认目录中的插件,全部指向 GitHub 仓库;而让漏洞“零点击”的后台自动更新,默认只对厂商自带市场开启,外部市场通常关闭或需手动选择。只用默认目录的人不会遇到分支名那条路径。但 Gemini CLI 不在此列,它的变体依赖 FETCH_HEAD 分支名,GitHub 的规则未必能挡住,而它又是唯一确定不会打补丁的 agent。
值得关注的后续
一是微软是否会给 Copilot 补丁,考虑到财富 500 强中约九成企业使用 Copilot,这一表态影响面不小。二是 Anthropic、OpenAI、Google、微软是否补充安全公告并申请 CVE 编号,目前公开信息显示仍为空白。三是插件市场是否会从“锁 commit 哈希”升级为“拉取后校验工作树实际内容再放行”,Air 给出的修复其实只需一行代码,但需要市场与 agent 双方协同落地。
来源:The Next Web


