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