近日,一場罕見針對開源生態系統的大規模「供應鏈攻擊」(supply chain attack)正式爆發。最初被認為僅影響 TanStack npm 套件的「Mini Shai-Hulud」蠕蟲攻擊,在短短數日內急速擴張,如今已演變成一場橫跨 npm 與 PyPI 兩大套件生態系統、涉及超過 170 個套件的全面 campaign,受影響企業包括 OpenAI、Mistral AI、UiPath、AWS OpenSearch 等知名科技公司。

從 TanStack 到全面擴散:攻擊時間線
5 月 11 日 19:20 UTC,安全研究人員發現 @tanstack/* 系列的 42 個 npm 套件遭到入侵,共涉及 84 個惡意版本。 攻擊者利用 GitHub Actions 的設定漏洞,將惡意程式碼嵌入合法的發布流程中,成功繞過 TanStack 維護者的審查機制。
但這僅是開端。SecurityWeek 與多家資安公司的追蹤顯示,攻擊行動隨後迅速擴散,打擊面從 TanStack 延伸到 OpenSearch(AWS 的開源搜尋引擎)、Mistral AI(法國 AI 獨角獸)、Guardrails AI、UiPath、以及 Squawk 等多個組織的套件。Aikido.dev 統計顯示,至今已有超過 169 個 npm 套件及至少 2 個 PyPI 套件遭駭,惡意版本總數突破 400 個。
更令人擔憂的是,截至本文撰寫時,攻擊仍在持續。Semgrep 安全團隊在數小時前通報,TanStack Router 套件再次遭到更新版本的 Mini Shai-Hulud 攻擊,這次加入了加密憑證外洩機制與 Dead Man’s Switch,顯示攻擊者不僅未被完全阻擋,還在持續迭代武器。
攻擊手法:三道漏洞鏈的精密組合
TanStack 官方在事後發布的詳細事故報告中,還原了攻擊者的完整入侵路徑。攻擊者並非利用單一漏洞,而是巧妙地將三道已知弱點串聯成攻擊鏈(CVE-2026-45321):
- 第一階段:Pwn Request — 攻擊者利用 TanStack 倉庫中
pull_request_target工作流程的設定缺陷。這個 GitHub Actions 功能允許來自 fork 的 PR 存取倉庫 secrets,攻擊者在 PR 中夾帶惡意程式碼,觸發了這個被稱為「Pwn Request」的經典攻擊模式。 - 第二階段:GitHub Actions Cache 毒化 — 惡意 PR 在執行過程中,將被竄改的 pnpm store(大小達 1.1 GB)寫入 GitHub Actions 的共享快取中。這個快取金鑰與合法發布工作流程使用的金鑰完全一致。
- 第三階段:OIDC Token 竊取 — 後續一次完全合法的合併請求觸發了發布工作流程。由於快取已被毒化,發布流程載入了惡意的 pnpm store,攻擊者的程式碼在 CI 環境中執行,從中竊取了 GitHub OIDC token,並用此 token 簽署惡意版本的套件後發布到 npm registry。
同樣的 CI/CD 設定漏洞在三月的 Trivy 攻擊事件中就已被利用過,顯示這類漏洞在開源生態中仍普遍存在。
針對 AI 開發工具的深度植入
這次攻擊最具威脅性的特點,在於惡意軟體針對 AI 開發者工具的深度 hook 機制。安全研究指出,Mini Shai-Hulud 不僅是傳統的憑證竊取程式,更是一個專門設計來寄生在 AI 編碼代理生態系統中的持久化威脅。
被感染的套件安裝後,惡意程式碼會進行以下操作:
- Hook Claude Code:修改
.claude/settings.json,讓惡意程式碼在 Claude Code 每次觸發工具事件時重新執行 - Hook VS Code:修改
.vscode/tasks.json,建立自動執行的工作排程 - 隱匿執行:使用 Bun runtime 而非 Node.js 執行,以繞過 Node-based 的安全檢測工具
- Dead Man’s Switch:內建一個觸發機制——當受害者撤銷被偷走的 GitHub token 時,惡意程式會自動刪除使用者的家目錄
最值得警惕的是,單純執行 npm uninstall 無法清除此威脅。由於惡意程式的 hook 已經寫入 Claude Code 和 VS Code 的設定檔案中,即使受感染的套件被移除,hook 仍然存在,會在每次開發工具啟動時嘗試重新執行。要徹底清除,使用者必須手動檢查並刪除這些 IDE hook 設定。
OpenAI 也中招:兩台員工裝置遭入侵
5 月 14 日,OpenAI 發表官方回應,證實在此次 TanStack 供應鏈攻擊中受影響。OpenAI 表示,經調查發現內部環境中有兩名員工的裝置遭到入侵。OpenAI 強調,目前沒有證據顯示使用者資料遭到存取或外洩。
前幾日 OpenAI 緊急要求所有 macOS 使用者更新應用程式,原因就是攻擊導致部分程式簽章金鑰遭到破壞。影響範圍包括 OpenAI 的 macOS 桌面應用程式,OpenAI 已主動聯繫受影響的使用者並提供修復指引。
不只是 npm:PyPI 也遭波及
SafeDep 的安全研究顯示,攻擊者的觸角已經伸向 Python 生態系統。在本次 campaign 中,至少 2 個 PyPI 套件也被植入相同的惡意程式碼。 這意味著依賴 Python 進行 AI/ML 開發的團隊同樣處於風險之中。
此外,Mend.io 的分析指出,Mini Shai-Hulud 已非首次出現。從 2026 年初至今,攻擊者 TeamPCP 已經發動了至少五次攻擊浪潮,先前也曾鎖定 SAP 開發者套件進行入侵。
如何應對:緩解措施與檢測工具
針對此波攻擊,安全社群已迅速提出多項應對方案。TanStack 官方已將所有受影響版本標記為 deprecated,npm 安全團隊也已介入移除惡意 tarball。 TanStack 同時發布了後續的強化措施,包括重新審視 CI/CD 工作流程安全性。
對於開發者與系統管理員,建議採取以下措施:
- 立即掃描:使用社群製作的檢測工具(如 shayr1/shai-hulud-scan)檢查本地環境是否有感染跡象
- 檢查 IDE Hook:手動檢查
.claude/settings.json和.vscode/tasks.json是否有異常內容 - 撤銷並輪換 Token:若可能已在受感染環境中使用過 GitHub token,立即撤銷並重新產生
- 更新依賴:確保 TanStack 系列套件已更新至未受影響的最新版本
- pnpm 使用者:pnpm v10.16 已引入延遲依賴更新功能,可作為供應鏈攻擊的防禦層
結語
Mini Shai-Hulud 供應鏈攻擊是 2026 年迄今最嚴重的開源生態安全事件之一。它不僅展示了攻擊者如何將多個已知漏洞巧妙串聯成精密攻擊鏈,更揭示了 AI 開發工具生態系統中一個全新的攻擊面——當你的開發工具、AI 編碼代理與套件管理系統之間存在深層整合,攻擊者有機會建立超越傳統清除手段的持久化機制。
這次事件也向所有開發者發出了一個強烈信號:單純更新套件版本已不足以防禦供應鏈攻擊,審視 CI/CD 工作流程安全性、定期掃描 IDE 與 AI 工具設定檔案,正從「最佳實務」變成「必要措施」。




