譯者 | 晶顏
審校 | 重樓
最近的一些研究發現,90%或更多的應用程序包含開源組件,這是有充分理由的。開源代碼可以免費下載,不僅能使開發人員更有效率,還能加速其創新速度。
但是使用開源的缺點是,它通常伴隨著與確保你所依賴的軟件包安全性相關的隱藏成本。最近,影響Log4j和XZ Utils的惡意攻擊促使人們重新審視開源軟件安全性,并將其提升至許多組織的執行級別優先級。在這種背景下,許多應用程序開發團隊開始尋找新的方法,以避免不良的開源軟件包進入他們的應用程序。
開源包變“壞”的原因
我喜歡用“壞包/不良包”(bad package)這個短語來指代不利于企業使用的開源包。如果一個包被拋棄、棄用或被宣布生命終止,那它可能被認為是“壞的”。或者它可能沒有發布安全策略或響應安全問題,造成這種情況的原因通常是因為只有一個維護者。組織經常驚訝地發現其應用程序中的軟件包是惡意軟件,然后便將其從軟件包管理器中刪除了,但卻從未在“內部”清理過。
“壞包”不僅會產生影響組織收入、數據和客戶的安全風險,而且還會在你需要替換它們、圍繞它們工作或處理漏洞修復的無盡循環時占用寶貴的開發時間。
從歷史上看,許多組織都依賴于軟件成分分析(SCA)工具來識別和修復他們在應用程序中使用的開源代碼包中的漏洞。這是確保降低現有漏洞風險的有效方法。但這也是一場沒完沒了的“打地鼠”游戲,涉及到對一長串難以確定優先級的安全漏洞進行分類,并將誤報與真正的安全風險區分開來。僅使用SCA的方法不僅會錯過早期的風險信號,而且還會錯過軟件包過期(即被宣布生命周期終止)的時間,這可能導致錯誤的安全感,而實際上存在更大的漏洞風險,或者更糟的是,存在攻擊的風險。
因此,與其僅僅依賴漏洞修復,許多組織正在積極地投資于更好地理解他們使用的開源代碼包的安全實踐,這樣他們就可以在問題出現之前更系統地減少對不良包的依賴。以下是組織可用于識別和消除來自不良開源軟件包風險的四種關鍵方法。
1.在將包納入應用程序開發之前進行評估
避免不良軟件包帶來風險的優選方法是首先確保它們不會進入你的應用程序。在研究和評估要使用的開源包時,要制定一套明確的檢查流程,它們需要通過檢查才能被考慮使用。
檢查涉及的常見問題包括:
- 它是否符合組織的許可策略?
- 它是被積極維護還是被棄用?
- 維護人員是否積極響應安全問題?開發新版本的社區有多活躍?
- 包的依賴項和子依賴項是否正常?
- 你或你的團隊需要如何為社區做貢獻?
2.積極監控正在使用的開源包
開源包是不斷變化的,因此在最初決定使用某個包或版本之后,監視和審查更新是很重要的。尋找可能表明某個包或版本存在問題的早期警告信號。具體而言,組織需要尋找的信號包括:
- 新版本發布后,可能會終止對你仍在使用的舊版本的支持。
- 新版本可能使用不同的許可類型發布。
- 該軟件包被標記為棄用或廢棄。
- 該軟件包似乎經常受到漏洞的影響。
- 該軟件包的依賴項正在引入風險。
3.識別并消除你已采用的不良軟件包
雖然從一開始就避免不良軟件包是理想的選項,但大多數組織在其應用程序中已經有大量的包,這些包沒有得到適當的研究,以確保其安全性。
因此,回頭看看你已經在使用的軟件包來回答以下問題通常是很重要的:
- 該軟件包是否使用企業級安全軟件開發實踐?
- 它是否已被標記為已廢棄或已棄用,或者它是否已接近生命周期結束日期?
4.加固有風險的軟件包防止其變壞
識別有風險的包非常重要,這樣你就可以在漏洞出現之前及時處理相關問題。但是,另一種確保對應用程序很重要的包遠離危險的方法是,盡自己的一份力量使它們保持良好的維護和健康。
從研究開始,了解你所使用的包的維護者是否得到了可靠的報酬,以實現安全的開發實踐并維護這些實踐和代碼本身。在將包引入你的組織之前,主動了解包的當前和長期前景。在你的依賴關系圖上投資并貢獻代碼,這樣你就可以盡自己的一份力量來維護它的長期健康和安全。
結語
當你從應用程序中消除不良開源包時,就能通過消除潛在的攻擊入口點來降低安全風險。通過減少由不安全或維護不足的包引發的安全隱患,可以提高團隊的生產力。通過確保使用健康且有彈性的開源代碼包進行構建,可以提高應用程序的質量。
原文標題:4 Ways to Reduce Reliance on Bad Open Source Packages,作者:Lauren Hanford