齊 越 劉金芳 李 寧
(中國網絡安全審查技術與認證中心 北京 100020)(qiy@isccc.gov.cn)
近年來,隨著我國互聯網的蓬勃發展,電子產品和網絡設備逐漸深入人民群眾的日常生活,成千上萬的網絡產品和服務構建起了我們日常使用的通信網絡和信息系統.為保障國家網絡安全,2017年6月1日《中華人民共和國網絡安全法》正式實施,第31條提出,通信、能源、交通、水利、金融、公共服務等重要行業和領域的信息系統一旦遭到破壞、喪失功能或者發生數據泄露,將會嚴重危害國家安全、國計民生和社會公共利益.在此前提下,重點行業信息系統使用的產品和服務面臨的網絡安全問題,應引起我們足夠的重視.為了防止信息系統遭受到不法侵害,防范可能存在的網絡安全風險,以網絡產品和服務供應鏈安全作為切入點,著眼于加強供應鏈各環節的安全保障能力,提升網絡產品和服務供應鏈安全管理水平,成為目前最有效、最務實的安全策略.
網絡產品和服務供應鏈包括了產品的核心部件、軟件代碼及生產制造運維過程中涉及的相關環節,其中,軟件是供應鏈極其重要的組成部分.近年來,開源軟件以其開放、共享、便捷等特點迅猛發展,逐漸成為信息系統軟件開發的基礎.作為軟件供應鏈的重要一環,開源甚至形成了一種行業生態,開源軟件在網絡產品供應鏈安全中的重要位置也日益顯現.
隨著開源軟件在軟件研發過程中的應用范圍不斷擴大,開源正進入生活的方方面面,包括我們日常使用的手機、平板等電子產品,以及大型計算機、服務器等組成的系統中都有開源軟件的身影.開源軟件的重要性主要體現在:一方面市場上包含開源組件的軟件逐漸增多,據美國弗雷斯特研究公司(Forrester Research)統計,全球80%以上的應用軟件使用了開源組件[1],在能源、通信、金融、互聯網等行業內這一比例甚至高達95%;另一方面軟件中開源代碼的比例不斷升高,2019年新思科技公司(Synopsys)通過對全球1 200個商業代碼庫的分析發現,在包含開源成分的軟件中,開源代碼占代碼總量的平均比例由2018年的57%提高到了60%[2].從不同行業領域來看,移動互聯網行業這一比例為74%,網絡安全行業為70%,能源、金融、物聯網等行業開源代碼比例均在平均值60%以上.這些行業均是關系國計民生、公共利益的重點行業.
目前,國際上應用的開源代碼大都掌握在知名開源組織手中.這些開源組織主要包括:
1) Apache基金會.
Apache基金會成立于1999年,注冊地位于美國特拉華州.基金會主要由個人捐贈和企業贊助商資助形成,主要任務是為其管理的開源軟件提供持續的技術支持.Apache基金會目前收錄了包括HTTP Server,Hadoop,Tomcat等知名項目在內的350多個開源項目,這些開源項目推動了Web服務和大數據技術的快速發展.作為世界最大的開源組織,Apache基金會管理的代碼達到了2億多行.
2) Linux基金會.
Linux基金會成立于2000年,致力于促進Linux操作系統及其生態的發展.基金會為Linux提供了一個有利于協作和推廣的開放代碼平臺,為解決軟件開發商和用戶面臨的Linux生態系統問題提供了基礎,促進并保護了Linux的發展.Linux基金會內部形成了用于應用程序開發的標準服務,推動了Linux在全球的標準化.目前,Linux項目的開源代碼量已經超過2 500萬行.
3) OpenStack基金會.
OpenStack基金會2012年在美國成立,其管理的最著名的開源項目為OpenStack云計算項目.OpenStack項目由美國國家航空航天局和云服務商Rackspace共同發起,旨在推動云計算服務在全球的發展,為私有云和公有云提供可擴展的彈性服務.OpenStack覆蓋了云計算基礎設施中的網絡、虛擬化、操作系統、服務器等各個方面,目前已成為市場占有率最高的云計算解決方案.
開源組織管理的大量開源代碼已廣泛應用于日常使用的軟件中,支撐了網絡和信息系統的正常運行.信息系統中主流的操作系統、數據庫、應用軟件等產品均不同程度地嵌入了開源代碼.通過對相應軟件產品的安裝包進行反編譯及二進制代碼檢測,往往可以發現軟件代碼中的開源成分.我們通過對某款應用范圍較廣的辦公軟件進行二進制代碼檢測,溯源分析后發現其開源代碼比例在22%以上,在開源代碼庫中匹配到了Zlib,TinyXPath,cctz,libytnef,pugixml等29個開源組件,這些開源組件絕大部分出自美國的開源項目,涉及GPL,Apache License,BSD等開源許可證,相關代碼在GitHub,SourceForge等代碼托管平臺上進行維護.
目前,開源軟件項目主要有2種管理模式:一種為基金會主導模式,如Apache軟件基金會Hadoop項目、Linux基金會的Linux項目等;另外一種為企業主導模式,如谷歌的Android項目、微軟的Visual Studio Code項目等.基金會或企業通過將軟件源代碼在相應社區及代碼托管平臺公開,供用戶使用、修改和交流,以社會化協作的方式提高軟件生產效率,開發者只要遵循社區的規則都可以對代碼進行訪問和修改.開放性促進了開源的快速發展,但也帶來了代碼管理的一些問題,如代碼維護管理依賴開源社區、代碼安全性缺乏審核、很少有特定的人員專門負責修補安全漏洞等.
值得注意的是,“開源”并不代表“免費”,更不是“隨便用”.開源項目在應用過程中通常需要綁定相關的許可證,開源許可證規定了開源代碼的知識產權所有人對于代碼使用者的限制條件,這些條件包括是否允許用于商業用途、是否允許用于某些特定領域、是否允許專利授權等,用戶選擇使用其開源代碼相當于默認接受相關的限制條件.目前,國際上并未形成統一的開源許可證體系,已知存在的許可證就包括Apache License,GPL,MIT,BSD等幾十種,其規定的限制條件各不相同.在企業軟件開發過程中,使用多個綁定不同許可證的開源組件,會導致許可證規則沖突,面臨法律風險[3].如中國某公司曾因未公開Android系統相關代碼而被開源社區認定違反其許可證規則,原因是Android系統綁定了Apache2.0許可證,該許可證不要求公開源代碼,但該公司在Android中加入了綁定GPLv2許可證的Linux內核代碼,GPLv2許可證則要求修改后的代碼必須公開,而該公司并未公開.
20世紀90年代開源概念在美國興起,在其政策主導下產生了Apache基金會、Google等開源組織和企業,以及Hadoop,Android等著名的開源項目.美國注冊的開源組織在運營政策上基本都會遵守美國相關的法律法規.全球最大的開源基金會Apache軟件基金會在其運營文件中就明確表示,其產品均是由在美國的服務器向外分發,須遵守美國《出口管制條例》(Export Administration Regulation, EAR).隨著我國開源軟件的快速發展,國內雖然產生了一批開源組織和自建的代碼托管平臺,但仍然難以撼動美國對開源軟件的絕對主導地位,目前絕大部分開源代碼事實上仍然被美國控制.
網絡產品供應鏈的主要風險除了產品自身的安全性外,還包括產品使用后帶來的網絡和信息系統被非法控制、遭受干擾和破壞、數據泄露的風險,以及產品供應渠道可靠性及是否可能因政治、外交、貿易等原因中斷供應的風險[4].我們通過對某辦公軟件的開源成分進行分析,同時結合其開源代碼安全、開源項目、托管平臺、法律政策等相關數據的收集,初步判斷開源軟件在供應鏈安全方面存在3大風險.
開源軟件因其代碼的公開性,在一定程度上降低了開發成本,提高了開發效率,但同時也帶來了安全風險.開源軟件的安全漏洞管理與其他商業軟件具有較大區別.商業軟件在發現漏洞后,通常會把修復補丁自動推送給用戶,開源軟件則是被動的“拉取模式”,相關補丁需要人工安裝.若開發人員不對使用的開源代碼定期檢查,則相應的安全漏洞會一直存在.隨著新代碼的加入,漏洞在代碼庫中將越積越多,漏洞平均年齡逐漸增加,修復漏洞將變得耗時耗力.在此次辦公軟件的開源成分分析中,通過匹配開源代碼漏洞庫,發現了libytnef等開源組件的堆溢出漏洞[5]等14個中高危漏洞,攻擊者可利用這些漏洞構建惡意文件,入侵并癱瘓網絡系統.而開源代碼的開放性特點,使得代碼的漏洞人人可見,這當中肯定也包括網絡攻擊者.在一些基礎開源代碼應用范圍十分廣泛的情況下,開源的特點導致越來越多的開源代碼庫正在成為網絡犯罪的目標,攻擊者往往傾向于利用基礎開源代碼發動1次行動造成很多攻擊,而不是去攻擊每一個應用.開發者甚至可以故意創建惡意代碼,讓企業在不知情的情況下將惡意代碼納入其代碼庫中,形成隱藏的風險.一旦不法分子利用開源軟件的漏洞對電信、能源、交通等行業的重要信息系統發動攻擊,可能造成大范圍的社會基礎設施出現服務中斷,大量的個人信息和重要數據面臨泄露的風險.
企業使用開源組件相當于默認接受開源許可證的限制條件,比如辦公軟件中使用的libytnef,js等開源組件使用了GPLv2許可證,該許可證限制了其產品應用于特定行業領域.如果不遵守許可證規則將引起知識產權等問題上的法律糾紛,增加軟件遭禁用的風險,產品提供者將承擔高昂的軟件替代成本.而且,注冊于美國的開源組織產生的法律糾紛受美國的司法管轄.如js開源項目所屬的Mozilla基金會在服務協議[6]中明確其受美國加州法律管轄,相應的索賠和糾紛應在加州圣克拉拉縣法院提起訴訟.美國的屬地管轄不僅增加了相關法律訴訟的成本,也令使用這些開源代碼的企業和運營者在知識產權問題上面臨諸多不確定性,在可能涉及域外法律管轄時,相關的法律風險大大升高.
開源代碼托管平臺GitHub在官方聲明[7]中明確表示,相關產品遵守美國EAR,包括禁止受制裁的國家和團體訪問其服務,禁止其企業服務出售或出口至伊朗、朝鮮、敘利亞等受美國制裁的國家.此次分析的辦公軟件所使用的libytnef,pugixml,cctz等開源組件代碼就托管于GitHub.據公開報道,2019年就曾發生伊朗和俄羅斯克里米亞地區的GitHub用戶個人賬戶遭到封禁無法取回代碼的事件,這表明GitHub已在美國出口管制要求下展開行動.
美國EAR將開源代碼的出口劃分為2類[8]:一類是“公開可獲得”(publicly available)的不帶加密功能的軟件源代碼,不受出口管制;另一類是公開可獲得的帶加密功能的軟件源代碼(出口控制等級編號ECCN為5D002),雖不會被限制出口,但需符合備案要求.目前,知名的Tomcat,Hadoop等開源項目都被劃定為ECCN 5D002,相當于備案后可不受管制.總體來講,開源軟件在正常情況下屬于“公開可獲得”的軟件,即使開源組織在政策上聲明遵從美國EAR要求,目前尚不會被限制出口.但如果美國調整EAR規則,將含有開源成分的重點軟件加入到管制名單,或修改目前“備案后不受管制”的條款,大量核心的開源項目將面臨出口管制的限制,我國軟件開發者獲取相關開源代碼將非常困難,相關產品的軟件供應鏈將面臨極大的斷供風險.2020年1月6日,美國商務部就通過更新EAR將“用于自動分析地理空間圖像的軟件”(出口控制等級編號ECCN為0Y521)列入管制范圍,智能化傳感器、無人機、衛星等目標識別軟件都在限制范圍之內,美國企業必須得到許可后才能出口這些軟件到中國等目的地.在2019年美國政府將華為公司列入出口管制“實體清單”后,谷歌即宣布停止向華為提供基于Android系統的更新服務及應用.雖然谷歌對華為的“斷供”并不涉及安卓開源項目AOSP(Android Open Source Project),但是美國相關開源組織和平臺的“集體行動”,不得不讓我們開始對開源軟件供應鏈面臨的斷供風險予以重視.2020年3月,國際開源芯片技術組織RISC-V基金會就宣布將總部從美國特拉華州遷往瑞士[9].其負責人表示,雖然目前基金會的全球合作尚未受到影響,但基于對美國貿易限制的擔憂及成員可能面臨的地緣政治破壞,仍然決定將基金會的注冊地遷出美國.在當前中美貿易摩擦尚未結束、美對我相關企業的制裁并未解除的大背景下,美國對其出口管制規定的不斷調整,將導致開源軟件因政治、外交、貿易等因素供應中斷的風險增大.
隨著開源軟件的廣泛應用,開源安全風險日益凸顯.為有效控制網絡安全風險,保障重要信息系統承載的業務安全:一是網絡安全檢測認證機構需加強開源軟件安全評價技術及方法研究,利用軟件代碼分析等工具準確識別網絡產品中的開源成分,分析開源代碼安全性,為安全評估提供重要的手段支撐.二是企業應提高開源軟件供應鏈安全意識,充分評估開源軟件許可證沖突及軟件供應中斷的法律風險,加大自主創新投入[10],提高代碼自主水平,推動構建國產開源生態,完善安全、可靠、多源的軟件供應鏈安全保障體系.