軟體依賴性:全球大型攻擊背後的無聲殺手

zktq2021發表於2023-03-02

為什麼要加強管理依賴項

近年來,像Node.js中的npm和Java中的Maven這樣的依賴管理器的使用更加方便,允許開發人員在他們的軟體專案中包含許多小的軟體包。現如今,許多軟體專案包括數百甚至數千個第三方庫,所有這些庫都成為主軟體程式的依賴項。

然而,依賴關係所產生的風險往往被忽視。將外部軟體作為依賴項使用意味著依賴其開發人員正確地編寫、測試和維護程式碼。除了這些程式的依賴關係中可能存在的安全漏洞之外,它們還可能過時,降低使用它們的軟體專案的質量,甚至導致故障和停機。使用的依賴項越多,使用者面臨的風險就越高。

軟體依賴性:全球最大攻擊背後的無聲殺手

SolarWinds

針對SolarWinds的網路攻擊可能是第一次全球規模的供應鏈攻擊。Novellium組織獲得了由SolarWinds產品管理的數千個網路,系統和資料的訪問許可權。該攻擊始於 2020 年,但直到 2021 年底才被發現。

在這次攻擊中,駭客將惡意程式碼(稱為SUNBURST惡意軟體)注入SolarWinds Orion系統,該系統是許多大型企業(包括美國政府機構)使用的流行IT管理系統。他們的方法不是直接入侵這些網路,而是針對Orion - 一個安全措施不那麼嚴格的第三方,可以訪問這些大型組織。

駭客滲透了SolarWinds的開發系統,並建立了Orion平臺的惡意構建,建立了一個後門,允許駭客訪問和冒充SolarWinds客戶的使用者和帳戶。該惡意軟體可以訪問系統檔案並滲透到 SolarWinds 客戶的合法活動而不會被防病毒軟體檢測到,因為 SolarWinds 本身就是受信任的軟體產品。

Log4j

Apache Log4j專案是分佈廣泛的開源軟體之一,它為Java應用程式提供了日誌記錄功能。

Log4j漏洞一開始是一個bug,但後來演變成一系列安全問題,其根本原因是Log4j的Java命名和目錄介面(JNDI)介面存在漏洞。

2021年,在多個軟體版本中發現了CVE-2021-44228遠端程式碼執行(RCE)漏洞。RCE缺陷是由於Log4j與JNDI互動時沒有正確驗證所有請求。這意味著獲得日誌訊息訪問權的攻擊者可以注入惡意訊息,允許在易受攻擊的系統上執行任意程式碼。

NIST 國家漏洞資料庫將 CVE-2021-44228 評為 10.0,這是通用漏洞評分系統中可能的最高嚴重性分數。在發現該漏洞後的幾天和幾周內,記錄了數十萬次攻擊。

Kaseya

2021 年,許多託管服務提供商 (MSP) 及其客戶成為 REvil Group 勒索軟體攻擊的受害者,導致1,000多家公司長時間停機。

攻擊的重點是虛擬系統管理器(VSA),這是Kaseya開發的遠端監控和管理軟體包。軟體中的身份驗證繞過漏洞可能允許攻擊者破壞VSA並透過軟體控制的主機分發惡意有效負載。

該公司當時關閉了其VSA雲和SaaS伺服器,並向所有客戶(包括使用VSA本地服務的客戶)釋出了安全建議。

解決軟體依賴性風險的 4 個技巧

1. 理清對映依賴關係

只有在知道依賴項的位置時才能進行最佳化。有許多工具可以幫助進行依賴關係對映,包括專用的應用程式依賴關係管理(ADM)解決方案和自動構建工具。這些工具有助於在整個構建和部署過程中詳細跟蹤軟體依賴關係。

對映依賴關係提供了對漏洞的可見性,並提供有關在程式碼中使用依賴項的位置以及如何以及何時呼叫依賴項的重要見解。另一個影響是對數字取證工作的影響——識別依賴關係對於理解和緩解針對複雜軟體系統的網路攻擊至關重要。

2. 消除不必要的依賴關係

考慮應用程式如何使用第三方庫和元件非常重要。一個應用程式可能只使用廣泛實用程式庫的功能或特性的一小部分。另一個應用程式可能包含許多較小的元件。消除應用程式不主動使用的任何依賴項。對於那些被積極使用的依賴項,考慮如何合併依賴項,並避免將依賴項包含應用程式未使用的附加功能。

3. 使用已建立的儲存庫

一些環境,如Linux,Java,Ruby和Python,已經建立了自由和開源元件儲存庫。如包括用於JavaScript的npm,用於Java的Maven和用於Ruby的gem包管理器。開發人員可以輕鬆地從這些儲存庫下載包,並將其包含在專案構建中。

雖然這種方法可以支援更標準化的開發環境,並減少缺失、過時或不相容依賴項的影響,但它不能絕對保證質量或安全性。即使是已建立的儲存庫也可能包含過時的、易受攻擊的甚至惡意的軟體包。

4. 掃描所有依賴項

自動化工具可以掃描第三方依賴項並識別風險,包括安全性和合規性問題。用於此目的的最常見技術是軟體組合分析(SCA),它提供軟體物料清單(SBOM),其中詳細說明瞭程式碼中包含的直接和傳遞依賴項。SCA透過根據公開可用的漏洞資料庫檢查第三方庫來檢查安全問題。

此外, 靜態應用程式安全測試 (SAST) 可以掃描實際原始碼以查詢已知漏洞或存在風險的缺陷。應該認真對待來自SCA、SAST或類似工具的高優先順序警報,刪除或替換有問題的包。


來源:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2937850/,如需轉載,請註明出處,否則將追究法律責任。

相關文章