譯者 | 晶顏
審校 | 重樓
最近的一些研究發(fā)現(xiàn),90%或更多的應(yīng)用程序包含開(kāi)源組件,這是有充分理由的。開(kāi)源代碼可以免費(fèi)下載,不僅能使開(kāi)發(fā)人員更有效率,還能加速其創(chuàng)新速度。

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
























