奇安信發佈《2021中國軟件供應鏈安全分析報告》
釋出日期:2021-06-02 作者:
“檢測發現,國內企業軟件項目100%使用了開源軟件;超8成軟件項目存在已知高危開源軟件漏洞;平均每個軟件項目存在66個已知開源軟件漏洞。”6月2日,奇安信集團在京正式發佈《2021中國軟件供應鏈安全分析報告》(下文簡稱報告),首次對國內軟件供應鏈各個環節的安全風險,進行了深入細緻的研究和解讀。
報告認為,隨着軟件產業的快速發展,軟件供應鏈也越發複雜多元,複雜的軟件供應鏈會引入一系列的安全問題,導致信息系統的整體安全防護難度越來越大。
圖:奇安信集團代碼安全事業部總經理、代碼安全實驗室主任黃永剛
“吃了不好的食品會生病,用了不好的軟件會被攻擊”,奇安信集團代碼安全事業部總經理、代碼安全實驗室主任黃永剛舉了一個形象的例子。“拿牛奶來説,從奶農、奶站到車間,各個環節都可能導致原材料被污染,造成食品安全問題。同樣,軟件供應鏈可劃分為開發、交付、運行三個大的環節,每個環節都可能會引入供應鏈安全風險從而遭受攻擊,上游環節的安全問題會傳遞到下游環節並被放大。”
每1000行代碼就有超過10個安全缺陷
源代碼是軟件的原始形態,位於軟件供應鏈的源頭。源代碼安全是軟件供應鏈安全的基礎,其地位非常關鍵。
報告顯示,2020年全年,奇安信代碼安全實驗室對2001個國內企業自主開發的軟件項目源代碼進行了安全缺陷檢測,檢測的代碼總量為335011173行,共發現安全缺陷3387642個,其中高危缺陷361812個,整體缺陷密度為10.11個/千行,高危缺陷密度為1.08個/千行。
開源軟件的安全缺陷則更加密集。2020年全年,“奇安信開源項目檢測計劃”對1364個開源軟件項目的源代碼進行了安全檢測,代碼總量為124296804行,共發現安全缺陷1859129個,其中高危缺陷117738個。2020年檢測的1364個開源軟件項目整體缺陷密度為14.96個/千行,高危缺陷密度為0.95個/千行。
超8成項目存在高危開源軟件漏洞
與企業自主編寫的源代碼相同,開源軟件同樣位於軟件供應鏈的源頭。國際知名諮詢機構Gartner表示,現代軟件大多數是被“組裝”出來的,不是被“開發”出來的。在奇安信代碼安全實驗室分析的2557個國內企業軟件項目中,無一例外,均使用了開源軟件。
在2557個國內企業軟件項目中,共檢出168604個已知開源軟件漏洞(涉及到4166個唯一CVE漏洞編號),平均每個軟件項目存在66個已知開源軟件漏洞,最多的軟件項目存在1200個已知開源軟件漏洞。
其中,存在已知開源軟件漏洞的項目有2280個,佔比高達89.2%;存在已知高危開源軟件漏洞的項目有2062個,佔比為80.6%;存在已知超危開源軟件漏洞的項目有1802個,佔比為70.5%。影響範圍最大的開源軟件漏洞為Spring Framework安全漏洞(漏洞編號為CVE-2020-5421),影響了44.3%的軟件項目。
值得警惕的是,在所有存在已知開源軟件漏洞的項目中,部分軟件項目中竟然還存在多年前已公開並修復的古老漏洞,最古老的漏洞是2005年11月公開的CVE-2005-3510,仍然存在於31個項目中。
與此同時,開源軟件的漏洞數量仍呈高速上漲的趨勢。據奇安信代碼安全實驗室監測與統計,截至2020年底,CVE/NVD、CNNVD、CNVD等公開漏洞庫中共收錄開源軟件相關漏洞41342個,其中5366個為2020年度新增漏洞。
三層建議助力建設供應鏈安全良性生態
報告認為,軟件供應鏈已經成為網絡空間攻防對抗的焦點,直接影響關鍵基礎設施和重要信息系統安全。然而,目前我國在軟件供應鏈安全方面的基礎比較薄弱,亟需從國家、行業、機構、企業各個層面建立軟件供應鏈安全風險的發現能力、分析能力、處置能力、防護能力,整體提升軟件供應鏈安全管理的水平。
對此,奇安信代碼安全實驗室建議,在國家和行業監管層面,應制定軟件供應鏈安全相關的政策要求、標準規範和實施指南,建立起國家級/行業級軟件供應鏈安全風險分析平台,並且將軟件供應鏈安全的相關工作納入產品測評、系統測評等工作中。
在最終用户層面,首先應明確本單位內部軟件供應鏈安全管理的目標和工作流程;在採購商業軟件時,應充分評估供應商的安全能力,要求供應商提供其軟件產品中所使用的第三方組件/開源組件的清單,一旦這些第三方組件/開源組件出現安全漏洞,要求供應商提供必要的技術支持;在軟件開發中,須嚴格遵循軟件安全開發生命週期管理流程。
在軟件廠商層面,需要提高安全責任意識,建立清晰的軟件供應鏈安全策略,嚴格管控上下游,持續削減自主開發的代碼和開源軟件所帶來的安全風險,同時建立完善的產品漏洞響應機制,必須要時為客户提供相應的技術支持。
附:《2021中國軟件供應鏈安全分析報告》官網地址
https://www.qianxin.com/threat/reportdetail?report_id=132