關閉選單
ENISA諮詢報告審查了軟體包管理器的安全風險

開發者只需一條命令即可安裝外部程式庫,而這一步驟可能會在專案環境中引入超出預期的程式碼量。軟體包管理器內部的依賴關係解析會將軟體供應鏈擴展到大量外部元件。 ENISA於 2026 年 3 月發布的《軟體包管理器安全使用技術諮詢 (Technical Advisory for Secure Use of Package Managers) 》探討了這種開發方式如何擴大軟體生態系統的風險範圍。

套件管理器從公共倉庫中獲取庫並將其整合到應用程式中,諸如 npm、pip 和 Maven 之類的工具允許團隊透過安裝預先建置元件來新增功能,應用程式繼承了開發團隊未編寫或審查的多層相依性。

安裝一個軟體包後,一旦直接依賴和傳遞依賴關係解析完畢,就可能引入許多其他元件。每個軟體包都會成為專案依賴關係圖的一部分,並在安裝後仍然存在於開發環境中。專案可能包含在執行期間未使用的模組,但每個元件仍然帶有漏洞、維護歷史記錄和信任假設。

ENISA表示:「本文檔重點介紹開發人員如何在軟體開發生命週期中安全地使用軟體包管理器。特別是,本文檔概述了使用第三方軟體包時涉及的常見風險,提出了選擇、整合和監控軟體包的安全實踐,並描述了解決依賴項中發現的漏洞的方法,」。

  1. 廣泛使用的庫會形成龐大的生態系

常用軟體包出現在數萬個專案中,並在軟體開發過程中形成龐大的依賴關係生態系統。依賴關係遍及應用程式、框架和支援元件,這些元件都依賴共享的軟體包。

廣泛採用的組件中的弱點可以透過這些關聯關係傳播到許多下游應用程式中,常用框架或庫中的漏洞可能會蔓延到整個 Web 應用程式生態系統的很大一部分

  1. 供應鏈攻擊和易受攻擊的包裹

軟體包生態系中的安全風險分為兩類:一類是軟體包程式碼、配置或設計中的漏洞,另一類是針對軟體分發過程的攻擊。

即使維護者放棄維護,漏洞的軟體包仍可能長期存在。依賴過時或無人維護組件的專案可能會繼承長期未解決的漏洞

供應鏈攻擊為惡意程式碼進入開發環境開闢了更多途徑。攻擊者可能發布惡意軟體包、入侵維護者帳戶或操縱依賴項解析過程,從而將有害程式碼植入軟體專案中。

軟體包管理器安全漏洞傳播(來源:ENISA)

受感染的軟體包可以透過自動化安裝和更新過程將惡意程式碼傳播到下游應用程式,從公共倉庫 (Repository) 取得軟體包的開發環境可能會在未直接審查其內部程式碼的情況下安裝受感染的元件。

  1. 安全實踐遵循依賴生命週期

管理依賴風險需要在軟體包的整個生命週期中實施安全控制,這些實踐分為四個階段:選擇軟體包、將其整合到專案中、監控其安全狀態以及緩解漏洞。

軟體包選擇在安裝之前就開始了。開發人員會審查庫的來源、維護者的活動、漏洞歷史和程式碼庫信譽,驗證加密簽章和使用可信任註冊表有助於在此階段做出信任決策。

整合引入了多種控制措施,可在安裝和建置過程中保持完整性。軟體物料清單記錄了項目中包含的組件,依賴項鎖定檔案和雜湊驗證可確保跨環境的一致性。持續整合管道包含漏洞掃描,可在建置過程中識別已知問題。

即使依賴項已成為應用程式環境的一部分,監控仍會持續進行。團隊會追蹤漏洞揭露、維護者活動以及修復安全漏洞的新版本。針對新 CVE 條目、已棄用版本和所有權變更的警報有助於提高對依賴項風險的認識。當依賴項中出現漏洞時,緩解措施便開始實施。開發人員會評估漏洞在其係統中的可利用性和可訪問性,修復措施包括更新軟體包、替換存在漏洞的庫或應用修補程式。

  1. 未來對依賴關係管理的考慮

日益增長的依賴關係生態系統增加了安全實踐中自動化的需求,自動化工具支援在複雜的軟體環境中進行依賴關係追蹤、漏洞監控和修復工作流程。

隨著人工智慧工具輔助編程任務,開發工作流程也隨之改變。生命週期管理(LLM)系統會在開發過程中產生程式碼並推薦程式庫,這些系統可能會為專案引入新的依賴項,並可能選擇開發人員未評估過的軟體包。

整合 AI 輔助開發工作流程的專案需要監督,以確保引入到程式碼庫中的新軟體包能夠獲得與手動選擇的依賴項相同的驗證和安全審查。

由軟體包管理器創建的依賴鏈仍然是軟體開發的核心特徵,每次安裝都會擴展應用程式背後的軟體供應鏈。安全實踐貫穿整個生命週期,從選擇、監控到修復,始終與這些依賴項保持一致。


資料來源:https://www.helpnetsecurity.com/2026/03/12/enisa-package-manager-security-technical-advisory/
 
ENISA 發布的《軟體包管理器安全使用技術建議》,探討開發者在引入外部函式庫時面臨的資安風險,包括惡意包植入、依賴項衝突及供應鏈攻擊。