一、引言
2020年4月,國家發改委明確提出“以新發展理念為引領,以技術創新為驅動,以信息網絡為基礎,面向高質量發展需要,提供數字轉型、智能升級、融合創新等服務的基礎設施體系”,界定了包括信息基礎設施、融合基礎設施、創新基礎設施等在內的“新基建”概念范疇!靶禄ā笔切乱淮畔⑼ㄐ偶夹g與傳統基礎設施的深度融合,呈現高度網絡化、數字化、智能化等顯著特征。數字經濟時代,“新基建”將加速虛擬空間和實體空間的全面融合,在推動數字經濟高速發展的同時,面臨的安全風險也從傳統的網絡安全擴展到社會現實生活。
“新基建”雖然涉及眾多領域,但究其主要功能組件,包括底層的硬件設備、調度處理的軟件程序和上層生產的信息數據3部分。無論對硬件設備的控制,還是生產操作信息數據,都無法離開基礎的軟件程序支撐,毫無疑問,軟件程序將成為“新基建”的核心要素,軟件代碼將作為新基建”的基礎設施,其安全性直接影響著“新基建”的基礎安全。
二、開源軟件現狀分析
隨著全球信息化發展態勢的不斷融合,國家或企業信息系統的產品來源更加多元化,軟件程序的供應鏈也隨之變得更加復雜。
通常來說,軟件程序主要來源于自主研發、購買商業化產品、使用開源軟件或采用軟件外包開發等途徑。根據VeraCode公司統計,大約30%?70%自主研發軟件的代碼都使用過第三方代碼,并多以開源組件、商業或外包共享庫的形式存在。信息技術分析公司高德納(Gartner)更是堅定認為現代軟件大多數是被“組裝”出來的,不是被“開發”出來的,F在的軟件開發過程類似于早期的工業生產活動,是以開源軟件為基礎的原材料,在此基礎上,再結合實際的業務需求和應用場景補充添加相對獨立的業務代碼,最后“拼裝”出一套軟件系統。這種敏捷開發的方式雖然在一定程度上提高了軟件系統開發的效率,卻并未充分考慮其使用的基礎開源組件是否安全可靠,為軟件系統的安全性和可控性帶來了巨大挑戰。
近年來,以廣泛應用的Struts2、OpenSSL等為代表的基礎開源組件頻現高危漏洞,不同國家、不同企業均因此遭受不同程度的損失,也促使國家和企業提高對軟件供應鏈、開源軟件、關鍵信息基礎設施中軟件系統安全性的關注程度。
(一)開源軟件的安全形勢極其嚴峻
實際上,開源軟件的安全形勢已變得越來越嚴峻。根據RiskSense研究報告稱,2019年已公開的開源軟件CVE漏洞總數為968個,比之前數量最高年份的兩倍還多,2020年前3個月新增的CVE漏洞數量也處于歷史高位。另外,就美國國家漏洞庫(NVD)對于開源軟件的漏洞管理情況來看,其收錄開源軟件漏洞的滯后性比較嚴重,從漏洞首次公開披露到漏洞被收錄到NVD平均耗時54天,最長耗時1817天。攻擊者完全有可能利用這段時間窗口開發和部署漏洞利用程序。其中,武器化程度最高的開源軟件包括Apache Tomcat、Magento、Kubernetes、Elasticsearch和JBoss。而正在使用存在漏洞開源軟件的企業由于無法及時收到NVD的安全警報,將使企業完全暴露在安全風險之中。
(二)開源軟件所產生的蝴蝶效應不容樂觀
從奇安信代碼安全實驗室公布的數據來看,開源軟件的源代碼安全缺陷密度是14.22/KLOC,高危安全缺陷密度為0.72/ KLOC,即每1000行開源軟件代碼中就有14個安全缺陷,每1400行開源軟件代碼中就有1個高危安全缺陷。由此可見,開源軟件的安全現狀極不樂觀。
另外,由于開源軟件之間的關聯依賴關系非常復雜,其帶來的安全問題所產生的蝴蝶效應將變得十分巨大。一款開源軟件如果出現0Day漏洞,將會導致所有與之存在關聯依賴關系的其他軟件系統出現同樣的0Day漏洞,漏洞的攻擊面將會由點及面呈現出爆炸式的放大效果。
(三)開源軟件的供應鏈有可能潛藏高級網絡威脅
正是由于開源軟件的開源特性,造就了其天然基因中就缺少安全監管機制,上傳開源軟件的可能是個人,也可能是一個組織,還可能是一些別有用心的機構。因此,開源軟件很可能不是“免費的午餐”,有可能被植入高級惡意程序代碼,通過數據加密的方式,將惡意流量(如竊取到的用戶敏感信息或遠程控制命令等)混淆在正常的加密數據流量中來逃避安全檢測。這種借助于特洛伊木馬以軟件供應鏈為突破口的攻擊方式,直接將攻擊程序寫入開源軟件中,大大降低了攻擊者從外向內的攻擊成本,也必將成為企業所面臨的下一個網絡安全風口。
(四)開源軟件尚處于管理盲區
開源軟件目前正處于企業信息化的管理盲區,因為企業所用到的各類軟件無論是自行開發還是外包服務,都更偏向于對功能需求的驗證,忽視了源代碼和使用的基礎開源組件的安全性以及各個組件之間的依賴關系。
軟件供應商的開發團隊對開源軟件的使用非常隨意,未建立完整的開源軟件使用管理機制,開發人員對開源軟件基本處于“只用不說”的狀態,項目負責人無法掌握開發團隊所用到的開源軟件具體列表,企業甲方更無法了解正在使用的軟件系統是否包含了開源軟件。一旦軟件產品交付,開源軟件的漏洞也將為整個信息系統的安全運營帶來極大的安全挑戰。
三、開源軟件治理措施
當前,國家和企業已逐漸進入數字化時代,無論是對硬件的調度控制還是對上層信息數據的存儲、加工和利用,開源軟件已成為構建虛擬空間和物理實體的重要黏合劑,應作為“新基建”的核心基礎設施給予充分的重視,加緊開展開源軟件的安全治理措施研究。
(一)建立開源軟件的審查管理機制
無規矩不成方圓,企業和軟件開發商應建立對開源軟件的審查管理機制,嚴格執行對開源軟件全生命周期的安全使用和風險控制。
(1)建立針對開源軟件的頂層審查管理機制。設立相應的組織機構,明確管理職責,結合企業的實際特點,制定審查管理制度和流程。
(2)建立開源軟件安全準入機制,制定評估要點,在其生命周期內持續評估其完整性、安全性和法律風險,實時掌握開源軟件資產和與其關聯的軟件系統的安全風險狀態。
(3)借助于開源軟件的自動化工具持續檢測和發現開源軟件資產,持續跟蹤開源軟件漏洞情報。
(4)建立開源軟件的漏洞緩解工作機制,研究開源軟件的漏洞緩解措施,開展應急響應處置,及時規避網絡安全風險。
(5)建立開源軟件的運維管理平臺,按照審查管理制度流程,執行開源軟件全生命周期的運維管理,跟蹤并記錄開源軟件動態,提升開源軟件治理效率。
(二)推進源代碼安全保障實踐方法落地
企業使用開源軟件面臨的首要問題仍然是代碼的安全性問題。在軟件源代碼安全保障實踐方面具有代表性的是微軟提出的安全開發生命周期(Security Development Lifecycle,SDL )和高德納基于敏捷開發推出的DevSecOps的方法。其中,SDL將安全要素內嵌入培訓、需求分析、系統設計、編碼實現、測試驗證、發布和響應等軟件開發和運維的7個階段。DevSecOps通過設計一系列可集成的控制措施,增大安全監測、跟蹤和分析力度,將安全融入敏捷過程中,并將安全能力賦予各個團隊,同時保持“敏捷”和“協作”的初衷。
無論SDL還是DevSecOps,都可以看到,安全的位置實際上都進行了左移,而且貫穿于所有的過程中。
(1)安全需求分析:應結合業務實際需求,依據行業標準規范,如等級保護、分級保護,識別岀軟件系統的安全需求,作為后續安全設計的輸入。
(2)安全設計:依據安全需求分析文檔,以減少攻擊面為原則,圍繞用戶輸入驗證、異常處理、身份鑒別、密碼管理、會話安全、訪問控制、安全審計、數據脫敏、防Web攻擊等方面對軟件系統進行安全設計。
(3)安全編碼:使用指定的安全開發工具,嚴格依據安全設計文檔對軟件系統進行編碼實現。
(4)安全測試:借助于源代碼審計、滲透測試和壓力測試等綜合測試方法,充分驗證軟件系統的安全性、可用性和完整性。
(5)安全發布:結合實際網絡拓撲,合理部署,減少來自網絡的攻擊面。
(6)安全響應:制定網絡安全事件響應計劃和處置流程,有效響應網絡安全事件。
(三)借助專業力量持續評估開源軟件安全風險
企業應引入或借助專業的技術力量持續加強對在用開源軟件的安全風險評估。通過常態化滲透測試、代碼安全性分析或者建設網絡靶場,持續、動態地驗證、評估開源軟件的可靠性、可用性和安全性,提升開源軟件的安全應用能力。
(四)合作建立開源軟件的漏洞情報庫
現有的CVE/CPE體系以及NVD等漏洞庫,已經無法滿足開源軟件安全治理的需求,需要創新開源軟件的漏洞情報研究、共享、共治機制,合作建立開源軟件漏洞情報庫。
四、結語
在企業數字化轉型過程中,開源軟件可以降低成本,提高效率,讓企業更專注于自己數字化業務需求實現,已成為企業構筑數字空間的基礎設施。開源軟件已經站在企業數字化轉型舞臺中央,其安全性直接影響著數字空間的安全,因此,開源軟件的安全性應得到充分關注和重視,亟待開展對開源軟件的全生命周期治理,為企業的數字化安全發展保駕護航。
(原載于《保密科學技術》雜志2020年7月刊)