國家保密局網(wǎng)站>>保密科技

開源軟件風(fēng)險分析及治理措施研究

2020年11月27日    來源:國家保密科技測評中心【字體: 打印

一、引言

2020年4月,國家發(fā)改委明確提出“以新發(fā)展理念為引領(lǐng),以技術(shù)創(chuàng)新為驅(qū)動,以信息網(wǎng)絡(luò)為基礎(chǔ),面向高質(zhì)量發(fā)展需要,提供數(shù)字轉(zhuǎn)型、智能升級、融合創(chuàng)新等服務(wù)的基礎(chǔ)設(shè)施體系”,界定了包括信息基礎(chǔ)設(shè)施、融合基礎(chǔ)設(shè)施、創(chuàng)新基礎(chǔ)設(shè)施等在內(nèi)的“新基建”概念范疇!靶禄ā笔切乱淮畔⑼ㄐ偶夹g(shù)與傳統(tǒng)基礎(chǔ)設(shè)施的深度融合,呈現(xiàn)高度網(wǎng)絡(luò)化、數(shù)字化、智能化等顯著特征。數(shù)字經(jīng)濟時代,“新基建”將加速虛擬空間和實體空間的全面融合,在推動數(shù)字經(jīng)濟高速發(fā)展的同時,面臨的安全風(fēng)險也從傳統(tǒng)的網(wǎng)絡(luò)安全擴展到社會現(xiàn)實生活。

“新基建”雖然涉及眾多領(lǐng)域,但究其主要功能組件,包括底層的硬件設(shè)備、調(diào)度處理的軟件程序和上層生產(chǎn)的信息數(shù)據(jù)3部分。無論對硬件設(shè)備的控制,還是生產(chǎn)操作信息數(shù)據(jù),都無法離開基礎(chǔ)的軟件程序支撐,毫無疑問,軟件程序?qū)⒊蔀椤靶禄ā钡暮诵囊,軟件代碼將作為新基建”的基礎(chǔ)設(shè)施,其安全性直接影響著“新基建”的基礎(chǔ)安全。

二、開源軟件現(xiàn)狀分析

隨著全球信息化發(fā)展態(tài)勢的不斷融合,國家或企業(yè)信息系統(tǒng)的產(chǎn)品來源更加多元化,軟件程序的供應(yīng)鏈也隨之變得更加復(fù)雜。

通常來說,軟件程序主要來源于自主研發(fā)、購買商業(yè)化產(chǎn)品、使用開源軟件或采用軟件外包開發(fā)等途徑。根據(jù)VeraCode公司統(tǒng)計,大約30%?70%自主研發(fā)軟件的代碼都使用過第三方代碼,并多以開源組件、商業(yè)或外包共享庫的形式存在。信息技術(shù)分析公司高德納(Gartner)更是堅定認為現(xiàn)代軟件大多數(shù)是被“組裝”出來的,不是被“開發(fā)”出來的,F(xiàn)在的軟件開發(fā)過程類似于早期的工業(yè)生產(chǎn)活動,是以開源軟件為基礎(chǔ)的原材料,在此基礎(chǔ)上,再結(jié)合實際的業(yè)務(wù)需求和應(yīng)用場景補充添加相對獨立的業(yè)務(wù)代碼,最后“拼裝”出一套軟件系統(tǒng)。這種敏捷開發(fā)的方式雖然在一定程度上提高了軟件系統(tǒng)開發(fā)的效率,卻并未充分考慮其使用的基礎(chǔ)開源組件是否安全可靠,為軟件系統(tǒng)的安全性和可控性帶來了巨大挑戰(zhàn)。

近年來,以廣泛應(yīng)用的Struts2、OpenSSL等為代表的基礎(chǔ)開源組件頻現(xiàn)高危漏洞,不同國家、不同企業(yè)均因此遭受不同程度的損失,也促使國家和企業(yè)提高對軟件供應(yīng)鏈、開源軟件、關(guān)鍵信息基礎(chǔ)設(shè)施中軟件系統(tǒng)安全性的關(guān)注程度。

(一)開源軟件的安全形勢極其嚴峻

實際上,開源軟件的安全形勢已變得越來越嚴峻。根據(jù)RiskSense研究報告稱,2019年已公開的開源軟件CVE漏洞總數(shù)為968個,比之前數(shù)量最高年份的兩倍還多,2020年前3個月新增的CVE漏洞數(shù)量也處于歷史高位。另外,就美國國家漏洞庫(NVD)對于開源軟件的漏洞管理情況來看,其收錄開源軟件漏洞的滯后性比較嚴重,從漏洞首次公開披露到漏洞被收錄到NVD平均耗時54天,最長耗時1817天。攻擊者完全有可能利用這段時間窗口開發(fā)和部署漏洞利用程序。其中,武器化程度最高的開源軟件包括Apache Tomcat、Magento、Kubernetes、Elasticsearch和JBoss。而正在使用存在漏洞開源軟件的企業(yè)由于無法及時收到NVD的安全警報,將使企業(yè)完全暴露在安全風(fēng)險之中。

(二)開源軟件所產(chǎn)生的蝴蝶效應(yīng)不容樂觀

從奇安信代碼安全實驗室公布的數(shù)據(jù)來看,開源軟件的源代碼安全缺陷密度是14.22/KLOC,高危安全缺陷密度為0.72/ KLOC,即每1000行開源軟件代碼中就有14個安全缺陷,每1400行開源軟件代碼中就有1個高危安全缺陷。由此可見,開源軟件的安全現(xiàn)狀極不樂觀。

另外,由于開源軟件之間的關(guān)聯(lián)依賴關(guān)系非常復(fù)雜,其帶來的安全問題所產(chǎn)生的蝴蝶效應(yīng)將變得十分巨大。一款開源軟件如果出現(xiàn)0Day漏洞,將會導(dǎo)致所有與之存在關(guān)聯(lián)依賴關(guān)系的其他軟件系統(tǒng)出現(xiàn)同樣的0Day漏洞,漏洞的攻擊面將會由點及面呈現(xiàn)出爆炸式的放大效果。

(三)開源軟件的供應(yīng)鏈有可能潛藏高級網(wǎng)絡(luò)威脅

正是由于開源軟件的開源特性,造就了其天然基因中就缺少安全監(jiān)管機制,上傳開源軟件的可能是個人,也可能是一個組織,還可能是一些別有用心的機構(gòu)。因此,開源軟件很可能不是“免費的午餐”,有可能被植入高級惡意程序代碼,通過數(shù)據(jù)加密的方式,將惡意流量(如竊取到的用戶敏感信息或遠程控制命令等)混淆在正常的加密數(shù)據(jù)流量中來逃避安全檢測。這種借助于特洛伊木馬以軟件供應(yīng)鏈為突破口的攻擊方式,直接將攻擊程序?qū)懭腴_源軟件中,大大降低了攻擊者從外向內(nèi)的攻擊成本,也必將成為企業(yè)所面臨的下一個網(wǎng)絡(luò)安全風(fēng)口。

(四)開源軟件尚處于管理盲區(qū)

開源軟件目前正處于企業(yè)信息化的管理盲區(qū),因為企業(yè)所用到的各類軟件無論是自行開發(fā)還是外包服務(wù),都更偏向于對功能需求的驗證,忽視了源代碼和使用的基礎(chǔ)開源組件的安全性以及各個組件之間的依賴關(guān)系。

軟件供應(yīng)商的開發(fā)團隊對開源軟件的使用非常隨意,未建立完整的開源軟件使用管理機制,開發(fā)人員對開源軟件基本處于“只用不說”的狀態(tài),項目負責(zé)人無法掌握開發(fā)團隊所用到的開源軟件具體列表,企業(yè)甲方更無法了解正在使用的軟件系統(tǒng)是否包含了開源軟件。一旦軟件產(chǎn)品交付,開源軟件的漏洞也將為整個信息系統(tǒng)的安全運營帶來極大的安全挑戰(zhàn)。

三、開源軟件治理措施

當前,國家和企業(yè)已逐漸進入數(shù)字化時代,無論是對硬件的調(diào)度控制還是對上層信息數(shù)據(jù)的存儲、加工和利用,開源軟件已成為構(gòu)建虛擬空間和物理實體的重要黏合劑,應(yīng)作為“新基建”的核心基礎(chǔ)設(shè)施給予充分的重視,加緊開展開源軟件的安全治理措施研究。

(一)建立開源軟件的審查管理機制

無規(guī)矩不成方圓,企業(yè)和軟件開發(fā)商應(yīng)建立對開源軟件的審查管理機制,嚴格執(zhí)行對開源軟件全生命周期的安全使用和風(fēng)險控制。

(1)建立針對開源軟件的頂層審查管理機制。設(shè)立相應(yīng)的組織機構(gòu),明確管理職責(zé),結(jié)合企業(yè)的實際特點,制定審查管理制度和流程。

(2)建立開源軟件安全準入機制,制定評估要點,在其生命周期內(nèi)持續(xù)評估其完整性、安全性和法律風(fēng)險,實時掌握開源軟件資產(chǎn)和與其關(guān)聯(lián)的軟件系統(tǒng)的安全風(fēng)險狀態(tài)。

(3)借助于開源軟件的自動化工具持續(xù)檢測和發(fā)現(xiàn)開源軟件資產(chǎn),持續(xù)跟蹤開源軟件漏洞情報。

(4)建立開源軟件的漏洞緩解工作機制,研究開源軟件的漏洞緩解措施,開展應(yīng)急響應(yīng)處置,及時規(guī)避網(wǎng)絡(luò)安全風(fēng)險。

(5)建立開源軟件的運維管理平臺,按照審查管理制度流程,執(zhí)行開源軟件全生命周期的運維管理,跟蹤并記錄開源軟件動態(tài),提升開源軟件治理效率。

(二)推進源代碼安全保障實踐方法落地

企業(yè)使用開源軟件面臨的首要問題仍然是代碼的安全性問題。在軟件源代碼安全保障實踐方面具有代表性的是微軟提出的安全開發(fā)生命周期(Security Development Lifecycle,SDL )和高德納基于敏捷開發(fā)推出的DevSecOps的方法。其中,SDL將安全要素內(nèi)嵌入培訓(xùn)、需求分析、系統(tǒng)設(shè)計、編碼實現(xiàn)、測試驗證、發(fā)布和響應(yīng)等軟件開發(fā)和運維的7個階段。DevSecOps通過設(shè)計一系列可集成的控制措施,增大安全監(jiān)測、跟蹤和分析力度,將安全融入敏捷過程中,并將安全能力賦予各個團隊,同時保持“敏捷”和“協(xié)作”的初衷。

無論SDL還是DevSecOps,都可以看到,安全的位置實際上都進行了左移,而且貫穿于所有的過程中。

(1)安全需求分析:應(yīng)結(jié)合業(yè)務(wù)實際需求,依據(jù)行業(yè)標準規(guī)范,如等級保護、分級保護,識別岀軟件系統(tǒng)的安全需求,作為后續(xù)安全設(shè)計的輸入。

(2)安全設(shè)計:依據(jù)安全需求分析文檔,以減少攻擊面為原則,圍繞用戶輸入驗證、異常處理、身份鑒別、密碼管理、會話安全、訪問控制、安全審計、數(shù)據(jù)脫敏、防Web攻擊等方面對軟件系統(tǒng)進行安全設(shè)計。

(3)安全編碼:使用指定的安全開發(fā)工具,嚴格依據(jù)安全設(shè)計文檔對軟件系統(tǒng)進行編碼實現(xiàn)。

(4)安全測試:借助于源代碼審計、滲透測試和壓力測試等綜合測試方法,充分驗證軟件系統(tǒng)的安全性、可用性和完整性。

(5)安全發(fā)布:結(jié)合實際網(wǎng)絡(luò)拓撲,合理部署,減少來自網(wǎng)絡(luò)的攻擊面。

(6)安全響應(yīng):制定網(wǎng)絡(luò)安全事件響應(yīng)計劃和處置流程,有效響應(yīng)網(wǎng)絡(luò)安全事件。

(三)借助專業(yè)力量持續(xù)評估開源軟件安全風(fēng)險

企業(yè)應(yīng)引入或借助專業(yè)的技術(shù)力量持續(xù)加強對在用開源軟件的安全風(fēng)險評估。通過常態(tài)化滲透測試、代碼安全性分析或者建設(shè)網(wǎng)絡(luò)靶場,持續(xù)、動態(tài)地驗證、評估開源軟件的可靠性、可用性和安全性,提升開源軟件的安全應(yīng)用能力。

(四)合作建立開源軟件的漏洞情報庫

現(xiàn)有的CVE/CPE體系以及NVD等漏洞庫,已經(jīng)無法滿足開源軟件安全治理的需求,需要創(chuàng)新開源軟件的漏洞情報研究、共享、共治機制,合作建立開源軟件漏洞情報庫。

四、結(jié)語

在企業(yè)數(shù)字化轉(zhuǎn)型過程中,開源軟件可以降低成本,提高效率,讓企業(yè)更專注于自己數(shù)字化業(yè)務(wù)需求實現(xiàn),已成為企業(yè)構(gòu)筑數(shù)字空間的基礎(chǔ)設(shè)施。開源軟件已經(jīng)站在企業(yè)數(shù)字化轉(zhuǎn)型舞臺中央,其安全性直接影響著數(shù)字空間的安全,因此,開源軟件的安全性應(yīng)得到充分關(guān)注和重視,亟待開展對開源軟件的全生命周期治理,為企業(yè)的數(shù)字化安全發(fā)展保駕護航。

 

(原載于《保密科學(xué)技術(shù)》雜志2020年7月刊)