數(shù)字化時代,,軟件無處不在,。軟件已經(jīng)成為支撐社會正常運轉(zhuǎn)的最基本元素之一,軟件的安全性問題也正在成為當今社會的根本性,、基礎(chǔ)性問題,。隨著軟件產(chǎn)業(yè)的快速發(fā)展,,軟件供應(yīng)鏈也越發(fā)復(fù)雜多元,復(fù)雜的軟件供應(yīng)鏈會引入一系列的安全問題,,導(dǎo)致信息系統(tǒng)的整體安全防護難度越來越大,。
一、軟件供應(yīng)鏈安全現(xiàn)狀
近年來,,針對軟件供應(yīng)鏈的安全攻擊事件一直呈快速增長態(tài)勢,,造成的危害也越來越嚴重,其中,,開源軟件的安全問題尤其值得關(guān)注,。
(一) 供應(yīng)鏈安全事件持續(xù)高發(fā)
軟件供應(yīng)鏈安全事件愈演愈烈,,下表歸納了最近一年的典型事件,,但這只是冰山一角。不難看出,,供應(yīng)鏈攻擊可謂無處不在,,在軟件生命周期的各個環(huán)節(jié)中、軟件產(chǎn)品的各種元素上都可能發(fā)生,。
表 1 近一年主要軟件供應(yīng)鏈安全事件
?。ǘ┲饕浖?yīng)鏈攻擊類型
軟件產(chǎn)品的生命周期包括設(shè)計、生產(chǎn),、交付,、部署、使用及運營,、停止等階段,。面向此生命周期所涉及的分工協(xié)作、聯(lián)合攻關(guān),、平臺環(huán)境等就是軟件供應(yīng)鏈的主要內(nèi)容,,軟件供應(yīng)鏈的主要攻擊類型也與這些環(huán)節(jié)密切相關(guān)。
生產(chǎn)階段涉及軟件產(chǎn)品的開發(fā),、集成,、構(gòu)建等,,此階段的供應(yīng)鏈安全問題主要包括三類:第一類是針對軟件生產(chǎn)要素的攻擊,即攻擊者利用安全漏洞,、后門等修改編碼環(huán)境,、源碼庫等開發(fā)工具或軟件自身,植入惡意代碼,,并經(jīng)網(wǎng)絡(luò),、存儲介質(zhì)等進行傳播,用戶下載使用后,,引入風(fēng)險,;第二類是開發(fā)者對所使用的第三方軟件,特別是開源組件未經(jīng)安全測試而直接使用,,不了解其中的安全漏洞和法律風(fēng)險,;第三類是軟件產(chǎn)品構(gòu)建時,在編譯和鏈接,、產(chǎn)品容器化,、打包等過程中,使用的工具或產(chǎn)品對象本身被污染或惡意修改而帶來的安全風(fēng)險,,如 Codecov事件,。
交付和運營階段涉及軟件產(chǎn)品的發(fā)布、傳輸,、下載,、安裝、補丁升級等,,互聯(lián)網(wǎng)或移動傳輸介質(zhì)是其重要手段,。在發(fā)布和下載方面,發(fā)布渠道或商城如對軟件安全性缺乏分析和測試則會存在潛在風(fēng)險,;攻擊者可通過捆綁攻擊,,在常用軟件中捆綁額外功能,如果這些功能涉及用戶隱私,、信息的收集,,則后患無窮;針對發(fā)布站點的攻擊,,如域名劫持(DNS),、內(nèi)容分發(fā)系統(tǒng)(CDN)緩存節(jié)點篡改等,會使用戶下載存在惡意代碼或后門的軟件,。在軟件更新和升級方面,,攻擊者可能通過中間人攻擊替換升級軟件或補丁包,或誘導(dǎo)用戶從非官方發(fā)布渠道下載,,以達到攻擊的目的,,也可能使用捆綁攻擊在升級包中增加額外軟件功能,。
?。ㄈ╅_源安全問題應(yīng)特別關(guān)注
Gartner 報告曾指出,,在當前 DevOps 之類的開發(fā)模式下,應(yīng)用程序中大部分代碼是被“組裝”而不是“開發(fā)”出來的,。據(jù)其統(tǒng)計,,超過 95% 的組織在業(yè)務(wù)關(guān)鍵 IT 系統(tǒng)中都主動或被動地使用了重要的開源軟件(OSS)資產(chǎn);Forrester Research 研究也表明,,應(yīng)用軟件 80%~90% 的代碼來自開源組件,。因此,開源組件的安全性直接關(guān)系到信息系統(tǒng)基礎(chǔ)設(shè)施的安全,,但從前表中可以看出,,開源安全性不容樂觀,它已成為軟件供應(yīng)鏈安全問題增長的重要因素,。
今年 6 月,,奇安信代碼安全實驗室發(fā)布了《2021中國軟件供應(yīng)鏈安全分析報告》。報告通過對 2188個企業(yè)軟件項目的檢測結(jié)果進行分析,,得出了開源使用的安全狀況:所有軟件項目均使用了開源軟件,,平均每個項目使用開源軟件數(shù)量達 135 個,使用最多的開源軟件出現(xiàn)在 581 個項目中,,滲透率達到了26.6%,;平均每個軟件項目存在 52.5 個開源軟件漏洞,存在開源軟件漏洞,、高危開源軟件漏洞和超危開源軟件漏洞的項目分別為 1695 個,、1559 個、1319個,,占比分別為 77.5%,、71.3%、60.3%,;影響面最大的開源軟件漏洞 (Spring FrameWork 漏洞 ) 出現(xiàn)在973 個項目中,,滲透率高達 44.5%,一旦該漏洞被攻擊者利用,,將影響近半數(shù)的企業(yè)軟件,,波及的企業(yè)數(shù)量更加不計其數(shù)。
此外,,根據(jù)奇安信代碼安全實驗室另一項針對聯(lián)網(wǎng)設(shè)備固件的安全檢測表明,,攝像頭、路由器等智能聯(lián)網(wǎng)設(shè)備的開源軟件安全問題也很突出:許多多年之前的老舊漏洞未進行及時修復(fù),,86.4% 的設(shè)備的最新固件存在至少一個老舊開源軟件漏洞,,漏洞最多的固件存在 74 個老舊開源軟件漏洞,,甚至2014 年曝出的“心臟滴血”漏洞,仍然存在于 5.3%的最新設(shè)備中,。
?。ㄋ模┕?yīng)鏈攻擊頻發(fā)原因分析
生產(chǎn)模式的變化。用戶對軟件功能,、應(yīng)用實效等方面的需求越來越高,,這就要求開發(fā)者在短時間內(nèi)實現(xiàn)相應(yīng)功能,還要持續(xù)不斷地進行迭代更新,。軟件系統(tǒng)往往由自主研發(fā)的,、開源獲取的、外包開發(fā)的,、商業(yè)購買的等多種來源的部件組合而成,,為了響應(yīng)快速開發(fā)的需求,軟件供應(yīng)鏈中第三方來源的如開源,、外包,、商業(yè)等成分軟件的占比會增加,從而引入更多“不可控”成分,,增加了軟件安全評估的難度,,也提高了軟件供應(yīng)鏈風(fēng)險。
軟件自身的變化,。軟件系統(tǒng)規(guī)模越來越大,,程序邏輯越來越復(fù)雜,因此對軟件的理解和分析也越來越難,,這也造成了對軟件把關(guān)和分析技術(shù)的門檻越來越高,。另外,開源,、庫文件等提高了代碼復(fù)用性,,但在算法、結(jié)構(gòu),、邏輯,、特性等復(fù)用的同時,也帶來了缺陷,、漏洞等風(fēng)險的復(fù)制,,極大增加了供應(yīng)鏈的攻擊面,會造成某一點問題的大面積爆發(fā),,利用Struts2 等開源漏洞攻擊的影響面之廣就是個很好的例子,。
環(huán)境渠道的多樣。軟件產(chǎn)品開發(fā)、構(gòu)建,、部署,、交付等環(huán)節(jié)的生產(chǎn)線環(huán)境和發(fā)布渠道越來越多樣化、多元化,,IDE,、代碼管理系統(tǒng)、Bug 管理系統(tǒng),、構(gòu)建工具,、CI/CD 工具,、云平臺部署,、交付方式等的選擇越來越多,這些輔助工具或渠道的不安全因素會作為“基因”傳導(dǎo)至軟件產(chǎn)品中,,也會增加軟件供應(yīng)鏈的攻擊面,。
二、美國和我國的相關(guān)舉措分析
?。ㄒ唬?美國加快供應(yīng)鏈風(fēng)險管理步伐
早在 2013 年,,美國就發(fā)布了第一部 ICT 供應(yīng)鏈安全方面的標準《供應(yīng)商關(guān)系的信息安全(ISO/IEC 27036)》,針對客戶和供應(yīng)商之間的購買與供應(yīng)關(guān)系,,規(guī)定了信息安全管理框架,;又于 2015 年發(fā)布了《聯(lián)邦信息系統(tǒng)和組織供應(yīng)鏈風(fēng)險管理方法(NIST SP800-161)》,用于指導(dǎo)美國聯(lián)邦政府機構(gòu)管理 ICT 供應(yīng)鏈的安全風(fēng)險,,包括識別,、評估和緩解 ICT 供應(yīng)鏈風(fēng)險等。2020 年底爆發(fā)的“太陽風(fēng)”(SolarWinds)供應(yīng)鏈攻擊事件,,使得美國政府對供應(yīng)鏈安全的重視進一步提升,。下表列舉了 2021 年以來其在供應(yīng)鏈安全風(fēng)險管理方面的一些行動,可以看出,,步伐明顯加快,。
表 2 美國供應(yīng)鏈安全風(fēng)險管理舉措
(二) 我國相關(guān)法規(guī)和標準日趨完善
近年來,,我國在網(wǎng)絡(luò)安全領(lǐng)域的重要法規(guī)頻頻出臺,,對供應(yīng)鏈安全的要求也多有涉及?!毒W(wǎng)絡(luò)安全法》規(guī)定了網(wǎng)絡(luò)產(chǎn)品和服務(wù)提供者的職責(zé),,包括嚴禁的行為、及時采取補救措施,、告知報告義務(wù),、維護的延續(xù)性等;《網(wǎng)絡(luò)安全法》《網(wǎng)絡(luò)安全審查辦法》和《關(guān)鍵信息基礎(chǔ)設(shè)施安全保護條例》針對關(guān)鍵信息基礎(chǔ)設(shè)施的供應(yīng)鏈安全提出了要求,包括對可能影響國家安全的設(shè)施進行安全審查,、網(wǎng)絡(luò)產(chǎn)品和服務(wù)提供者應(yīng)配合審查并承諾避免危及供應(yīng)鏈安全的行為,、安全審查時考慮供應(yīng)鏈風(fēng)險方面的因素、優(yōu)先采購安全可信的網(wǎng)絡(luò)產(chǎn)品和服務(wù),、與提供者簽署協(xié)議等,。
我國在供應(yīng)鏈安全方面的標準體系也日趨完善?!缎畔踩夹g(shù) 信息技術(shù)產(chǎn)品供應(yīng)方行為安全準則》(GB/T 32921-2016)從供應(yīng)商角度入手,,規(guī)定了信息技術(shù)產(chǎn)品供應(yīng)方的行為安全準則;《信息安全技術(shù) ICT 供應(yīng)鏈安全風(fēng)險管理指南》(GB/T 36637-2018)規(guī)定了信息通信技術(shù)(ICT)供應(yīng)鏈的安全風(fēng)險管理過程和控制措施,,適用于 ICT 供方和需方,、第三方測評機構(gòu)等;國標《信息安全技術(shù) 信息技術(shù)產(chǎn)品供應(yīng)鏈安全要求》針對關(guān)鍵信息基礎(chǔ)設(shè)施,,規(guī)定了信息技術(shù)產(chǎn)品供應(yīng)方和需求方應(yīng)滿足的供應(yīng)鏈安全要求,,該標準已完成征求意見,即將發(fā)布,;中國信息安全測評中心牽頭的國標《信息安全技術(shù) 軟件供應(yīng)鏈安全要求》也在編制中,,將對軟件供應(yīng)鏈所涉及的相關(guān)方應(yīng)滿足的安全要求進行規(guī)范。此外,,國內(nèi)有些標準雖并非專門針對供應(yīng)鏈安全,,但也包含一些具體要求:《信息安全技術(shù) 網(wǎng)絡(luò)安全等級保護基本要求》(GB/T 22239-2019)在通用要求里,給出了產(chǎn)品采購與使用,、外包軟件開發(fā),、服務(wù)供應(yīng)商選擇等方面的要求;《信息安全技術(shù) 云計算服務(wù)安全能力要求》(GB/T 31168-2014)對云服務(wù)商的供應(yīng)鏈從采購過程,、外部服務(wù)提供商,、開發(fā)商、防篡改,、組件真實性,、不被支持的系統(tǒng)組件、供應(yīng)鏈保護等方面提出了安全要求,。
三,、對策與建議
雖然我國已出臺了一系列針對軟件供應(yīng)鏈安全的法規(guī)和標準,但包括風(fēng)險的發(fā)現(xiàn),、分析,、處置、防護等能力在內(nèi)的軟件供應(yīng)鏈安全管理水平仍有待繼續(xù)提升,。建議從三個方面開展相關(guān)工作,。
(一) 政策層面
建議國家和行業(yè)監(jiān)管部門繼續(xù)完善和制定軟件供應(yīng)鏈安全相關(guān)的政策、標準和實施指南,,建立長效工作機制,;建立國家級/行業(yè)級軟件供應(yīng)鏈安全風(fēng)險分析平臺,具備系統(tǒng)化,、規(guī)?;能浖创a缺陷和后門分析、軟件漏洞分析,、開源軟件成分及風(fēng)險分析等能力,,及時發(fā)現(xiàn)和處置軟件供應(yīng)鏈安全風(fēng)險。
?。ǘ?用戶層面
建議政企用戶參照監(jiān)管要求及成功案例,,明確本單位軟件供應(yīng)鏈安全管理的目標、工作流程,、檢查內(nèi)容,、責(zé)任部門等;在采購商用現(xiàn)貨軟件時,,應(yīng)充分評估供應(yīng)商的安全能力,與其簽署安全責(zé)任協(xié)議,,要求提供所使用的第三方組件/開源組件清單,,并對出現(xiàn)的安全問題提供必要的技術(shù)支持;在自行或委托第三方定制開發(fā)軟件系統(tǒng)時,,應(yīng)遵循軟件安全開發(fā)生命周期管理流程,,對軟件源代碼進行安全缺陷檢測和修復(fù),并重點管控開源軟件的使用,,建立開源軟件資產(chǎn)臺賬,,持續(xù)監(jiān)測和消減所使用開源軟件的安全風(fēng)險。建議個人用戶及時升級軟件或打補丁,,開啟軟件安全保護功能,,不使用來源不明的應(yīng)用,做好賬戶密碼設(shè)置及管理,。
?。ㄈ?廠商層面
建議軟件產(chǎn)品廠商提高安全責(zé)任意識,嚴控產(chǎn)品安全質(zhì)量,;建立清晰的軟件供應(yīng)鏈安全策略,,明確相關(guān)的管理目標、工作流程,、檢查內(nèi)容,、責(zé)任部門等;嚴控上游,尤其重點管控開源軟件的使用,,建立開源軟件資產(chǎn)臺賬,,采用開源安全治理工具,持續(xù)監(jiān)測和消減其安全風(fēng)險,;嚴控自主開發(fā)代碼的質(zhì)量,,采用軟件源代碼安全分析工具,持續(xù)檢測和修復(fù)軟件源代碼中的安全缺陷和漏洞,;建立完善的產(chǎn)品漏洞響應(yīng)機制,,包括產(chǎn)品漏洞信息的收集、漏洞報告渠道的建立和維護,、漏洞補丁的開發(fā)和發(fā)布,、客戶端漏洞應(yīng)急響應(yīng)和修復(fù)支持等。