開(kāi)源已經(jīng)成為軟件行業(yè)的趨勢(shì)。然而,由于開(kāi)源使用的便捷性,有些企業(yè)可能會(huì)忽略其帶來(lái)的風(fēng)險(xiǎn)。開(kāi)源組件和依賴(lài)管理對(duì)于軟件安全性和可信性來(lái)說(shuō)極其重要。
開(kāi)源軟件無(wú)處不在。無(wú)論在什么行業(yè),每個(gè)企業(yè)都需要依賴(lài)軟件來(lái)滿(mǎn)足其業(yè)務(wù)需要。而且,企業(yè)構(gòu)建和使用的大多數(shù)應(yīng)用程序都包含了開(kāi)源代碼。隨著各行各業(yè)遷移至云原生應(yīng)用以及應(yīng)用程序越來(lái)越復(fù)雜,軟件的安全風(fēng)險(xiǎn)也隨之增長(zhǎng)。企業(yè)需要在其軟件開(kāi)發(fā)生命周期(SLDC)中實(shí)施開(kāi)源依賴(lài)最佳實(shí)踐,并選擇正確的工具來(lái)管理其開(kāi)源風(fēng)險(xiǎn)。新思科技指出對(duì)開(kāi)發(fā)人員進(jìn)行開(kāi)源安全培訓(xùn)和部署強(qiáng)大的軟件組成分析(SCA)工具,都是保護(hù)代碼、降低開(kāi)源軟件風(fēng)險(xiǎn)的關(guān)鍵步驟。
新思科技中國(guó)區(qū)軟件應(yīng)用安全業(yè)務(wù)總監(jiān)楊國(guó)梁表示:“開(kāi)源已經(jīng)被明確列入了中國(guó)‘十四五’規(guī)劃,其價(jià)值正在被越來(lái)越多的領(lǐng)域所認(rèn)可。雖然憑借其開(kāi)放、協(xié)作、共享的特性,開(kāi)源這一賽道持續(xù)火熱。但其中的風(fēng)險(xiǎn)隱患也不容忽視。過(guò)度依賴(lài)開(kāi)源組件可能導(dǎo)致產(chǎn)品同質(zhì)化;更需要重視的是,這還會(huì)增加安全風(fēng)險(xiǎn)、知識(shí)產(chǎn)權(quán)風(fēng)險(xiǎn)、供應(yīng)鏈安全風(fēng)險(xiǎn)等。企業(yè)需要制定清晰的開(kāi)源策略,并在內(nèi)部及供應(yīng)鏈貫徹該策略,借助可靠的測(cè)試工具,以滿(mǎn)足業(yè)務(wù)發(fā)展需求的速度開(kāi)發(fā)可信軟件產(chǎn)品?!?/p>
新思科技發(fā)布的《2022年開(kāi)源安全和風(fēng)險(xiǎn)分析》報(bào)告(OSSRA)強(qiáng)調(diào)了在商業(yè)和專(zhuān)有應(yīng)用程序中使用開(kāi)源的趨勢(shì),并提供了見(jiàn)解,以幫助開(kāi)發(fā)人員更好地了解他們所處的互聯(lián)軟件生態(tài)系統(tǒng),同時(shí)還詳細(xì)地介紹了非托管開(kāi)源所帶來(lái)的安全隱患,包括安全漏洞、過(guò)期或廢棄的組件以及許可證合規(guī)性問(wèn)題。該報(bào)告調(diào)研了17個(gè)行業(yè),其中計(jì)算機(jī)硬件和半導(dǎo)體、網(wǎng)絡(luò)安全、能源與清潔技術(shù),以及物聯(lián)網(wǎng)這四個(gè)行業(yè)被審計(jì)的代碼庫(kù)中100%包含開(kāi)源組件。其余的垂直行業(yè)的代碼庫(kù)中有93%到99%包含開(kāi)源組件。
報(bào)告還發(fā)現(xiàn)許可證沖突總體上在減少。超過(guò)一半(53%)的被審代碼庫(kù)存在許可證沖突,與 2020 年的 65% 相比大幅下降。盡管如此,未經(jīng)審查的依賴(lài)關(guān)系的用例有所增加。也就是說(shuō),當(dāng)開(kāi)發(fā)人員引入開(kāi)源依賴(lài)項(xiàng)時(shí),他們通常不知道其中包含許可條款的子依賴(lài)項(xiàng)。例如,常用的 node.js 組件的某些版本包含一個(gè)依賴(lài)項(xiàng),該依賴(lài)項(xiàng)使用了 CC-SA 3 許可協(xié)議下許可的代碼,這可能會(huì)對(duì)被許可人提出非預(yù)期的要求,需要對(duì)可能的知識(shí)產(chǎn)權(quán)IP問(wèn)題或其它影響進(jìn)行法律評(píng)估。
更糟糕的是使用過(guò)時(shí)的開(kāi)源組件仍然是常態(tài)。在新思科技Black Duck審計(jì)服務(wù)團(tuán)隊(duì)今年分析的2,097個(gè)代碼庫(kù)中, 88%的代碼庫(kù)包含過(guò)時(shí)版本的組件。這意味著,市場(chǎng)上有可用的更新/修復(fù)版本,但開(kāi)發(fā)人員并未采用。
沒(méi)有將軟件升級(jí)到最新版本的理由有很多。但是,如果沒(méi)有一份清單,準(zhǔn)確列明其在代碼使用的開(kāi)源組件,那過(guò)時(shí)的組件可能就會(huì)被遺忘;直到變成一個(gè)易受攻擊的高風(fēng)險(xiǎn)漏洞。
這正是Log4j漏洞產(chǎn)生的原因。漏洞本身固然危險(xiǎn),但引起企業(yè)恐慌和混亂的是,當(dāng)他們?cè)噲D修復(fù)漏洞時(shí),卻不知道Log4j在其系統(tǒng)和應(yīng)用程序中的位置。甚至有的企業(yè)還在著急地檢查他們是否應(yīng)用了Log4j。
在危機(jī)發(fā)生之前建立開(kāi)源依賴(lài)最佳實(shí)踐
建立一個(gè)全面的開(kāi)源軟件管理程序或許令人望而卻步,但企業(yè)可以參考一些最佳實(shí)踐,以循環(huán)漸進(jìn)提升開(kāi)源軟件安全。
為了避免“零日漏洞”帶來(lái)的風(fēng)險(xiǎn),保護(hù)資源和數(shù)據(jù),企業(yè)需要建立軟件治理,包括制定策略、設(shè)置審批流程以及對(duì)現(xiàn)有開(kāi)源軟件依賴(lài)項(xiàng)進(jìn)行全面審計(jì)。
1.制定策略
制定開(kāi)源策略可以最大限度地降低使用開(kāi)源軟件的法律、技術(shù)和業(yè)務(wù)風(fēng)險(xiǎn)。有一些企業(yè)甚至設(shè)立開(kāi)源項(xiàng)目辦公室,以管理與開(kāi)源軟件相關(guān)的所有事宜。
制定開(kāi)源策略的第一步是要明確主要利益相關(guān)者。這包括開(kāi)發(fā)人員、高層管理人員、IT人員、使用開(kāi)源組件的團(tuán)隊(duì)經(jīng)理、就開(kāi)源許可證合規(guī)性提供建議的法律專(zhuān)家以及軟件架構(gòu)師等。他們都會(huì)受到策略的影響。所有利益相關(guān)者都應(yīng)該今早參與到開(kāi)源相關(guān)流程。
開(kāi)源策略應(yīng)該列明企業(yè)使用開(kāi)源組件的目的;目前使用多少開(kāi)源組件;如何使用開(kāi)源組件;包含哪些開(kāi)源許可證;開(kāi)源軟件的使用對(duì)于內(nèi)部開(kāi)發(fā)和交付的軟件有何不同等。企業(yè)還需要建立開(kāi)源軟件采購(gòu)和選擇流程。比較理想的情況下,該流程標(biāo)明允許使用的網(wǎng)站、存儲(chǔ)庫(kù)、獲取開(kāi)源軟件的方法,以及如何確定特定軟件包是否適用。此外,還需要規(guī)定誰(shuí)可以下載開(kāi)源軟件、從哪里下載,以及在下載、使用或分發(fā)之前是否需要許可。
2.設(shè)置審批流程
您還應(yīng)該建立一個(gè)審批流程,以確定軟件包是否滿(mǎn)足企業(yè)的需求和質(zhì)量標(biāo)準(zhǔn)。 需要考慮的標(biāo)準(zhǔn)包括代碼質(zhì)量、支持級(jí)別、項(xiàng)目成熟度、貢獻(xiàn)者聲譽(yù)和漏洞趨勢(shì)。
如果流程審批要發(fā)揮作用,則需要快速處理請(qǐng)求。 建立一個(gè)預(yù)先批準(zhǔn)的開(kāi)源列表可以幫助加速處理請(qǐng)求。
3.創(chuàng)建審計(jì)流程以檢測(cè)開(kāi)源軟件
除了確保遵守內(nèi)部政策外,審計(jì)還可以全面了解正在使用的開(kāi)源軟件。 這將幫助識(shí)別和定位開(kāi)源組件,對(duì)于維護(hù)開(kāi)源許可證合規(guī)性至關(guān)重要。而且,當(dāng)有漏洞披露時(shí),企業(yè)也可以盡快響應(yīng)。
為了查明應(yīng)用中易受攻擊的組件,您必須首先掌握應(yīng)用中的所有開(kāi)源組件。 這需要考慮代碼的所有版本和fork,檢測(cè)源代碼和二進(jìn)制形式的組件,分析經(jīng)常嵌入開(kāi)源的商業(yè)軟件,并檢查包管理器中聲明以外的內(nèi)容。 手動(dòng)記錄開(kāi)源清單通常不準(zhǔn)確,將這些任務(wù)自動(dòng)化很有必要。
審計(jì)后,企業(yè)將能夠創(chuàng)建任務(wù)列表和相應(yīng)的計(jì)劃,以幫助改善軟件并實(shí)現(xiàn)合規(guī)性。 此類(lèi)任務(wù)可能包括提供源代碼,包括代碼或文檔中所需的通知,以及更新最終用戶(hù)許可協(xié)議。 如不符合合規(guī)性,您需要尋找替代方案,例如不同的庫(kù)。