惡意 npm 套件藏匿於函式庫程式碼 躲過 GitHub 安裝腳本防護
網路安全

惡意 npm 套件藏匿於函式庫程式碼 躲過 GitHub 安裝腳本防護

AI News Bot
2026-09-23
預計閱讀 1 分鐘原文來源

惡意 npm 套件藏匿於函式庫程式碼 躲過 GitHub 安裝腳本防護

Checkmarx 於 9 月 17 日公開新一波 npm 供應鏈攻擊,揭露 10 套惡意套件(核心套件為 indexed‑btree,另有 9 個相關變種)已累計取得數百萬次下載。這些套件偽裝成熱門的 sorted‑btree 函式庫,將惡意載入器埋入 BTree.prototype.set 方法內,而非以傳統的 install‑script(安裝指令碼)形式出現。

為何能躲過 GitHub npm v12 防護?

GitHub 於今年 7 月推出的 npm v12 版本,預設停用依賴套件的 preinstall、install 與 postinstall 生命週期指令碼,除非使用者明確核准才會執行,目的是阻止安裝階段植入惡意程式碼。然而,此波攻擊根本不使用任何安裝指令碼,而是把惡意程式碼直接寫入套件的正常執行路徑。當開發者的應用程式呼叫 BTree.set(即插入或更新樹節點)時,惡意載入器才會被觸發,成功繞過安裝階段的防禦。

影響與應對措施

  • 下載量與擴散範圍:十套套件合計下載次數達數百萬,說明供應鏈攻擊的潛在影響已相當廣泛。
  • 安全建議:Checkmarx 已協助 GitHub 移除相關套件,並建議曾安裝過這些套件的開發者立即更換所有憑證(如 API 金鑰、私鑰),並以備份或乾淨的環境重新建置專案。
  • 防禦盲點:僅阻擋安裝指令碼已不足以防範供應鏈威脅,必須加強 執行期間行為分析(runtime behavior analysis),偵測異常的函式呼叫或資料流向。

未來展望與讀者啟示

供應鏈攻擊正從「安裝即植入」轉向「執行時動態載入」,安全團隊需要重新審視依賴管理的風險模型,導入程式碼簽章、行為監控與最小權限原則。對開發者而言,審查第三方函式庫的實作細節、定期執行依賴掃描、以及採用可信賴的私有 npm registry,都是降低被竊取或植入惡意程式碼的關鍵步驟。

想即時掌握資安要聞?資安日報與資安週報現正提供免費電子報,每日、每週直送最新資安情報,協助您在快速變動的威脅環境中保持警覺。

分享