AI News HubLIVE
站内改写

大規模NPM供應鏈攻擊波及TanStack、Mistral AI及170個軟體包

2026年5月12日,安全團隊SafeDep披露了一起針對npm和PyPI生態系統的供應鏈攻擊,超過170個軟體包被植入惡意程式碼,其中包括TanStack和Mistral AI的熱門庫。攻擊者透過篡改軟體包構建流程,植入依賴下載器並利用Session協議進行憑證竊取。此外,惡意載荷還包含IDE和AI代理投毒機制,能夠自我複製並自動提交惡意配置檔案到受害者的倉庫中,形成持續感染迴圈。

文章情報

工程師中級

要點

  • 攻擊波及TanStack、Mistral AI等170多個軟體包,透過篡改package.json和新增惡意指令碼來實現。
  • 惡意載荷使用AES加密和Bun執行時執行,具備模組化憑證竊取框架,專門針對AWS、HashiCorp Vault、GitHub令牌等。
  • 採用Session協議和Oxen網路進行資料外傳,具有動態節點路由,難以透過固定域名進行攔截。
  • 攻擊者利用IDE配置檔案和GitHub GraphQL API自動提交惡意檔案到分支,使得開發者一旦拉取程式碼即被感染。

為什麼重要

這條新聞值得關注,因為攻擊波及TanStack、Mistral AI等170多個軟體包,透過篡改package.json和新增惡意指令碼來實現。

技術影響

可能影響模型選型、推理成本、產品能力和評測基準。

2026年5月12日,安全研究團隊SafeDep釋出報告,揭露了一起針對npm和PyPI軟體包生態系統的重大供應鏈攻擊。該攻擊共影響超過170個軟體包,其中包括前端框架TanStack和AI公司Mistral AI的官方包。攻擊者透過多種手段實現惡意程式碼注入,不僅竊取憑證,還試圖透過汙染開發者環境中的IDE和AI代理設定來擴大攻擊範圍。

攻擊者篡改了軟體包的構建指令碼,例如在Mistral AI的包中,他們將原有的構建命令替換為一個預安裝鉤子(preinstall hook),並新增了兩個惡意檔案:setup.mjs和router_init.js。setup.mjs負責下載特定平臺的Bun執行時,並執行經過高度混淆的router_init.js負載。該負載採用AES加密和字串混淆技術,使得靜態分析變得困難。值得注意的是,由於攻擊者複用了針對TanStack包的模板,導致Mistral包中的檔案命名不一致(實際檔案為router_init.js,而setup.mjs中引用的是tanstack_runner.js),這導致了執行錯誤。

而對於TanStack包,攻擊者採用了更為隱蔽的方式。他們利用npm的optionalDependencies欄位,引入了一個指向GitHub倉庫中惡意提交的依賴。該依賴在安裝時會觸發prepare指令碼,直接執行惡意負載,並且透過exit 1強制指令碼失敗以隱藏後續輸出。此外,攻擊者還獲得了TanStack GitHub倉庫的寫許可權,表明其GitHub憑證和npm釋出令牌均已被攻陷。

router_init.js負載是一個2.2MB的單行JavaScript檔案,內部實現了模組化的憑證竊取框架。該框架包含多個專門針對不同目標的服務類,例如AWS憑證(透過IMDS端點)、HashiCorp Vault令牌、GitHub Actions令牌以及npm令牌等。負載利用正規表示式匹配並收集各種令牌,並透過嵌入的Session客戶端將資料外傳。Session是一個基於Oxen網路的開源加密通訊協議,支援洋蔥路由和端到端加密。負載透過連線Session的種子節點獲取服務節點列表,然後透過動態解析的節點將加密訊息路由到攻擊者的Session ID。由於路由資訊是動態獲取的,傳統的基於固定域名或IP的攔截策略難以生效。

除了憑證竊取,該負載還具有自我複製和傳播的能力。它定義了一系列檔案對映,包括VS Code和Claude Code的配置檔案,以及一個自我副本。當負載在受害者的CI/CD環境(如GitHub Actions)中執行時,它會讀取環境變數GITHUB_REPOSITORY,並利用GitHub的GraphQL API查詢當前倉庫的分支。然後,它會過濾掉主分支(main、master等),選擇功能分支作為目標,並透過createCommitOnBranch變異向這些分支提交惡意配置檔案。這些配置檔案會配置IDE或AI代理在專案載入時執行setup.mjs,從而形成完整的感染迴圈:任何開發者克隆或拉取被汙染的分支後,開啟專案便會觸發負載,進而竊取其憑證並繼續傳播。

SafeDep團隊在報告發布後已向npm和GitHub安全團隊報告了相關情況,目前惡意版本已被下架。然而,由於攻擊者使用了Session協議和GitHub的內建功能,這種攻擊的追蹤和清除難度較高。建議開發者立即檢查專案依賴中@tanstack/router版本是否在1.169.5以及@mistralai/mistral版本是否在0.0.297範圍內,並輪換所有可能暴露的令牌。此外,建議加強GitHub賬戶的多因素認證,並定期審計GitHub倉庫的提交記錄。