新思科技《2021年開源安全和風(fēng)險分析》報告(OSSRA)表明商業(yè)軟件中易受攻擊、過期及廢棄的開源組件數(shù)量呈上升趨勢。其中,97%經(jīng)過審計的金融服務(wù)/金融科技行業(yè)代碼庫包含開源,而且超過60%的代碼庫存在漏洞??梢?,開源的應(yīng)用十分廣泛。保護供應(yīng)鏈安全,才能構(gòu)建可信軟件。
近日,非營利性組織Linux基金會和哈佛創(chuàng)新科學(xué)實驗室發(fā)布了“自由和開放源碼軟件普查II - 應(yīng)用庫”。這次普查列出了1,000多個最為廣泛使用的開源應(yīng)用庫。新思科技網(wǎng)絡(luò)安全研究中心(CyRC)將自身基于數(shù)千家公司代碼庫的掃描結(jié)果數(shù)據(jù)匿名化后,貢獻給了此次普查報告,有助于更全面地了解 FOSS(自由/開源軟件,free and open source software)的使用情況。
Linux基金會普查 II (Linux Foundation Census II)檢查了最受歡迎的開源應(yīng)用庫,并且羅列了影響這些應(yīng)用庫安全問題的因素。
報告作者指出:“完全理解 FOSS 的健壯性、經(jīng)濟價值和安全性是一件很難的事情,因為它是以去中心化和分布式的方式產(chǎn)生的。”由于軟件組件打包方式以及版本分類和識別方式多種多樣,因此該報告將它們歸納匯總成8 種Top 500排名。
新思科技軟件質(zhì)量與安全部門安全解決方案經(jīng)理Mike McGuire將軟件包和版本比作汽車的型號、生產(chǎn)年份和配置。他說:“如果我只說我開一輛豐田凱美瑞汽車,但你仍可能不會知道我開的是哪一款車。1999年版本,還是2022年版本?在訂購零部件、獲得服務(wù)、跟蹤召回等時候了解這些信息非常重要?!?/p>
Linux基金會普查 II的目的
報告作者表示:“這是為了維持 FOSS 長期安全和健康的活動提供信息?!痹搱蟾婵梢詭椭覀冾A(yù)估哪些FOSS軟件包被廣泛地使用在不同的應(yīng)用中。它不是評估衡量該軟件的風(fēng)險狀況。許多指標(biāo)可以用來風(fēng)險提示,但各家企業(yè)可能對因素的權(quán)重不同。
Mike McGuire對此表示贊同。廣泛使用并不代表更關(guān)鍵。他解釋道:“大量的應(yīng)用程序可能正在使用某一特定的 Java GUI 框架,所以這個框架非常流行。但它可能不是軟件的關(guān)鍵部分。每個企業(yè)應(yīng)用程序構(gòu)建的方式不同,其關(guān)鍵組成也大相徑庭?!?/p>
盡管如此,一旦確定了使用最廣泛的軟件,我們就更容易評估風(fēng)險狀況。
開源管理的挑戰(zhàn)
現(xiàn)在,改善軟件識別、分類和維護面臨著一些挑戰(zhàn)。隨著行業(yè)朝著廣泛標(biāo)準(zhǔn)化和采用軟件物料清單(SBOM)的方向發(fā)展,了解這些挑戰(zhàn)都非常重要,包括:
- 對軟件組件的標(biāo)準(zhǔn)化命名模式的需求,這樣應(yīng)用程序庫就可以被唯一地標(biāo)識。如果沒有標(biāo)準(zhǔn)化命名模式,企業(yè)將無法在大規(guī)模,特別是在全球范圍內(nèi),相互交流,以共享此類信息
- 與軟件包版本控制相關(guān)的復(fù)雜性。公司維護了一個包的內(nèi)部版本,但沒有將他們的更改反饋回官方庫。這是一個意想不到的問題。在一個例子中,研究人員多次觀察到一個包的 2.87 版本,但官方庫只升級到了 2.26 版本。如果 SBOM 無法區(qū)分主版本和變更版本,此類軟件的購買者將很難知道自己是否容易受到新發(fā)現(xiàn)的漏洞的影響
新思科技中國區(qū)軟件應(yīng)用安全技術(shù)總監(jiān)楊國梁表示:“開源軟件易獲取、開放、共享,為業(yè)界帶來豐富的紅利。但同時,對開源組件漏洞的利用,甚至偽裝成開源貢獻者預(yù)埋漏洞,這些都屢見不鮮。近期,Log4Shell和Spring4Shell漏洞在業(yè)界沸沸揚揚,這也體現(xiàn)了掌握已使用開源組件信息的必要性。在漏洞披露時,相關(guān)方可以采取更及時的行動。因此,軟件組成分析 (SCA) 解決方案的重要性日益凸顯。SCA可以為應(yīng)用生成SBOM,如果組件中出現(xiàn)新漏洞,會及時主動通知用戶?!?/p>
大多數(shù)企業(yè)級應(yīng)用,包括我們常用的購物網(wǎng)站、社交媒體等,服務(wù)海量用戶,需要持續(xù)地穩(wěn)定運行。為此,開發(fā)人員經(jīng)常使用日志,以監(jiān)控應(yīng)用的狀態(tài)和安全。Log4j2是提供日志功能的開源組件;Spring Core Framework用于Java應(yīng)用,在基于J2EE的應(yīng)用中被廣泛地使用。由此可見,Log4Shell和Spring4Shell漏洞的影響范圍之大。
影響FOSS長期安全的問題
這些問題包括:
- 大多數(shù)最廣泛使用的FOSS都是由少數(shù)貢獻者開發(fā)的。一個數(shù)據(jù)集的結(jié)果顯示,排名前 50 的包中,超過 80%的代碼行由 136 名開發(fā)人員負責(zé)。新思科技《2021年開源安全和風(fēng)險分析》報告(OSSRA)曾指出開源項目的維護人員并沒有隨開源項目的普及而保持同步增長,從而經(jīng)常導(dǎo)致開發(fā)人員精疲力竭,許多開源項目只能被放棄。如果項目被放棄,漏洞就不會得到及時修復(fù)。
- 個人開發(fā)者帳戶安全的重要性正在增加。個人賬戶通常不像企業(yè)賬戶那樣受到很好的保護。在這些個人開發(fā)人員帳戶的控制下的代碼進行更改要容易得多,而且不被發(fā)現(xiàn)。此外,如果個別開發(fā)人員長時間中斷,或出現(xiàn)意外,從而導(dǎo)致無法更新代碼,則可能會出現(xiàn)問題。這不是唯一的風(fēng)險。例如,如果獨立的開發(fā)人員移動或刪除了他們的項目,這可能會破壞數(shù)以百萬計的依賴它的程序包
- 開源領(lǐng)域歷史遺留軟件的持久性。我們都聽說過公司宣布停止對舊版本操作系統(tǒng)或應(yīng)用程序的支持。但這并不意味著每位用戶都停止使用這些舊版本。許多企業(yè)發(fā)現(xiàn)很難決定切換到不同的軟件包,因為在無法保證額外收益的情況下切換到新軟件會產(chǎn)生財務(wù)和時間等成本。2021年 OSSRA報告還發(fā)現(xiàn)85% 的代碼庫含有至少四年未曾更新的開源依賴,即使有更新版本可用,有時還有很多更新的版本。這會帶來很多隱患。新版本會修復(fù)舊版本種的錯誤。黑客往往會尋找使用舊版本的應(yīng)用進行攻擊。
Mike McGuire表示:“Linux基金會普查 II展示了最常用的FOSS以及一些深刻的洞察。雖然它不是指導(dǎo),但是指出組織和個人都需要積極參與FOSS的開發(fā),而不是留給一小部分開發(fā)人員像現(xiàn)在這樣領(lǐng)導(dǎo)開源項目。該報告還顯示了SCA工具在檢測開源歷史遺留軟件方面的重要性,以及 SBOM 領(lǐng)域?qū)?biāo)準(zhǔn)化的持續(xù)需求。”
新思科技開源專家王永雷補充道:“BOM的概念來自制造業(yè),傳統(tǒng)BOM是詳細列出產(chǎn)品組成的物資明細。當(dāng)發(fā)現(xiàn)缺陷零件時,制造商可以準(zhǔn)確地知道哪個產(chǎn)品受到了影響,以便安排修理或更換。現(xiàn)在,隨著開源組件的大規(guī)模使用,SBOM需求已經(jīng)開始呈現(xiàn)出增長態(tài)勢。新思科技的開源管理工具Black Duck可以創(chuàng)建和管理企業(yè)級的上下游軟件供應(yīng)鏈完整的SBOM,幫助管理在應(yīng)用和容器中使用開源和第三方代碼所帶來的安全、質(zhì)量和許可證合規(guī)性風(fēng)險?!?/p>