開源依賴項管理指南

SEAL安全發表於2022-12-13

就像人際關係中人與人之間的關係一樣,軟體生態系統中包含一個龐大的關係網路。其中一些聯絡非常深入,而有一些關係則更為表面。但實際上,現代基於開源的軟體開發涉及一個極其龐大的依賴關係樹,依賴關係層層疊加,同時涉及和包含已知或未知的風險。
 

Endor Labs 最近的一份報告發現,95% 的易受攻擊的依賴項都是可傳遞的。這些傳遞性依賴項是深藏在軟體供應鏈中的元件,使它們更難以評估和觸及。這些易受攻擊的軟體包有些是已經過時,有些則是新發布的,根據報告結果發現2022 年釋出的軟體包中仍有 25% 存在 1 到 18 個已知漏洞
 

圍繞開源依賴項的新漏洞每天都在產生。近期的軟體供應鏈混亂(software supply chain chaos)為依賴項維護又增加了一層難度。儘管非營利組織和政府機構已尋求提高開源安全性並引入有關保護第三方軟體的法規,但軟體行業距離擁有必要的標準和技術來遏制開源依賴帶來的安全隱患還有很長的路要走。
 

Endor 的2022年依賴管理狀態報告著眼於現代基於開源的開發的複雜性並提供一些指導性建議。本文將總結該研究的要點,從而幫助大家更好地瞭解依賴管理的狀態以及網路安全專業人員應如何應對
 

理解依賴傳遞

直接依賴是指應用程式直接依賴某個庫或包來執行。另一方面,傳遞依賴是嵌入在包中的依賴。可以想象,應用程式開發人員可能會透過包含其他依賴項在不知不覺中將多個級別的傳遞依賴項插入到他們的應用程式中。報告中的圖表 8 直觀地描述了傳遞依賴項如何在下游應用程式中存在:

圖片來源:EndorLabs

該報告發現依賴項平均深度相差兩層,但在某些情況下可能達到七層之多。
 

對於這項研究,Endor Labs 從 Census II 報告中獲取了一個資料集,該報告提供了一份最流行的免費開源軟體 (FOSS) 列表,並使用其他來源對其進行了豐富。這些資料在 GitHub 上開源,代表了對涵蓋 npm、maven、nugget、pipit 和 ruby gems 等發行版的生產應用程式的掃描。
 

在 Census II 資料集中提到的254個不同的 Maven 包中,大多數平均有 14 個依賴項。這可能看起來不是很高,但考慮到大多數應用程式有數十個(如果不是數百個)依賴項,應用程式擁有受影響的傳遞依賴項的可能性呈指數級增長。因此,隨機的 Maven 包有 32% 的機會在其依賴樹中隱藏一個或多個已知漏洞。一些離群值具有更多的依賴性,增加了潛在漏洞的可能性。例如,log4j-core v2.19.0 有 141 個依賴項,而更令人驚訝的是 aws-java-sdk v1.12.316 被發現存在 331 個依賴項。
 

如何管理依賴關係

在雲服務提供商 (CSP) 的世界中,安全責任是共同承擔的。CSP 保護基礎設施,消費者保護構建在基礎設施之上的應用程式。然而在開源世界中,安全責任很大程度上落在了軟體消費者的身上。OSS消費者負全責,需要根據具體情況應對安全風險。話雖如此,我們已經看到監管機構採取了實質性行動,來建立更多關於第三方依賴性的標準。其中包括針對雲服務的候選歐盟網路安全認證計劃、白宮第 14028 號行政命令以及來自NIST、NITIA和ENISA的指南。此外,OpenSSF、CNCF 和 OWASP 等非營利組織繼續傳播最佳實踐並開發相關的安全工具。然而,軟體供應商仍必須自行確保其依賴樹穩定且沒有重大漏洞。以下是從報告中總結的一些關於如何應對的提示:
 

為開源專案做貢獻。正如之前提到的,太多公司使用開放原始碼而不回饋專案。開源需要集體努力來改進,但對比其高使用率,很少有企業組織真正支援它們並報告安全漏洞。
 

圍繞軟體採購和相關性管理構建更智慧的文化。軟體提供商需要更深入地研究依賴關係網,以審查依賴關係中的表面區域併發掘深層依賴。這也意味著需要更新依賴樹中的舊元件,並在獲取過程中更具選擇性來避免惡意包。
 

刪除未使用的依賴項。如果程式不呼叫上游專案中的依賴項,最好將其刪除。這可以降低隱藏漏洞的可能性,並最大限度地減少相關安全風險。正如報告所說,軟體組合分析 (SCA) 工具應優先分析實際會在生產中顯示的依賴項,而不是僅用於測試目的的依賴項。
 

優先處理高風險和可觸及的漏洞。企業可能更傾向快速修復CVSS評分更高的漏洞。此外企業還需要考慮漏洞的可達性(reachability)。駭客往往會選擇那些容易被利用的低風險漏洞為目標,從而向企業發起惡意攻擊。
 

合理安排更新時間。研究發現,只有 9% 的更新需要進行重大版本更改。然而,20.1% 的非主要版本會導致重大變更!依賴項更新可能需要花費時間和精力進行除錯,但不進行處理可能會使主要漏洞利用容易受到攻擊。因此,最好設定適合企業團隊的定期更新節奏。
 

參考連結:
https://www.coreinfrastructure.org/programs/census-program-ii/
https://github.com/endorlabs/StateOfDependencyManagement2022
https://accelerationeconomy.com/cybersecurity/why-core-open-source-security-projects-need-more-resources/

相關文章