沙丘 》(Dune )的粉絲一定知道「Shai-Hulud」是巨型沙蟲的名字,它們以不可阻擋的力量重塑沙漠。現在,開放原始碼社群也面臨同樣可怕的網路威脅。9 月 15 日,開放原始碼軟體社群面臨迄今最具破壞性的危機之一:一個名為Shai-Hulud 的自我複製蠕蟲在 npm 生態系統中移動,在幾個小時內攻擊了 180 多個套件。
可信賴的圖書館,例如 @ctrl/tinycolor, crowdstrike-nodejs, string-kit, json-sugar, photon-colors 和叉子的 typed.js 和 日期和時間 已經受到影響。每週數百萬次的下載,讓組織在不知情的情況下,直接將活躍的感染程式導入其建立管道。
該蠕蟲利用 npm 生命週期鉤子竊取 GitHub 和公共雲端憑證,然後運用這些秘密向其他專案發佈中毒更新。
攻擊流程
- 洩露版本的
@ctrl/tinycolor注入本機惡意指令碼 (bundle.js)。 - bundle.js 指令碼會下載並執行 TruffleHog,以掃描受害者電腦上的 GitHub 秘密。
- 使用發現的 GitHub 秘訣,腳本會枚舉可存取的套件庫(擁有者、合作者或組織成員)。
- 對於每個儲存庫,它會取得預設分支,建立一個
shai-hulud分支,並將工作流程檔案上載到.github/workflows/shai-hulud-workflow.yml. - 工作流程被設定為在推送事件時觸發。GitHub Actions runner 在儲存庫上下文中執行工作,而儲存庫上下文可存取秘密。
- 該工作流程會讀取 GitHub 秘密,並將其滲透到攻擊者控制的端點。
為何現在和長期都很重要?
開放原始碼在設計上就是開放的。npm 註冊中心每月提供數千億次的下載服務,任何人都可以發佈套件。這種開放性驅動了創新,但也為攻擊者創造了大規模利用信任武器的機會。
疫情的爆發讓一個事實無法避免:信任不是永恆的。今天是安全的包裹,明天就可能受到損害。
現在與下一個:平衡自動化與人工介入
| 現在立即回應 | 下一頁長期應變能力 |
|---|---|
審計 npm 依賴性,並使用多個引擎掃描工件。 |
|
| 開發人員會暫停盲目安裝,並手動確認相依性來源。 |
|
| 撤銷和輪換已曝光的機密。 | 執行自動輪換政策和最少權限預設值。 |
| 安全團隊會評估可疑的憑證使用情況,並決定遏制步驟。 | 高階主管設定管理標準,並確保供應鏈信任的責任。 |
| 在 CI/CD 中執行 MFA 和簽章檢查。 | 要求所有版本都要有已簽署的提交和可驗證的建立證明。 |
| 領導者會決定何時放慢交付速度以保護完整性。 | 董事會將軟體信賴度視為策略彈性問題,而非合規性核取方塊。 |
大圖畫
對於主管而言,這次攻擊提醒他們軟體供應鏈風險就是企業風險。監管機構期望可驗證的控制,而客戶則期望完整性的證明。董事會無法再推卸為關鍵作業提供動力的程式碼的責任。
對於實務人員而言,這次疫情顯示管道必須不斷演進。每項開放原始碼依賴都應視為不可信任,直到證明安全為止。SBOM、惡意軟體掃描和淨化提供了基線,但人類的意識 - 停頓、質疑、升級 - 是防止盲目自動化輸入下一個蠕蟲的關鍵。
OPSWAT的觀點
建立Supply Chain 信任
針對 npm 等開放原始碼環境的供應鏈攻擊等事件,證明軟體供應鏈已經成為重要的工作負載。業界必須從盲目信任轉變為可驗證的信任。
George Prichici產品副總裁,OPSWAT
在OPSWAT,我們相信供應鏈的信任必須建立,而不是假設。我們的方法著重於深度防禦:
- 全面的軟體供應鏈可視性與 SBOM 整合,可追蹤每個軟體元件、識別漏洞、管理整個 SDLC 的風險,並在每個階段驗證來源。
- 使用 30 多個引擎進行Multiscanning ,以捕獲套件中的多形性惡意軟體和其他惡意軟體,尤其是第三方開放原始碼中的惡意軟體。
- Adaptive Sandbox:AI 驅動的分析,即使是最狡猾的惡意軟體也能快速偵測出來。
- 安全的 儲存與傳輸控制,可在CI/CD 管線間強制執行信任邊界。
- 這些控制措施不僅能偵測風險,還能主動清除檔案和強制執行信任,減少類似事件向下游串連的機會。
快速開發與強大的安全性並不互相排斥。開發人員團隊需要內建於軟體供應鏈中的自動掃描與核准工作流程,這樣他們就能在不減慢速度的情況下保護程式碼。
George Prichici產品副總裁,OPSWAT
與發展同步的安全性
有了OPSWAT,安全性可直接整合至現有的工作流程:
- CI/CD 管道整合- 在 Jenkins、GitHub Actions、GitLab 及其他建置環境中自動掃描與執行政策。驗證 npm 套件、容器和二進位檔,作為例行建立步驟的一部分。
- 按需產生和驗證 SBOM- 為每個版本自動產生和驗證 SBOM,確保原始性而無需額外開銷。
- 透明的開發人員體驗- 安全性在背景中執行,只有在真正需要介入時才會出現問題。
- 自動修復鉤子- 隔離或清除受危害的檔案,而無需中斷建置。
以速度為導向的開發文化不需要與必要的安全性驗證相衝突;自動掃描和核准工作流程應該是必須的,而且對開發速度的影響應該降到最低。
藉由將這些功能嵌入軟體生命週期,OPSWAT 可協助組織同時達到開發速度與可驗證的信任,而 npm 事件證明這兩者之間的平衡現在是非常重要的。
外賣
Shai-Hulud npm 蠕蟲是當今軟體威脅的明確信號。攻擊者不需要侵入您的程式碼庫。他們可以說服您安裝。驗證每一件工件、在每一個階段嵌入彈性,並授權人員在光靠自動化還不夠時採取行動。現在就認真對待這件事的組織,將定義軟體安全供應鏈的未來。
準備好透過量身打造、無縫整合的解決方案,保護您的軟體供應鏈免受最新的網路威脅嗎?

