<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Plugin4Shell on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/tags/plugin4shell/</link>
        <description>AI博士万戈的技术博客，聚焦 Agentic AI、AI Infra 与 Agent Security，分享 AI 基础设施与工程落地实践。</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>admin@yesmiracle.net (万戈)</managingEditor>
        <webMaster>admin@yesmiracle.net (万戈)</webMaster>
        <lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.yesmiracle.net/tags/plugin4shell/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Plugin4Shell 横空出世！零点击 RCE 攻陷四大 AI 编码 Agent——SHA 锁定机制形同虚设！</title>
        <link>https://www.yesmiracle.net/post/20260919-plugin4shell-zero-click-rce/</link>
        <pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
        <author>admin@yesmiracle.net (万戈)</author>
        <guid>https://www.yesmiracle.net/post/20260919-plugin4shell-zero-click-rce/</guid>
        <description>&lt;img src="https://www.yesmiracle.net/post/20260919-plugin4shell-zero-click-rce/cover.svg" alt="Featured image of post Plugin4Shell 横空出世！零点击 RCE 攻陷四大 AI 编码 Agent——SHA 锁定机制形同虚设！" /&gt;&lt;p&gt;你跑着 Claude Code，每天处理上百个 PR。它装了 3 个社区插件：一个自动生成测试用例，一个查 Jira 工单，一个监控 CI 状态。这些插件来自你信任的官方市场，每个都经过了代码审查，SHA 锁定到特定版本——安全团队签了字，合规过了关，一切看起来无懈可击。&lt;/p&gt;
&lt;p&gt;但 SHA 锁定本身是假的呢？&lt;/p&gt;
&lt;p&gt;2026 年 9 月 17 日，&lt;strong&gt;AIR Security&lt;/strong&gt; 公开了一个命名为 &lt;strong&gt;Plugin4Shell&lt;/strong&gt; 的零点击远程代码执行漏洞（CVE 待分配）。这不是一个常规的软件漏洞——它击穿了所有 AI 编码 Agent 共享的插件安全模型。&lt;strong&gt;Claude Code、OpenAI Codex、GitHub Copilot、Google Gemini CLI——四大主流 AI 编码 Agent 无一幸免。&lt;/strong&gt; 截至目前，Anthropic 和 OpenAI 已发布补丁，Google 选择弃疗，而 GitHub 仍未修复。&lt;/p&gt;
&lt;h2 id=&#34;plugin4shell第一个-ai-agent-供应链漏洞&#34;&gt;Plugin4Shell：第一个 AI Agent 供应链漏洞&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;这是 AI Agent 生态系统的第一个供应链漏洞，&amp;rdquo; AIR 的研究员 Or Nevo、Dor Granat 和 Niv Hoffman 在报告中写道。&lt;/p&gt;
&lt;p&gt;⚠️ &lt;strong&gt;关键数据一览：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;详情&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;漏洞名称&lt;/td&gt;
          &lt;td&gt;Plugin4Shell&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;发现者&lt;/td&gt;
          &lt;td&gt;AIR Security（Or Nevo / Dor Granat / Niv Hoffman）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;发现时间&lt;/td&gt;
          &lt;td&gt;2026 年 5 月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;披露时间&lt;/td&gt;
          &lt;td&gt;2026 年 6 月（厂商）；2026 年 9 月 17 日（公开）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;影响范围&lt;/td&gt;
          &lt;td&gt;Claude Code / Codex / Copilot / Gemini CLI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;攻击类型&lt;/td&gt;
          &lt;td&gt;零点击远程代码执行 (Zero-Click RCE)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;漏洞根因&lt;/td&gt;
          &lt;td&gt;Git SHA-pinning 后的 checkout 结果未验证&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CVSS 评级&lt;/td&gt;
          &lt;td&gt;高严重性（待官方分配）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这是 AIR Security 第三次敲响 AI Agent 供应链安全的警钟。此前他们展示了 &lt;strong&gt;The Story of Skills&lt;/strong&gt;（一篇恶意 skill 感染 26,000+ Agent）和 &lt;strong&gt;SkillJacking&lt;/strong&gt;（925 个已上架 skill 被劫持，影响 134,000 Agent）。Plugin4Shell 是第三幕——这次，问题出在安全机制本身。&lt;/p&gt;
&lt;h2 id=&#34;攻击链拆解一个缺失的git-status&#34;&gt;攻击链拆解：一个缺失的「git status」&lt;/h2&gt;
&lt;h3 id=&#34;第一层sha-锁定的信任假设&#34;&gt;第一层：SHA 锁定的信任假设&lt;/h3&gt;
&lt;p&gt;AI 编码 Agent 的插件系统依赖一个简单的安全模型：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;市场（marketplace）对插件代码做代码审查&lt;/li&gt;
&lt;li&gt;审查通过后，将插件「锁定」（pin）到一个特定 Git commit 的 SHA 值&lt;/li&gt;
&lt;li&gt;Agent 安装时，根据这个 SHA 去 checkout 指定版本的代码&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个模型假设：&lt;strong&gt;给出 SHA → Git checkout 该 SHA → 得到的代码就是被审查过的代码。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但 Agent 只做了前半段——把 SHA 传给 Git——却&lt;strong&gt;从未验证 Git 实际 checkout 的代码是否匹配这个 SHA&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;第二层分支名冒充-sha&#34;&gt;第二层：分支名冒充 SHA&lt;/h3&gt;
&lt;p&gt;攻击者控制了一个插件仓库（通过上架良性插件后作恶，或直接攻破已有插件的仓库），然后创建一个新的分支，把分支名设为被锁定 commit 的 40 字符 SHA 值。&lt;/p&gt;
&lt;p&gt;当 Agent 执行 &lt;code&gt;git checkout &amp;lt;SHA&amp;gt;&lt;/code&gt; 时，Git 的引用解析逻辑会优先匹配分支名而非 commit 对象。结果：&lt;strong&gt;Agent 以为自己 checkout 了被审查的 commit，实际运行的却是恶意分支上的代码。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、GitHub Copilot 三者的攻击路径完全相同。Gemini CLI 有独立的变体——它使用 &lt;code&gt;FETCH_HEAD&lt;/code&gt; 作为 checkout 目标，攻击者只需创建一个同名分支即可重定向。&lt;/p&gt;
&lt;h3 id=&#34;第三层自动更新让攻击零点击&#34;&gt;第三层：自动更新让攻击零点击&lt;/h3&gt;
&lt;p&gt;这不是一个需要你「安装恶意插件」的漏洞。你只需要&lt;strong&gt;正常安装过一个插件&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Claude Code 和 Codex 默认在后台自动更新插件。当攻击者在市场上更新了插件的 pinned SHA（比如通过一个看似无害的 PR 获得批准），然后执行 rug-pull——将新版本替换为恶意代码——Agent 的自动更新机制会在后台静默执行恶意 checkout，&lt;strong&gt;不需要用户任何点击或确认&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;第四层跨市场覆盖&#34;&gt;第四层：跨市场覆盖&lt;/h3&gt;
&lt;p&gt;GitHub 声称其在 GitHub.com 上禁止创建与 SHA 同名的分支或标签，但这不足以防御 Plugin4Shell。&lt;strong&gt;插件市场同样可以托管在 Bitbucket、GitLab 等平台上&lt;/strong&gt;——而 Claude Code、Codex、Copilot 都官方支持这些平台。GitHub 的防护只覆盖了 GitHub 生态内的一小部分。&lt;/p&gt;
&lt;h2 id=&#34;补丁状态两家已修两家仍未&#34;&gt;补丁状态：两家已修，两家仍未&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;厂商&lt;/th&gt;
          &lt;th&gt;产品&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;状态&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Anthropic&lt;/td&gt;
          &lt;td&gt;Claude Code&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅ 已修复&lt;/td&gt;
          &lt;td&gt;版本 2.1.179&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenAI&lt;/td&gt;
          &lt;td&gt;Codex&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅ 已修复&lt;/td&gt;
          &lt;td&gt;版本 0.146.0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Google&lt;/td&gt;
          &lt;td&gt;Gemini CLI&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;❌ 不修复&lt;/td&gt;
          &lt;td&gt;已弃用，建议迁移到 Antigravity&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Microsoft / GitHub&lt;/td&gt;
          &lt;td&gt;Copilot&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;❌ 未修复&lt;/td&gt;
          &lt;td&gt;声称 GitHub 的命名限制足够，AIR 反驳称跨平台市场不受此限制&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最令人担忧的是 &lt;strong&gt;GitHub Copilot&lt;/strong&gt;。近 90% 的 Fortune 500 企业使用 Copilot，覆盖面极广。AIR 团队自 6 月起就向微软报告了此漏洞，但「由于他们当前收到的披露量太大，我们没有得到回应」。&lt;/p&gt;
&lt;h2 id=&#34;不止于孤立漏洞设计范式的系统失效&#34;&gt;不止于孤立漏洞：设计范式的系统失效&lt;/h2&gt;
&lt;p&gt;Plugin4Shell 最值得警惕的不是它的攻击技巧，而是&lt;strong&gt;同样的设计错误重复出现在所有主流 Agent 中&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是某个厂商产品中的一个实现偏差——它是整个行业对「安全锁定」这一概念的共同误解。Agent 开发者们认为「给了 SHA 就是安全的」，却忽略了关键的验证步骤。四种不同实现、四个不同厂商、相同的缺失。&lt;/p&gt;
&lt;p&gt;这与此前我在 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260821-agentjacking-mcp-sentry-injection/&#34; &gt;《Agentjacking 横空出世！一个假 Sentry 错误报告就能劫持你的 AI 编码 Agent》&lt;/a&gt; 中分析的攻击模式如出一辙：安全层的弱点不在「入口」，而在「验证」。&lt;/p&gt;
&lt;h2 id=&#34;防御方案分层应对&#34;&gt;防御方案：分层应对&lt;/h2&gt;
&lt;p&gt;面对 Plugin4Shell 这类供应链攻击，企业可以从四个层面构建防御：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;架构隔离&lt;/strong&gt;：AI 编码 Agent 不应直接运行在与生产环境同权限的网络中。Agent 工作站应当视为高敏感端点，与开发/CI/CD 环境做网络微隔离。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输出净化&lt;/strong&gt;：Agent 安装插件时的 Git checkout 操作应增加额外的完整性验证。不仅仅是信任 Git 的返回值，而是手动比较 checkout 结果的 HEAD commit 是否与预期的 SHA 一致。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;沙箱强化&lt;/strong&gt;：即使插件被攻破，Agent 的运行时权限也应以最小权限原则执行。容器化运行 Agent，限制文件系统访问和网络出口——这和 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260731-mcp-supply-chain-security/&#34; &gt;《Agent Supply Chain Attack：从 MCP 配置投毒到供应链污染》&lt;/a&gt; 中提出的防御建议一致。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;供应链治理&lt;/strong&gt;：企业应建立内部插件白名单，禁止直接使用公共市场未审查的插件。所有插件需经过内部安全团队的二次审查和签名验证。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;Plugin4Shell 的杀伤力不只在于它的技术细节，而在于它暴露了一个更深层的事实：&lt;strong&gt;AI Agent 生态的安全假设还停留在上个时代。&lt;/strong&gt; 我们给了 Agent 最高权限——访问源代码、云凭据、CI/CD 管道——却在插件分发层用了一句未经验证的 &lt;code&gt;git checkout&lt;/code&gt; 来保证安全。&lt;/p&gt;
&lt;p&gt;AIR 团队在披露中说得最直白的一句话我反复读了几遍，它应该被每个使用 AI 编码 Agent 的团队记住：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;这是一个市场无法修复的漏洞，用户必须更新自己的 Agent。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;安全不是买来的功能，而是每一个 &lt;code&gt;git checkout&lt;/code&gt; 之后多问一句：&lt;strong&gt;你确定你拿到了你想要的代码？&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;📌 &lt;strong&gt;延伸阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260821-agentjacking-mcp-sentry-injection/&#34; &gt;《Agentjacking 横空出世！一个假 Sentry 错误报告就能劫持你的 AI 编码 Agent》&lt;/a&gt; — 同一研究方向：利用 MCP 集成的另一端漏洞攻陷编码 Agent&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260731-mcp-supply-chain-security/&#34; &gt;《Agent Supply Chain Attack：从 MCP 配置投毒到供应链污染》&lt;/a&gt; — Agent 生态供应链安全的系统性风险&lt;/li&gt;
&lt;li&gt;AIR Security 完整报告：https://www.air.security/blog-posts/plugin4shell&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
