top of page

Shai-Hulud:史上最大規模 NPM 軟體供應鏈攻擊,JFrog 如何成為最佳防線?

  • 作家相片: Linktech
    Linktech
  • 4天前
  • 讀畢需時 5 分鐘

前言與背景

近期,npm 生態系統再度爆發重大安全事件繼 NX 套件與其他熱門套件遭入侵後,最早由 Daniel Pereira 報告,@ctrl/tinycolor@4.1.1 也被揭露存在安全風險。根據 JFrog 的惡意程式掃描器發現,在 338 個受感染版本中,共有 164 個為獨立惡意套件。這類事件尤其威脅金融科技(FinTech)領域,包括加密貨幣交易所、銀行與券商等企業


不過,也有不少使用 JFrog 平台的企業因採用了其安全功能,得以避免此一風險。JFrog 的 Curation 功能與 Xray 是強化軟體供應鏈安全治理的重要工具。Linktech 作為 JFrog 的在台灣的合作夥伴,致力於協助企業實現安全、可靠的軟體交付。接下來,與我們一起深入了解這次事件與防護策略!


Shai-Hulud:史上最大規模 NPM 軟體供應鏈攻擊,JFrog 如何成為最佳防線?

一、惡意套件 vs 帶有漏洞的套件:有什麼不同?

在軟體供應鏈安全領域,「惡意套件」與「有漏洞的套件」是兩種常見但是本質不同的風險類型。

  • 惡意套件(Malicious Packages)

    • 定義:旨在傷害使用者或系統的軟體,通常包含惡意程式、間諜軟體、後門等。 

    • 目的:可能進行未經授權存取、資料盜取、系統控制等。 

    • 舉例:偽裝成合法函式庫,但在安裝時開啟後門、注入惡意行為。

  • 帶有漏洞的套件(Vulnerable Packages)

    • 定義:設計或實作本身有缺陷的套件,可能被利用成攻擊媒介。 

    • 目的:原本可能無惡意,但因缺陷可能被攻擊者濫用。


了解這兩者的差別,有助於我們更精準地設計防禦機制。


二、為什麼 社群驅動的 OSS 相依成為攻擊手段?

社群型 OSS 被廣泛使用,但其特性也使它成為攻擊者的目標。主要原因包括:


  1. 公開性:開源程式碼公開,攻擊者容易分析、發現弱點。

  2. 複雜的相依關係:一個專案可能依賴多層套件,攻擊者可從間接相依下手。

  3. 開發速度與品質不一:為了快速上線,安全測試可能被壓縮。

  4. 信任關係被濫用:在 OSS 社群中,信任關係可能被利用,將惡意程式隱藏在正常更新中。

  5. 審核機制不足:許多 OSS 專案缺乏嚴格的安全審核流程。


因此,在高度依賴 OSS 的開發生態中,「零信任」觀念與多層防禦相當重要。


三、Shai-Hulud 是什麼?

2025 年 9 月 15 日,有工程師發現 npm 庫受到一種自我複製型惡意軟體(類似蠕蟲 worm)的攻擊。該攻擊不同於過去的 npm 入侵模式,而是會自行擴散、複製並攻擊其他套件。

至本文撰寫時,約有 200 個受感染套件被發現,其中包括熱門套件如 @ctrl/tinycolor,甚至與 CrowdStrike 相關的多個倉儲也遭影響。


此惡意程式運作如下:

  1. 竊取認證資料(GitHub token、npm token、SSH 金鑰、雲端平台憑證)

  2. 嘗試將資料外流(例如寫入公開 GitHub 倉儲、webhook 傳送)

  3. 找到有效的 npm token 後,向對應的 maintainer 發布惡意版本,使感染能在體系內蔓延

  4. 在可用的私人倉儲中植入惡意 GitHub Actions 工作流程,以維持長期滲透與竊取


該攻擊可被視為 npm 生態中首批成功的自我增殖型蠕蟲之—其影響力與進展令人警惕。


四、攻擊機制詳解:Shai-Hulud 的 Data Stealer Payload

這段惡意程式(通常包在 bundle.js 裡面)會假扮成「系統最佳化工具」,但其真正功能遠不止如此。它會:

  • 收集系統環境資料、程序環境變數、相依模組資訊

  • 檢查 GitHub / npm / AWS / GCP / Azure 認證

  • 執行 TruffleHog 等工具,以主動搜尋環境中的敏感憑證

  • 如成功竊取,會將資料多重 Base64 編碼後匯出,或上傳至公有 GitHub 倉儲

  • 若環境中已有有效憑證,則嘗試發布惡意套件版本,藉此在生態中擴散

  • 在可控制的倉儲中,植入惡意 GitHub Actions 工作流程,如 shai-hulud-workflow.yml,持續滲透與竊訊


此外,研究團隊觀察到至少 8 種變體在野,功能大致相同但在細節上有微調,例如某些版本會隱蔽倉儲為私人模式、或額外嘗試竊取 Azure 認證等。


五、受影響使用者應採取的行動

如果你的系統或建置流程中曾安裝下列受影響套件,可能已經暴露敏感資訊或被滲透。建議儘速做以下處置:

  1. 旋轉(Revocation / Rotate)相關憑證 包括 GitHub token、npm token、AWS、GCP、Azure 等憑證

  2. 使用 TruffleHog 檢查並清理,發現可能暴露的憑證

  3. 評估是否曾下載過受感染套件,若有,視為潛在風險

  4. 導入軟體供應鏈安全機制,例如 JFrog Curation,用於在下載/快取前過濾惡意或高風險套件


強化治理的策略並非只能事後補救,而應持續在軟體發佈與相依管理流程中貫穿安全控制。


六、背後攻擊者與可疑線索

目前尚無足夠證據指認 Shai-Hulud 與之前 NX CLI 入侵攻擊是否同一攻擊者群。雖然工具與 payload 設計有些許相似性,但歸屬仍然未知。

攻擊手法如 GitHub 倉儲資料外流、token 濫用等,確實與此前某些事件有重疊特徵,值得後續觀察。


七、已知受感染的套件清單(部分)

以下為該篇報導中列出的部分受感染套件版本,僅供參考與風險通報:

1

angulartics2@14.1.2


2

@ctrl/deluge@7.2.2


3

@ctrl/golang-template@1.4.3


4

@ctrl/magnet-link@4.0.4


5

@ctrl/ngx-codemirror@7.0.2


6

@ctrl/ngx-csv@6.0.2


7

@ctrl/ngx-emoji-mart@9.2.2


8

@ctrl/ngx-rightclick@4.0.2


9

@ctrl/qbittorrent@9.7.2


10

@ctrl/react-adsense@2.0.2


11

@ctrl/shared-torrent@6.3.2


12

@ctrl/tinycolor@4.1.1, 4.1.2


13

@ctrl/torrent-file@4.1.2


14

@ctrl/transmission@7.3.1


15

@ctrl/ts-base32@4.0.2


16

encounter-playground@0.0.5


17

json-rules-engine-simplified@0.2.4, 0.2.1


18

koa2-swagger-ui@5.11.2, 5.11.1


19

…(還有更多)


20



由於 JFrog 安全研究團隊仍在追蹤更多新發現的惡意套件,建議持續關注後續更新。


八、如何用 JFrog 平台強化軟體供應鏈安全

為應對本次 Shai-Hulud 事件,報導中指出有三大策略方向:

  1. 即時治理:阻止惡意套件的下載與使用

  2. 整體相依掃描與管理:針對開發與生產環境進行套件掃描與風險通報

  3. 控制與管理緩存:利用 Artifactory 的遠端倉儲機能,掌控外部套件拉取的快取策略


JFrog Xray 與 Curation 的角色

  • Curation(策選) 可在套件進入組織時進行過濾與分級,僅允許符合安全政策的版本通過 能針對不同版本進行風險管理與阻擋 支持策略化治理與合規性審查

  • Xray 提供即時的脆弱性/惡意程式掃描 可深度解析複雜的依賴樹,揭露隱藏風險 支援警示機制,快速通知團隊進行補救

  • Artifactori 的遠端倉儲 / 緩存控制 透過遠端倉儲功能,控制外部資源的快取與下載 可與 Curation 和 Xray 搭配,以確保僅安全資源被納入組織環境


透過上述功能組合,企業可以在供應鏈入口就進行安全把關,減少惡意套件進入內部系統的風險。


結語與展望

這次 Shai-Hulud 事件具有幾個值得特別注意的點:

  • 它是少數已知的、具自我複製能力的 npm 惡意程式之一

  • 它將「憑證竊取」與「惡意套件發布」合併為一體式攻擊

  • 即時的套件治理與信任管控顯得格外重要

  • 現成的商業工具(如 JFrog 平台)在這類攻擊中可扮演防線角色


對於 DevOps / DevSecOps 團隊而言,此案再次敲響警鐘:僅靠被動偵測不夠,安全治理必須從源頭 (source) 阻攔惡意套件,並引入策略與自動化機制,但 JFrog 可以有效阻擋惡意套件進到貴司環境之中,如果對您有興趣了解,歡迎和我們聯繫免費諮詢


Linktech 友環企業 團隊洽詢方式:


留言


bottom of page