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