資安雷達 2026 年 5 月 12 日

2026-05-12 — TanStack NPM 供應鏈攻擊:OIDC Token 劫持植入憑證竊取器

primary=https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack

TanStack NPM 供應鏈攻擊:Mini Shai-Hulud 活動以孤立 commit 竊取 OIDC Token,84 個套件被植入憑證竊取器

Socket Threat Research · 2026-05-11

2026-05-11 UTC 19:20 起,Socket 威脅研究團隊偵測到 TanStack 命名空間下 84 個 npm 套件遭受植入,攻擊者透過 GitHub Actions OIDC 聯邦機制竊取發布令牌,在受影響版本中注入約 2.3 MB 的重度混淆憑證竊取器。TanStack 維護者 Tanner Linsley 已公開確認,並啟動緊急撤版程序。

漏洞機制:孤立 commit 觸發 OIDC Token 洩漏

攻擊者利用一個孤立 commit(orphaned commit)觸發了儲存 OIDC Token 的 workflow 執行,繞過了 TanStack 既有的發布保護機制。GitHub Actions 的 OIDC 聯邦設計用於無密碼發布(passwordless npm publishing),workflow 可以向 npm 換取有效的發布令牌而不需要儲存靜態憑證——攻擊者正是利用這個機制,無需入侵傳統帳號即可取得發布能力。

受影響套件

84 個套件涵蓋 TanStack 命名空間的主要產品,包括:

  • @tanstack/react-router@1.169.51.169.8(每週下載量超過 1,200 萬)
  • @tanstack/router-core@1.169.51.169.8
  • @tanstack/vue-router@1.169.51.169.8

另有 37 個不相關命名空間(@uipath@beproduct@dirigible-ai 等)透過同樣機制遭到植入,顯示這是 Mini Shai-Hulud 活動的多目標攻擊。

惡意酬載技術細節

主惡意模組 router_init.js 約 2.3 MB,採用 javascript-obfuscator 模式重度混淆,內含 2,864 個 dispatcher 函式呼叫遮蔽字串常數,並有一層 XOR 解碼層包含 148 個編碼環境變數存取。憑證竊取目標涵蓋:

  • GitHub Actions:Repository secrets、OIDC tokens(含分頁 API 呼叫)
  • AWS:IMDSv2 Token 取得、EC2 metadata service、Secrets Manager、SSM Parameter Store
  • Kubernetes:/var/run/secrets/kubernetes.io/serviceaccount/ 服務帳號 Token、in-cluster Vault
  • HashiCorp Vault:直接從環境變數取得 Token

滲漏通道刻意偽裝:憑證透過 Session 去中心化 P2P 網路傳遞,所有流量外觀為端對端加密訊息協議,目的地為 filev2.getsession[.]org,傳統網路過濾規則難以直接識別。

持久化與蠕蟲傳播

惡意模組寫入 .claude/router_runtime.js 並修改 .claude/settings.json 掛鉤 Claude Code tool 事件、注入 .vscode/tasks.json 實現 VS Code task 自動執行。蠕蟲傳播機制透過從 GitHub Actions 取得 OIDC JWT、換取 npm 發布 Token、封裝含惡意模組的 .tgz、以 latest dist-tag 發布,並以 createCommitOnBranch GraphQL mutation 將自身寫入維護者倉庫,偽造提交者為 claude@users.noreply.github.com

修補與緩解

  • 確認 router_init.js SHA256 為 ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c(有效版本)
  • 優先輪換:npm tokens → GitHub PATs/OIDC trusts → AWS 憑證 → Vault tokens → K8s 服務帳號 Token
  • 稽核 .claude/.vscode/ 目錄是否有注入檔案
  • 搜尋 git 歷史中提交者為 claude@users.noreply.github.com 的非正當 commit
  • 在網路邊界封鎖 filev2.getsession[.]org 出站流量
  • 收緊 GitHub Actions OIDC Token 作用域

原始來源:Socket Threat Research — TanStack npm Packages Compromised in Ongoing Mini Shai-Hulud Supply Chain Attack


End of article
0
Would love your thoughts, please comment.x
()
x