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釋出活動。