實際事件 發布於 AIA: 2026年8月24日

Miasma 利用 Claude Code、Gemini CLI、Cursor 與 VS Code 對儲存庫內設定的信任

Miasma 是 StepSecurity 對這起儲存庫供應鏈攻擊使用的名稱。2026 年 6 月 5 日,攻擊者使用先前遭入侵的貢獻者帳號,把 Commit 5f456b8 推送到 Azure/durabletask(Microsoft 的開源 Durable Task 儲存庫)。該 Commit 新增四個會在開啟專案時觸發的工具設定,以及一個 4.6 MB、經混淆的 .github/setup.js 憑證竊取程式。Claude Code 或 Gemini CLI 的 SessionStart Hook、Cursor 的 Always-applied 規則,或 VS Code 的 Folder-open Task,都可能啟動這個程式。GitHub 隨後在 105 秒的自動化處置中停用四個 Microsoft 組織下的 73 個儲存庫;這是圍堵範圍,不代表 73 個儲存庫都已證實含有惡意 Commit。

Supply Chain CompromiseCredential TheftConfiguration ReviewRuntime IsolationAI Coding Agent
5 項對應的 AIDEFEND 防禦手法
來源: Miasma Worm Hits Microsoft Again: Azure Functions Action and 72 Other Repositories Disabled 
作者: Ashish Kurmi, StepSecurity; initial disclosure by Adnan Khan; disabled-repository list first reported by OpenSource Malware
原文發布: 2026年6月5日

威脅分析

  • Commit 把惡意執行路徑藏在設定變更裡。它使用回填日期與 [skip ci],新增五個檔案,卻沒有修改任何應用程式原始碼。若儲存庫審查只看套件或程式碼,就會漏掉編輯器與 Agent 設定。
  • 四個設定檔最後都啟動同一個憑證竊取程式。.claude/settings.json.gemini/settings.json 使用 SessionStart Hook;.cursor/rules/setup.mdc 以 Always-applied 指令要求 Cursor 執行腳本;.vscode/tasks.json 則以 runOn: folderOpen 在完全不涉及 AI 的情況下啟動。這些路徑最後都執行 .github/setup.js
  • 惡意程式藏在看似可信的儲存庫路徑中。.github/setup.js 經過混淆;一旦啟動,便沿用開發者行程的本機存取權並蒐集憑證。
  • 73 個儲存庫是圍堵範圍,不是已確認的感染數。StepSecurity 證實 GitHub 分兩波自動停用這些儲存庫;報告只確認 Azure/durabletask 中有惡意 Commit,沒有證明惡意程式已傳播到每一個被停用的儲存庫。

適用的 5 項 AIDEFEND 防禦手法

AID-H-021.001
Client-Side Configuration Enforcement
極高
在接受 Commit 或 Checkout 內容前,掃描儲存庫內的 Claude Code、Gemini CLI 與 Cursor Agent 設定。只要發現 SessionStart 指令 Hook、要求執行程式的 Always-applied 指令、回填日期且略過 CI 的 Commit,或非預期的可執行程式參照,就依政策阻擋並交由人工審查。已揭露的 VS Code Folder-open Task 是不涉及 AI 的另一個 IDE 信任路徑,不屬於這項 Agent 設定控制。
AID-H-021.002
Runtime Integrity Enforcement (Signed Configurations)
極高
在 Claude Code、Gemini CLI 與 Cursor 路徑中,Agent 啟動時應拒絕未簽章的本機設定覆寫,並在 Hook 或規則執行前確認設定已簽章且獲得核准;這項控制不涵蓋不涉及 AI 的 VS Code Task 路徑。
AID-D-004.003
Runtime Configuration & Policy Drift Detection and Monitoring
監看儲存庫 Push 事件,針對未通過簽章驗證或其他可疑的設定變更發出警示,特別是略過 CI、只改設定卻新增自動執行路徑的 Commit。
AID-I-001.002
MicroVM & Low-Level Sandboxing
在 microVM 或使用者空間核心隔離環境中開啟不受信任專案,再疊加作業系統層沙箱,並移除開發者家目錄憑證與宿主機寫入路徑。這個專案層邊界可同時涵蓋 Agent Hook、Cursor 規則與不涉及 AI 的 VS Code Task。
AID-H-025.001
Pre-Execution Static Analysis & Dangerous Construct Blocking
部分
執行前,以固定版本的 SAST 規則檢查確切的 .github/setup.js 位元組。若發現政策禁止的危險結構,或這個 4.6 MB 混淆成品無法完成分析,就直接拒絕;但靜態分析本身仍不能證明高度混淆的憑證竊取程式安全。

身為資安防禦者,我們應該這麼做

  • 在本機 Clone 與端點遙測中搜尋 Commit 5f456b8,以及 .claude/settings.json.gemini/settings.json.cursor/rules/setup.mdc.vscode/tasks.json.github/setup.js 五個路徑。
  • 若儲存庫含有已揭露檔案,先隔離,再逐一審查確切內容與 Commit 來源。
  • 預設停用儲存庫內的自動 Hook 與 Folder-open Task;第一次執行前,必須由使用者明確核准並留下可稽核記錄。
  • 在不含憑證的拋棄式工作區開啟不受信任專案,避免使用帶有雲端、Git、套件登錄庫或 Kubernetes 機密的開發者工作階段。
  • .github/setup.js 可能曾執行,應調查端點並輪替可存取的憑證;單憑儲存庫遭停用,不能斷言惡意程式已執行。

結論

Miasma 把供應鏈的執行時機從安裝套件移到開啟專案。Claude Code、Gemini CLI 與 Cursor 的儲存庫內 Agent 設定,應在啟動前完成審查與簽章驗證;不涉及 AI 的 VS Code Folder-open Task,則需要 IDE 本身的信任控制。四條路徑匯入同一個 .github/setup.js 後,執行前靜態分析與專案層的 microVM 或作業系統沙箱,可進一步拒絕可疑成品,並讓它碰不到開發者既有憑證。73 個儲存庫遭停用,只代表圍堵作業的範圍,不是經證實的感染數量。