隨著「沙伊-胡魯德2.0」於2025年11月24日再度現身,JavaScript/npm生態系統正面臨供應鏈威脅的新基準。這種自傳播蠕蟲專門鎖定開源維護者及其發佈的套件。此新型變種標誌著威脅形態從孤立惡意套件,轉變為協調式自動化感染機制。
影響已然嚴重。數百個 npm 套件與數萬個 GitHub 儲存庫受到波及,形成 JavaScript 供應鏈攻擊前所未見的「爆炸範圍」。 對於熟悉OPSWATShai-Hulud 1.0分析的讀者而言,2.0版本大幅擴展了此蠕蟲的能力與運作規模:更早的執行時機、更廣泛的傳播範圍,以及對標準修復措施的更高抗性,使其從令人擔憂的威脅升級為完整的生態系統級事件。
沙伊-胡魯德 2.0 快速事實
- 自傳播蠕蟲:Shai-Hulud 2.0 竊取 GitHub 憑證,重新打包自身,並在維護者整個 npm 套件庫中重新發佈。
- 大規模擴散:700多個受感染的npm套件、25,000多個GitHub儲存庫、500名維護者受影響;每30分鐘新增超過1,000個儲存庫(Wiz)。
- 跨生態系統影響:亦可透過自動化的 npm 至 Maven 鏡像機制,在 Maven/Java 環境中觀察到此現象。
- 主要風險:持續整合/持續部署(CI/CD)暴露、機密資料遭竊取、安裝時執行惡意程式碼,以及遭篡改的登錄檔。
- 防禦措施:軟體組件清單(SBOM)準確性、來源驗證、運行時監控,以及嚴格的代幣/機密衛生規範。
範圍與升級:損害範圍有多廣泛?
Shai-Hulud 2.0 的擴散規模與速度,已超越近期供應鏈事件的所有紀錄。這場始於針對性 npm 漏洞的攻擊,迅速演變為系統性跨平台感染,影響數千個專案與數百名維護者。
與典型npm惡意軟體不同,後者通常僅涉及單一遭植入木馬的套件,Shai-Hulud 2.0 卻展現出蠕蟲般的行為模式。在入侵開發者帳戶後,它會竊取 GitHub 憑證,重新打包自身程式碼,並透過維護者整個套件集進行重新發佈,將每個受害者轉化為新的傳播節點。最終導致惡意程式在生態系統中呈指數級快速擴散。
遭入侵的套件
數百個 npm 套件遭到入侵。其中包含由知名機構維護的高知名度專案,這將擴大下游系統的暴露風險。
快速、指數級擴散
該蠕蟲病毒每30分鐘便會生成超過1,000個新的惡意GitHub儲存庫(Wiz),其運作動力源自竊取憑證所觸發的自動化發佈機制。每個新受害者皆成為傳播節點,使整體影響力在每個週期中呈倍數增長。
秘密揭露
Shai-Hulud 2.0 的憑證竊取組件正展現出特別破壞性的影響。經確認外洩的機密資料包含逾 1,500 組橫跨主要平台的憑證與存取令牌,涵蓋 GitHub、AWS、GoogleCloud 及 Azure 等服務。
這批敏感憑證代表著廣泛的多雲端環境遭入侵,且存在長期潛在的惡意利用風險。
整治工作
所幸,諸如 Zapier、PostHog 和 Postman 等幾家知名維護者已重新奪回其套件的控制權。惡意版本已從 npm 移除,許多受影響的儲存庫正被收回或清理中。
然而,事件仍在持續發展。即使採取快速修復措施,組織仍須持續監控依賴項目的健康狀態、持續整合管道及 GitHub 帳戶,以防範進一步的憑證外洩或自動化重新發佈行為。
跨生態系統影響:npm → Maven/Java
值得注意的是,這股浪潮也透過自動化的 npm 轉 Maven 工件轉換(JFrog)技術,影響了其他生態系統,例如 Maven/Java。
-
儘管 npm 仍是 Shai-Hulud 2.0 的主要攻擊目標,但此波攻擊已凸顯跨生態系統傳播的風險,特別是對 Java/Maven 專案的威脅。安全研究人員已識別出惡意 Maven 構建產物:
org.mvnpm:posthog-node:4.18.1其中包含相同的有效負載 (設定_bun.js和bun_環境設定檔.js在遭入侵的 npm 套件中發現的 (駭客新聞) 。
- 運作機制:自動化橋接工具會將 npm 封裝重新建構為 Java 專案的 Maven 工件。若專案依賴這些鏡像工件,即使團隊未直接使用 Node.js,仍可能暴露於風險中。
這顯示了供應鏈攻擊具有生態系統中立的風險。即使不直接使用 npm 的專案,也可能透過自動化工具繼承風險。
Shai-Hulud 2.0 證明了現代供應鏈蠕蟲具備環境感知能力,是多階段威脅:它們能適應開發者機器與持續整合/持續部署管道,將憑證作為有效載荷與傳播機制雙重利用,並內建後備行為機制以確保擴散或破壞性影響。偵測需監控所有階段的執行時行為,而非僅依賴靜態程式碼分析。
技術力學:蠕蟲的運作原理
| 舞台 | 發生什麼事 |
|---|---|
| 1. 初始存取與部署 | 攻擊者利用遭入侵的 npm 維護者帳戶,散佈含有惡意程式碼的套件。 設定_bun.js 和 bun_環境設定檔.js透過自動執行 預安裝 橫跨開發人員機器與持續整合/持續部署管道。 |
| 2. 隱蔽的執行階段初始化 | 載入程式會偵測主機環境,初始化 Bun 執行階段,並在背景靜默執行有效載荷,使安裝過程看似正常。 |
| 3. 環境指紋識別與權限提升 | 此有效載荷能識別持續整合平台,嘗試透過 Linux 執行器上的 Docker 實現無密碼 root 權限,並可修改 DNS 或 iptables 規則以控制網路流量。 |
| 4. 憑證與機密資訊蒐集 | 此有效載荷會收集環境變數與雲端金鑰,執行 TruffleHog 進行本地機密偵測,提取 AWS/Azure/GCP 憑證,並注入臨時工作流程以擷取 GitHub 機密。 |
| 5. 情報外洩與持續性 | 竊取的資料經三重Base64編碼後,上傳至受害者帳戶中的新儲存庫;同時透過惡意自託管執行器與工作流程建立持久化機制。 |
| 6. 蠕蟲傳播(複製) | 利用竊取的 npm 憑證,此蠕蟲會複製受害者的套件,注入惡意檔案與掛鉤程式,提升版本號,並重新發佈以實現自主傳播。 |
| 7. 破壞性回退 | 若無法獲取任何憑證,蠕蟲將觸發破壞性程序,徹底清除用戶的個人目錄。 |
PostHog事件凸顯的持續整合/持續交付風險
PostHog的資料外洩事件凸顯了持續整合/持續部署(CI/CD)暴露風險的微妙性:
- 惡意拉取請求利用了 GitHub Actions 中的 `pull_request_target` 功能。
- 一個機器人PAT遭竊取,進而導致植入木馬的npm SDK得以發布。
持續整合/持續部署工作流程,即使是自動化的,也屬於高風險攻擊面。請限制腳本權限、最小化憑證暴露範圍,並強制採用短效憑證。
傳統防禦的局限性
- 依賴固定可能因傳遞性依賴而失敗。
- 靜態SCA掃描器無法偵測到以合法套件名稱發布的新型木馬化程式碼。
- 透過持續整合/持續部署管道濫用代幣,意味著即使內部儲存庫也面臨風險。
如何運用物料清單與Supply Chain 作為防禦手段
軟體物料清單(SBOM)與供應鏈工具可提供:
- 依賴透明度:追蹤直接與轉移依賴關係,包含版本及維護者元數據。
- 來源驗證:識別意外的套件變更或未知維護者。
- 憑證與機密監控:偵測外洩企圖或遭濫用的憑證。
- 行為洞察:監控安裝過程中的資源存取或異常執行模式。
雖然並非萬靈丹,但將元件清單(SBOM)與持續監控相結合,能強化對抗蠕蟲式攻擊的防禦能力。
OPSWAT 與MetaDefender Software Supply Chain鏈™
OPSWAT 技術掃描原始碼儲存庫,並偵測出惡意 npm sha1-hulud 套件。

MetaDefender Software Supply Chain 提供更完整的視圖,並偵測到遭篡改的 sha1-hulud 套件。


MetascanMultiscanning透過多層防禦機制偵測惡意軟體:

建議立即採取的行動
- 輪替憑證:GitHub 存取權限標記、npm 憑證、SSH 金鑰、雲端憑證;啟用多因素驗證。
- 移除受損套件:清除 npm 快取、node_modules 目錄,並將版本固定為已知乾淨版本。
- 審計 GitHub 與 CI/CD:尋找新儲存庫、工作流程及可疑提交。
- 強化管道安全性:限制生命週期腳本、限制外發網路存取,並最小化憑證作用範圍。
- 持續監控:將依賴項與建置管線視為關鍵攻擊面的一部分。
關鍵要點
供應鏈威脅與生態系統無關
Shai-Hulud 2.0 透過 npm-to-Maven 橋接機制擴散至 Maven/Java 生態系,顯示供應鏈攻擊能跨越語言與生態系統的邊界。即使未直接使用 npm 的專案,若採用自動化橋接工具仍可能暴露於風險之中。
憑證衛生是基礎
遭竊的憑證(GitHub、npm、雲端服務)會使敏感環境的權限擴散與存取風險增加。請採用短效且具範圍限制的憑證,強制執行多因素驗證,並在任何潛在洩密疑慮發生後立即輪替憑證。運用自動化機密掃描工具可加速此流程。
整體Supply Chain 是強制性的
僅依賴靜態軟體供應鏈掃描或版本固定化措施並不足夠。應結合軟體物料清單(SBOM)可視性、惡意軟體多重掃描及憑證/機密保護機制,全面降低各生態系統的風險暴露。探索MetaDefender Software Supply Chain
準備好透過量身打造、無縫整合的解決方案,來保障您的軟體供應鏈並防範網路攻擊了嗎?
