Air Security 披露 Plugin4Shell:Claude Code/Codex/Copilot/Gemini CLI 外掛供應鏈零點擊遠端執行

重點摘要

重點摘要 資安新創 Air Security 於九月十七日公開 Plugin4Shell:主流 AI 編程代理外掛市集的 SHA 釘選可被繞過,令已安裝外掛在自動更新時被換成惡意版本,實現零點擊遠端程式碼執行。受影響包括 Anthropic Claude Code、OpenAI Codex、Microsoft GitHub Copilot 與 Google Gemini CLI。Anthropic 與 OpenAI 已分別在 Claude Code 2.1.179、Codex 0.146.0 修補;Google 表明 Gemini CLI 將棄用且不修補、建議遷移至 Antigravity;Microsoft 於報道時尚未對 Copilot 推出修補。The Register 同日跟進。本文已對照 Air Security 官方報告與 The Register 交叉核對,來源真實性已驗證。對香港企業而言,這代表「審過、釘選過的外掛」未必等於供應鏈安全。

Air Security 披露 Plugin4Shell:Claude Code/Codex/Copilot/Gemini CLI 外掛供應鏈零點擊遠端執行

重點摘要

資安新創 Air Security 於九月十七日公開 Plugin4Shell:主流 AI 編程代理外掛市集的 SHA 釘選可被繞過,令已安裝外掛在自動更新時被換成惡意版本,實現零點擊遠端程式碼執行。受影響包括 Anthropic Claude Code、OpenAI Codex、Microsoft GitHub Copilot 與 Google Gemini CLI。Anthropic 與 OpenAI 已分別在 Claude Code 2.1.179、Codex 0.146.0 修補;Google 表明 Gemini CLI 將棄用且不修補、建議遷移至 Antigravity;Microsoft 於報道時尚未對 Copilot 推出修補。The Register 同日跟進。本文已對照 Air Security 官方報告與 The Register 交叉核對,來源真實性已驗證。對香港企業而言,這代表「審過、釘選過的外掛」未必等於供應鏈安全。

資安研究機構 Air Security(報告作者 Or Nevo、Dor Granat、Niv Hoffman)於 2026 年 9 月 17 日公開一項名為 Plugin4Shell 的零點擊遠端程式碼執行問題,指主流 AI 編程代理在安裝/自動更新市集外掛(plugin/skill)時,雖採用 SHA 釘選(pin 至特定 commit),卻未在 checkout 後驗證工作樹實際 HEAD 是否等於被釘選的雜湊。攻擊者若控制外掛背後的 Git 倉庫,可使 checkout 解析到惡意內容,同時表面上仍「符合」釘選值。本文已對照 Air Security 官方技術報告與 The Register 2026-09-17 報道交叉核對,來源真實性已驗證。

此漏洞被描述為 AI 代理生態系「第一代供應鏈」級攻擊面:目標不是模型權重或提示注入,而是外掛分發層。企業一旦把編程代理接到原始碼、內部工具與生產憑證,惡意外掛即可繼承該員工/開發者機器上的同等權限。

一、核心事件:SHA 釘選失效後的零點擊 Rug-pull

技術細節

Air Security 指出,受影響代理在安裝外掛時會 clone 倉庫並 git checkout 市集所釘選的 commit SHA,但缺少關鍵斷言:checkout 完成後,以 git rev-parse HEAD 比對釘選雜湊,不符即中止。少了這一步,Git 的「同名歧義」行為可被利用。

對 Claude Code、Codex 與 GitHub Copilot 一類路徑,攻擊者可在控制上游倉庫後,建立名稱恰好為四十位十六進位 SHA 的分支,並將其設為預設分支。當代理執行 git checkout <pinned-sha> 時,Git 在「同名既是 ref 又是 object id」的情況下優先解析為分支,並僅發出 refname is ambiguous 警告,工作樹即可變成攻擊者控制的內容。GitHub 本身拒絕建立形似 commit SHA 的分支/標籤名稱,但 Air 強調市集亦可建於 Bitbucket 或自架 Git;Anthropic 文件亦列出 Bitbucket/自架 Git 為有效市集後端,因此僅靠 GitHub 主機限制不足以覆蓋所有部署形態。

Gemini CLI 變體不同:以 --refgit fetch 取回正確 commit,但隨後的 git checkout FETCH_HEAD 若遇上名為 FETCH_HEAD 的預設分支,會解析到分支而非剛 fetch 的內容。Air 給出的統一修法是:checkout 後驗證實際 HEAD 等於釘選 SHA。

零點擊的關鍵在外掛自動更新。Claude Code 與 Codex 預設會在背景更新已安裝外掛;當市集把釘選值改到新的 SHA,攻擊者再以「分支名=新釘選 SHA」手法置換內容,已信任、已安裝的外掛就會被換成惡意版本——無需用戶再點安裝、無需新提示。

攻擊鏈可分兩條:(1)攻擊者先提交真正良性的外掛通過審核,之後再 Rug-pull;(2)劫持既有作者倉庫(Air 先前 SkillJacking/RepoJacking 已演示接管),再經 Plugin4Shell 把惡意版本推送到所有已安裝該外掛的代理。

修補狀態(以 Air 報告與 The Register 對照為準):

代理 狀態
Claude Code Anthropic 已於 2.1.179 修補
OpenAI Codex 已於 0.146.0 修補(Air 於 2026-08-12 驗證)
GitHub Copilot/Microsoft Copilot Air 稱自六月起已披露;報道時 Microsoft 尚未推出修補。GitHub 發言人指平台禁止形似 SHA 的分支名,認為無法在 GitHub 上利用;Air 反指 Bitbucket/其他主機市集仍使 Copilot 暴露
Gemini CLI Google 確認不修補(CLI 棄用),建議遷移至不受此攻擊路徑影響的 Antigravity

協調披露時間線:Air 於 2026 年 5 月發現並對四家廠商完成 PoC;6 月協調披露;6 月 17 日 Anthropic 確認 Claude Code 修補;8 月 4 日 Google 確認不修 Gemini CLI;8 月 12 日 Codex 修補經驗證;9 月 17 日公開報告。

二、技術原理深度解析:釘選是合約,驗證才是執行

SHA 釘選的安全假設是:「審核過的 commit 雜湊=永遠執行的位元組」。Plugin4Shell 打破的正是「checkout 請求」與「工作樹實際內容」之間的等價關係。市集只能宣告釘選值;解析發生在客戶端代理內,因此市集無法單方面強制保證——必須由代理在本地驗證 HEAD。

這也解釋為何「我們只裝審核過的外掛」或「我們有內部審批流程再釘選」仍可能失效:審核與釘選寫入之後,自動更新路徑若未驗證,供應鏈保證會在背景被悄悄改寫。Air 強調,這不是單一產品的實作疏失,而是同一設計錯誤跨多家主流代理重複出現。

對企業而言,影響面不只是開發者筆電:編程代理常持有原始碼庫、雲端憑證、內部 API 與生產除錯通道。惡意外掛一旦取得與該用戶同等的本機執行權,橫向移動與資料外洩路徑與傳統供應鏈惡意 npm/IDE 外掛類似,但觸發條件可以是「零點擊自動更新」。

三、日常應用場景

1. 開發者與技術團隊

立即盤點團隊使用的 Claude Code/Codex/Copilot/Gemini CLI 版本:Claude Code 應升至含 2.1.179 或以上修補;Codex 應升至 0.146.0 或以上。在無法修補前,應審視是否關閉外掛自動更新、限制市集來源主機、以及對已安裝外掛做完整性抽查。自架或 Bitbucket 市集尤須假設 GitHub 主機級緩解不足。新外掛上架流程應把「checkout 後 HEAD 驗證」視為代理端硬需求,而非市集政策可代替。

2. 企業與隱私敏感行業

金融、醫療、法律與政府外包開發若允許員工本機跑編程代理並安裝社群外掛,等於把生產資料面暴露於外掛供應鏈。資安與工程治理應把 AI 編程代理納入軟體物料清單(SBOM)與供應商風險:外掛來源、釘選策略、自動更新開關、端點 EDR/裝置合規,以及是否改為經企業篩選的私有市集。對仍使用 Gemini CLI 的團隊,應按官方建議規劃遷移至 Antigravity 或其他已修補工具鏈。

3. 一般用戶

個人開發者若只是偶爾用代理寫 side project,仍應更新至已修補版本,並避免對不明市集開啟自動更新。一般辦公室用戶若未安裝此類代理,不受此特定漏洞路徑直接影響,但仍應了解「AI 助手外掛」與瀏覽器擴充套件一樣屬於高權限軟體。

4. 香港與亞洲市場視角

香港金融科技、專業服務與外包研發團隊近年快速導入 Claude Code、Copilot 與同類代理以提升交付速度。Plugin4Shell 提醒本地 CISO 與工程主管:加速開發不能省略代理端供應鏈控制。對受監管行業,應把編程代理外掛政策寫進變更管理與第三方風險評估,並與端點防護、原始碼庫存取最小化一併檢視。若企業同時在研究私有化模型與本機代理,資料主權與供應鏈完整性必須同一套治理,而非只關注雲端模型 API。

四、專業評價與潛在考量

優勢

  • Air 提供可核對的技術機制、攻擊步驟與統一修法(驗證 HEAD),工程可操作性高。
  • 已有明確版本修補資訊(Claude Code 2.1.179、Codex 0.146.0)與公開時間線。
  • The Register 獨立跟進並取得 GitHub 回應,有助判斷「平台緩解」與「代理端漏洞」的邊界爭議。

需要留意的地方

  • Microsoft/Copilot 修補進度於公開報道時仍不明朗;企業不能假設「用 GitHub 託管市集就等於安全」。
  • Gemini CLI 將維持易受影響直至停用/遷移完成。
  • 報告未聲稱野外大規模利用現況;惟零點擊自動更新使「已安裝良性外掛」本身即為攻擊前置條件。
  • 市集審核與企業內部釘選流程若未配合代理端修補,無法單獨關閉風險。

結語

Plugin4Shell 把 AI 編程代理的外掛生態,從「便利的擴充層」推回經典供應鏈問題:信任的不是模型,而是更新路徑上的每一位元組。對香港企業而言,當務之急是升級已修補代理、收緊自動更新與市集來源,並把代理外掛納入既有雲端與端點安全基線。若需要在香港加固開發端點、零信任分段或雲端邊界防護,可參考 YSK Limited 的雲端遷移與網絡安全服務(官網刊 99.99% SLA)(https://ysk.hk/services/cloud-security)。


參考來源

  1. Air Security:Plugin4Shell - Zero Click RCE Vulnerability found in top 4 most popular coding agents(https://www.air.security/blog-posts/plugin4shell)(官方主來源;技術機制、修補版本與時間線以此為準;2026-09-17)
  2. The Register:AI coding agents' 0-click RCE flaw could hand attackers keys to the kingdom(https://www.theregister.com/security/2026/09/17/ai-coding-agents-0-click-rce-flaw-could-hand-attackers-keys-to-the-kingdom/5297335)(2026-09-17;含 GitHub 回應與跨廠商狀態整理)
  3. X 發現來源:The Register(@TheRegister)帖文指向上述報道(發現用;事實以官方報告與 The Register 為準)

延伸閱讀 · 相關服務與產品