npm 供應鏈安全強化計畫

強化我們的防禦陣線

為應對日益猖獗的套件庫攻擊,我們正透過更嚴格的身份驗證與發布實踐來強化 npm 的安全性。本儀表板將概述我們面臨的威脅、我們的全面計畫,以及您可以採取的行動,共同保護開源生態系。

持續演變的威脅

開源生態系正遭受精密且持續的攻擊。惡意行為者利用漏洞來接管維護者帳號,並透過受信任的熱門套件散播惡意軟體,形成嚴重的供應鏈攻擊

案例研究:Shai-Hulud 蠕蟲

在 2025 年 9 月 14 日,GitHub 接獲 Shai-Hulud 蠕蟲攻擊的通報(大規模傳播主要發生於 9 月 15-18 日)。此蠕蟲透過受感染的帳號滲透 npm 生態系,將惡意安裝後腳本注入熱門套件中。

運作方式 (根據 Unit42 等資安公司分析):
  • 自我複製: 該蠕蟲透過自動發布新的受感染套件版本來進行傳播。
  • 竊取密鑰: 其設計目的在於竊取多種類型的密鑰,不僅限於 npm 權杖,從而可能引發連鎖攻擊。
  • 供應鏈攻擊: 透過將自身注入安裝後腳本,它在無數信任該套件的開發者機器上執行惡意程式碼。

500+

受感染套件

GitHub 與 CISA 確認,已立即下架以阻止攻擊蔓延。

GitHub 的強化藍圖

為打擊權杖濫用與惡意軟體,我們將轉向更安全的身份驗證與發布選項。此藍圖概述了未來的核准方法以及即將淘汰的傳統選項。

在不久的將來,套件發布將僅限於以下三種安全方法:

🔐

本地發布 + 2FA

所有本地套件發布都必須啟用基於 FIDO 的雙重身份驗證。

⏱️

細粒度權杖

用於特定任務的短期權杖,生命週期限制為七天。

☁️

受信任發布

官方建議方法。無需在建構流程中管理長期有效的權杖。

為提升安全標準,我們將淘汰或限制以下選項:

傳統經典權杖

這種長期有效、權限範圍廣泛的權杖是攻擊者的主要目標。

基於 TOTP 的 2FA

將引導用戶遷移至更抗釣魚的 FIDO 方法,如安全金鑰。

繞過 2FA 的選項

移除在本地發布套件時繞過雙重身份驗證的選項。

預設權杖發布權限

發布權限預設將不允許使用權杖,以鼓勵採用更安全的方法。

受信任發布的興起

受信任發布」是 OpenSSF 推薦的一項關鍵安全功能。它透過 OIDC 協議與套件庫安全地進行身份驗證,無需在您的建構系統中管理 API 權杖。整個行業的廣泛採用凸顯了其重要性。

「受信任發布」採用時間軸

您的行動計畫

生態系的安全是我們共同的責任。作為維護者,您今天就可以採取以下關鍵步驟,以保護您的套件,並為更安全的軟體供應鏈做出貢獻。

1.

採用受信任發布

這是您可以採取的最大一步。將您的發布工作流程從手動管理權杖遷移過來。它更安全,並能簡化您的 CI/CD 設置。

2.

全面強制 2FA

強化您個人帳號、組織和套件的發布設定,要求所有寫入和發布操作都必須進行雙重身份驗證。

3.

升級您的 2FA 方法

在配置雙重身份驗證時,請使用更抗釣魚的 WebAuthn 方法(如安全金鑰或 Passkeys),而不是 TOTP 應用程式。