AI News HubLIVE
站内改写

迷你沙蟲捲土重來:npm蠕蟲感染超過160個包,包括Mistral

Mini Shai-Hulud npm蠕蟲攻擊範圍擴大,從SAP包擴展至TanStack、Mistral等169個包名下的373個惡意版本。該惡意軟件旨在竊取開發者環境和CI/CD運行器中的憑證,並利用可信發佈路徑傳播惡意包。

文章情報

工程師入門

要點

  • 攻擊範圍從SAP包擴大到包括@tanstack、@mistralai、@uipath等169個包
  • 惡意軟件通過GitHub託管的依賴包運行prepare腳本來執行載荷
  • 竊取GitHub令牌、npm令牌、雲憑證等,並利用OIDC進行自動傳播
  • 可信發佈機制下的軟件來源證明不能保證構建安全

為甚麼重要

這條新聞值得關注,因為攻擊範圍從SAP包擴大到包括@tanstack、@mistralai、@uipath等169個包。

技術影響

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

Mini Shai-Hulud npm蠕蟲已經卷土重來,並且規模遠超此前。今年4月,該蠕蟲首次被發現針對SAP的npm包,而現在它已經擴展到超過160個包,波及範圍包括TanStack、Mistral等知名項目。我們的惡意軟件團隊檢測到169個包名下的373個惡意版本條目。

本次攻擊的基本目標沒有改變:竊取開發者機器和CI/CD運行器中的憑證,然後利用這些憑證感染更多包。但攻擊的規模和發佈路徑發生了顯著變化。這一波攻擊不再像是有人手動發佈惡意版本,而是惡意軟件內置在構建系統中,自動竊取npm和GitHub的訪問權限,並濫用可信發佈路徑來推送新的惡意包。

TanStack仍然是最顯眼的受影響集羣之一,但已不再是全部。受影響的包現在包括@squawk、@tanstack、@uipath、@tallyui、@beproduct、@mistralai、@draftlab、@draftauth、@taskflow-corp、@tolka等多個作用域包以及一些無作用域包。其中最大的集羣是@squawk(87個版本條目)、@tanstack(83個)、@uipath(66個)等。

攻擊機制方面,與SAP波次有所不同。在受感染的TanStack包中,tarball包含了一個新的混淆文件router_init.js。此外,惡意包添加了一個可選依賴,指向GitHub託管的包,該包包含一個prepare腳本:

"scripts": {
"prepare": "bun run tanstack_runner.js && exit 1"
}

npm在安裝Git依賴時會運行生命週期腳本,因此一個看似正常的依賴可以悄悄執行惡意載荷。腳本末尾的&& exit 1使得可選依賴失敗時,惡意代碼已經執行完畢,整個安裝過程看起來不那麼可疑。

更令人擔憂的是本次攻擊利用了可信發佈機制。可信發佈本意是通過OIDC在GitHub Actions工作流中獲取短期npm發佈令牌,從而消除長期令牌。但當攻擊者控制的代碼在工作流中運行時,他們可以利用OIDC權限直接生成發佈令牌並進行發佈。這意味着軟件來源證明(provenance)並不能保證構建安全——它只能告訴你包在哪裏構建,不能證明構建過程的安全性。

惡意載荷專門針對CI/CD和開發環境,竊取GitHub令牌、npm令牌、GitHub Actions OIDC令牌、AWS憑證、Kubernetes服務賬户文件、HashiCorp Vault令牌、環境變量和本地文件系統秘密。更具威脅的是,惡意軟件在竊取令牌後,會試圖利用這些令牌查找受害者有權限發佈的包,修改包檔案,注入惡意依賴,提升版本號併發布新的惡意版本。這使得它不僅僅是一個信息竊取器,而是一個能夠將受害者的發佈權限轉化為下一次感染路徑的傳播工具。

受影響包的完整列表包括@tanstack/history、@tanstack/react-router、@mistralai/mistralai、@uipath/apollo-react等數百個條目。開發者應立即檢查自己的依賴,並確保沒有使用這些惡意版本。同時,建議在CI/CD環境中嚴格限制OIDC權限,並監控npm發佈活動。