天天看點

軟體開發人員需更加重視軟體供應鍊安全

作者:比特觀察

  開源元件是軟體供應鍊重要組成部分。大部分軟體應用開發會使用到開源元件,與開源軟體相關的依賴關系極其複雜。當然使用開源元件雖然能夠提高開發人員的效率,但不意味着軟體供應鍊更加安全。

  開源軟體無處不在。無論在什麼行業,每個企業都需要依賴軟體來滿足其業務需要。而且,企業建構和使用的大多數應用程式都包含了開源代碼。随着各行各業遷移至雲原生應用以及應用程式越來越複雜,軟體的安全風險也随之增長。企業需要在其軟體開發生命周期(SLDC)中實施開源依賴最佳實踐,并選擇正确的工具來管理其開源風險。新思科技指出對開發人員進行開源安全教育訓練和部署強大的軟體組成分析(SCA)工具,都是保護代碼、降低開源軟體風險的關鍵步驟。

  新思科技中國區軟體應用安全業務總監楊國梁表示:“開源已經被明确列入了中國‘十四五’規劃,其價值正在被越來越多的領域所認可。雖然憑借其開放、協作、共享的特性,開源這一賽道持續火熱。但其中的風險隐患也不容忽視。過度依賴開源元件可能導緻産品同質化;更需要重視的是,這還會增加安全風險、知識産權風險、供應鍊安全風險等。企業需要制定清晰的開源政策,并在内部及供應鍊貫徹該政策,借助可靠的測試工具,以滿足業務發展需求的速度開發可信軟體産品。”

  新思科技釋出的《2022年開源安全和風險分析》報告(OSSRA)強調了在商業和專有應用程式中使用開源的趨勢,并提供了見解,以幫助開發人員更好地了解他們所處的互聯軟體生态系統,同時還詳細地介紹了非托管開源所帶來的安全隐患,包括安全漏洞、過期或廢棄的元件以及許可證合規性問題。該報告調研了17個行業,其中計算機硬體和半導體、網絡安全、能源與清潔技術,以及物聯網這四個行業被審計的代碼庫中100%包含開源元件。其餘的垂直行業的代碼庫中有93%到99%包含開源元件。

  報告還發現許可證沖突總體上在減少。超過一半(53%)的被審代碼庫存在許可證沖突,與 2020 年的 65% 相比大幅下降。盡管如此,未經審查的依賴關系的用例有所增加。也就是說,當開發人員引入開源依賴項時,他們通常不知道其中包含許可條款的子依賴項。例如,常用的 node.js 元件的某些版本包含一個依賴項,該依賴項使用了 CC-SA 3 許可協定下許可的代碼,這可能會對被許可人提出非預期的要求,需要對可能的知識産權IP問題或其它影響進行法律評估。

  更糟糕的是使用過時的開源元件仍然是常态。在新思科技Black Duck審計服務團隊今年分析的2,097個代碼庫中, 88%的代碼庫包含過時版本的元件。這意味着,市場上有可用的更新/修複版本,但開發人員并未采用。

  沒有将軟體更新到最新版本的理由有很多。但是,如果沒有一份清單,準确列明其在代碼使用的開源元件,那過時的元件可能就會被遺忘;直到變成一個易受攻擊的高風險漏洞。

  這正是Log4j漏洞産生的原因。漏洞本身固然危險,但引起企業恐慌和混亂的是,當他們試圖修複漏洞時,卻不知道Log4j在其系統和應用程式中的位置。甚至有的企業還在着急地檢查他們是否應用了Log4j。

  在危機發生之前建立開源依賴最佳實踐

  建立一個全面的開源軟體管理程式或許令人望而卻步,但企業可以參考一些最佳實踐,以循環漸進提升開源軟體安全。

  為了避免“零日漏洞”帶來的風險,保護資源和資料,企業需要建立軟體治理,包括制定政策、設定審批流程以及對現有開源軟體依賴項進行全面審計。

  1. 制定政策

  制定開源政策可以最大限度地降低使用開源軟體的法律、技術和業務風險。有一些企業甚至設立開源項目辦公室,以管理與開源軟體相關的所有事宜。

  制定開源政策的第一步是要明确主要利益相關者。這包括開發人員、高層管理人員、IT人員、使用開源元件的團隊經理、就開源許可證合規性提供建議的法律專家以及軟體架構師等。他們都會受到政策的影響。所有利益相關者都應該今早參與到開源相關流程。

  開源政策應該列明企業使用開源元件的目的;目前使用多少開源元件;如何使用開源元件;包含哪些開源許可證;開源軟體的使用對于内部開發和傳遞的軟體有何不同等。企業還需要建立開源軟體采購和選擇流程。比較理想的情況下,該流程标明允許使用的網站、存儲庫、擷取開源軟體的方法,以及如何确定特定軟體包是否适用。此外,還需要規定誰可以下載下傳開源軟體、從哪裡下載下傳,以及在下載下傳、使用或分發之前是否需要許可。

  2. 設定審批流程

  您還應該建立一個審批流程,以确定軟體包是否滿足企業的需求和品質标準。 需要考慮的标準包括代碼品質、支援級别、項目成熟度、貢獻者聲譽和漏洞趨勢。

  如果流程審批要發揮作用,則需要快速處理請求。 建立一個預先準許的開源清單可以幫助加速處理請求。

  3. 建立審計流程以檢測開源軟體

  除了確定遵守内部政策外,審計還可以全面了解正在使用的開源軟體。 這将幫助識别和定位開源元件,對于維護開源許可證合規性至關重要。而且,當有漏洞披露時,企業也可以盡快響應。

  為了查明應用中易受攻擊的元件,您必須首先掌握應用中的所有開源元件。 這需要考慮代碼的所有版本和fork,檢測源代碼和二進制形式的元件,分析經常嵌入開源的商業軟體,并檢查包管理器中聲明以外的内容。 手動記錄開源清單通常不準确,将這些任務自動化很有必要。

  審計後,企業将能夠建立任務清單和相應的計劃,以幫助改善軟體并實作合規性。 此類任務可能包括提供源代碼,包括代碼或文檔中所需的通知,以及更新最終使用者許可協定。 如不符合合規性,您需要尋找替代方案,例如不同的庫。

繼續閱讀