迷你沙伊胡魯德蠕蟲
名為 TeamPCP 的威脅組織與一場複雜的供應鏈攻擊活動有關,該活動的目標是與 TanStack、UiPath、Mistral AI、OpenSearch、Guardrails AI 以及其他多個生態系統相關的廣泛使用的 npm 和 PyPI 軟體包。這次攻擊與不斷演變的 Mini Shai-Hulud 惡意軟體活動密切相關,顯示軟體供應鏈濫用和身分驅動入侵技術的顯著升級。
研究人員發現,惡意 npm 套件被竄改,其中包含一個名為 router_init.js 的混淆 JavaScript 元件。這個有效載荷會分析受感染的環境,並部署一個高級憑證竊取程序,目標包括雲端服務提供者、加密貨幣錢包、人工智慧開發工具、訊息平台、CI/CD 系統和 GitHub Actions 環境。竊取的資料主要傳輸到 filev2.getsession.org 域。
使用會話協定基礎設施表示攻擊者蓄意規避企業安全控制。由於該網域屬於一個去中心化的、注重隱私的訊息傳遞平台,因此不太可能被傳統的網路防禦措施攔截。作為第二種資料外洩方式,攻擊者使用竊取的 GitHub 身份驗證令牌,以 claude@users.noreply.github.com 的作者身份,透過 GitHub GraphQL API 將加密資料提交到攻擊者控制的儲存庫。
目錄
持久化機制和憑證盜竊的擴展
該惡意軟體引入了多種持久性和監視功能,旨在長期訪問受感染的開發環境。它在 Claude Code 和 Microsoft Visual Studio Code 內部建立了持久性接口,使惡意軟體能夠在系統重新啟動後繼續運行,並在每次打開這些 IDE 時自動重新啟動。
此外,還部署了 gh-token-monitor 服務,用於持續監控並重新竊取 GitHub 令牌。同時,兩個惡意 GitHub Actions 工作流程也被注入到被入侵的 GitHub 程式碼庫中。這些工作流程會將程式碼庫金鑰序列化為 JSON 格式,並將資料上傳至外部端點 api.masscan.cloud。
最新的 TanStack 漏洞事件與以往的供應鏈事件有顯著差異。攻擊者不再依賴預先安裝鉤子,而是將惡意 JavaScript 檔案直接嵌入到軟體包壓縮套件中,同時引入一個指向 GitHub 託管軟體包的可選依賴項。此依賴項包含一個 prepare 生命週期鉤子,透過 Bun 運行時環境執行惡意負載。
被植入木馬的 Mistral AI 軟體包採用了一種較早的感染策略,即透過修改 package.json 文件,添加一個預先安裝鉤子來呼叫 node setup.mjs。此程序會下載 Bun 並執行相同的竊取憑證的惡意軟體。
CVE-2026-45321 和濫用可信任發布
TanStack 漏洞已被正式追踪,編號為 CVE-2026-45321,並被評為 CVSS 嚴重等級 9.6 分。調查人員確認 TanStack 生態系統中的 42 個軟體包和 84 個版本受到影響。
分析顯示,此次安全漏洞源自於一系列利用 GitHub Actions 漏洞的攻擊,這些攻擊包括 pull_request_target 觸發器、GitHub Actions 快取投毒以及從 GitHub Actions 運行器中運行時提取 OIDC 令牌。根據報告,攻擊者首先利用 GitHub 分支中的孤立提交植入惡意載荷,然後將其註入到 npm 套件的壓縮套件中。隨後,攻擊者劫持了合法的 TanStack/router 工作流程,發布了帶有有效 SLSA 出處證明的受感染軟體包。
這一事態發展標誌著軟體供應鏈攻擊的重大升級。這些惡意軟體包攜帶了有效的 SLSA 構建級別 3 來源簽名,使其成為首個能夠分髮帶有真實構建證明的惡意軟體包的已知 npm 蠕蟲。隨後,該惡意軟體活動擴展到 TanStack 以外的地區,並蔓延至 UiPath、DraftLab 和其他開發者維護的生態系統。
該攻擊嚴重濫用了可信發布工作流程。攻擊者並非直接竊取 npm 憑證,而是利用運行在可信任 CI/CD 管線中的 OIDC 權限,在建置過程中產生短暫的發布令牌。這使得惡意軟體包能夠透過合法的發布管線發布,同時繞過傳統的身份驗證安全措施。
蠕蟲自我繁殖行為引發警報
Mini Shai-Hulud 攻擊活動最危險的特徵之一是其蠕蟲式的傳播模式。該惡意軟體會主動搜尋配置了 bypass_2fa=true 的可發布 npm 令牌,枚舉受感染開發者維護的軟體包,並將 GitHub OIDC 令牌交換為每個軟體包的發布令牌。這種機制使得惡意軟體能夠在軟體包生態系統中橫向傳播,而無需依賴傳統的憑證竊取技術。
此次攻擊也利用了 GitHub OIDC 可信任發布者模型中的倉庫級信任配置。由於信任是在倉庫層級廣泛授予的,而不是僅限於受保護的分支和特定的工作流程文件,因此由孤立提交觸發的惡意工作流程執行能夠請求合法的 npm 發布令牌。
另一個令人不安的功能是部署「死亡開關」。該惡意軟體會安裝一個 shell 腳本,每 60 秒重複輪詢 api.github.com/user 端點,以確定攻擊者建立的 npm 令牌是否仍然有效。這些令牌帶有威脅性的描述:“如果您撤銷此令牌,它將擦除所有者的電腦。”
如果防禦者透過 npm 控制面板撤銷令牌,惡意軟體會啟動一個破壞性例程,執行 `rm -rf ~/` 命令,從而有效地將感染轉化為擦除型惡意軟體。這種激進的行為表明 TeamPCP 的運作策略發生了重大演變,並展現出其在強制持久化方法上的日益精進。因此,建議安全團隊在撤銷被盜用的 npm 憑證之前,先隔離並鏡像受感染的系統。
受影響的包裹和不斷擴大的生態系統影響
這次攻擊活動影響了 npm 和 PyPI 上的 170 多個軟體包,總下載量超過 5.18 億次。調查人員還發現至少 400 個使用被盜憑證創建的倉庫,所有倉庫都包含「Shai-Hulud: Here We Go Again」這句話。
受影響的包裹包括:
guardrails-ai@0.10.1 (PyPI)
mistralai@2.4.6 (PyPI)
@opensearch-project/opensearch@3.5.3、3.6.2、3.7.0、3.8.0
@squawk/mcp@0.9.5
@squawk/weather@0.5.10
@squawk/flightplan@0.5.6
@tallyui/connector-medusa@1.0.1、1.0.2、1.0.3
@tallyui/connector-vendure@1.0.1、1.0.2、1.0.3
該惡意軟體還採用了多個冗餘的資料外洩管道。除了會話協議基礎設施和 GitHub 死信箱之外,竊取的憑證也會透過拼字錯誤網域 git-tanstack.com 進行傳輸。
PyPI惡意軟體引進地理圍籬破壞邏輯
與惡意 Mistral AI 和 Guardrails AI 軟體包相關的基於 Python 的惡意軟體變種與透過 npm 分發的 JavaScript 有效載荷有顯著差異。被入侵的 mistralai PyPI 軟體包會從遠端主機 83.142.209.194 下載憑證竊取程式。
研究人員發現,這款 Python 惡意軟體包含國家/地區感知邏輯,旨在避免在俄語環境下執行。它還包含一個地理圍欄破壞機制,如果受感染的系統位於以色列或伊朗,則有六分之一的機率執行 `rm -rf /` 命令。
這種行為表明,開源軟體包生態系統中存在著令人擔憂的趨勢,即朝著區域感知型破壞性有效載荷部署的方向發展。
身分驅動型供應鏈攻擊日益增長的威脅
Mini Shai-Hulud攻擊活動反映了現代供應鏈攻擊的更廣泛轉變。威脅行為者不再僅僅關注包裹被篡改,而是越來越多地將目標對準可信賴的持續整合/持續交付(CI/CD)身分、發布工作流程和基於雲端的自動化管道。
一旦攻擊者獲得軟體發布基礎設施的存取權限,開發流程本身就會成為惡意軟體的傳播管道。由於許多惡意行為都透過合法的工作流程、可信賴的認證和真實的發布系統進行,傳統的安全控制措施可能無法識別惡意行為。
新一代供應鏈攻擊的主要特徵包括:
- 濫用可信任發布和 OIDC 代幣交換機制
此次行動已擴展到人工智慧工具、企業自動化、搜尋基礎設施、前端開發、航空相關工具以及持續整合/持續交付(CI/CD)生態系統等領域,這表明軟體供應鏈的相互聯繫已變得多麼緊密。在軟體包安裝和建置執行過程中進行行為監控,對於偵測那些乍看之下似乎合法的威脅而言,如今變得至關重要。