文│ 奇安信集團代碼安全事業部 董國偉
數字化時代🗒,軟件無處不在。軟件已經成為支撐社會正常運轉的最基本元素之一👮🏿,軟件的安全性問題也正在成為當今社會的根本性、基礎性問題。隨著軟件產業的快速發展👨🏻💻,軟件供應鏈也越發復雜多元👩⚕️,復雜的軟件供應鏈會引入一系列的安全問題🐡,導致信息系統的整體安全防護難度越來越大。
一🧜🏿♀️、軟件供應鏈安全現狀
近年來🕣,針對軟件供應鏈的安全攻擊事件一直呈快速增長態勢,造成的危害也越來越嚴重,其中💂🏽,開源軟件的安全問題尤其值得關註。
(一)供應鏈安全事件持續高發
軟件供應鏈安全事件愈演愈烈🏊🏿♂️,下表歸納了最近一年的典型事件🦥,但這只是冰山一角。不難看出,供應鏈攻擊可謂無處不在,在軟件生命周期的各個環節中🧑🏼、軟件產品的各種元素上都可能發生📖🧑🦯。
表 1 近一年主要軟件供應鏈安全事件
(二)主要軟件供應鏈攻擊類型
軟件產品的生命周期包括設計🚘、生產🚺、交付、部署、使用及運營、停止等階段👍🏽🤭。面向此生命周期所涉及的分工協作🐃、聯合攻關⚀、平臺環境等就是軟件供應鏈的主要內容💃🏻,軟件供應鏈的主要攻擊類型也與這些環節密切相關。生產階段涉及軟件產品的開發、集成、構建等,此階段的供應鏈安全問題主要包括三類🛶:第一類是針對軟件生產要素的攻擊,即攻擊者利用安全漏洞、後門等修改編碼環境、源碼庫等開發工具或軟件自身,植入惡意代碼👩🏿,並經網絡⚒、存儲介質等進行傳播,用戶下載使用後,引入風險;第二類是開發者對所使用的第三方軟件,特別是開源組件未經安全測試而直接使用,不了解其中的安全漏洞和法律風險;第三類是軟件產品構建時,在編譯和鏈接、產品容器化、打包等過程中,使用的工具或產品對象本身被汙染或惡意修改而帶來的安全風險,如 Codecov事件𓀈。交付和運營階段涉及軟件產品的發布、傳輸、下載✊、安裝🌛、補丁升級等,互聯網或移動傳輸介質是其重要手段🧏🏿♂️。在發布和下載方面,發布渠道或商城如對軟件安全性缺乏分析和測試則會存在潛在風險🧲;攻擊者可通過捆綁攻擊👽🫴🏿,在常用軟件中捆綁額外功能,如果這些功能涉及用戶隱私、信息的收集,則後患無窮🍢;針對發布站點的攻擊,如域名劫持(DNS)、內容分發系統(CDN)緩存節點篡改等👬🏻,會使用戶下載存在惡意代碼或後門的軟件。在軟件更新和升級方面,攻擊者可能通過中間人攻擊替換升級軟件或補丁包,或誘導用戶從非官方發布渠道下載,以達到攻擊的目的,也可能使用捆綁攻擊在升級包中增加額外軟件功能。
(三)開源安全問題應特別關註
Gartner 報告曾指出🛫,在當前 DevOps 之類的開發模式下🧨,應用程序中大部分代碼是被“組裝”而不是“開發”出來的。據其統計,超過 95% 的組織在業務關鍵 IT 系統中都主動或被動地使用了重要的開源軟件(OSS)資產;Forrester Research 研究也表明♣️,應用軟件 80%~90% 的代碼來自開源組件。因此👲🏼,開源組件的安全性直接關系到信息系統基礎設施的安全😖,但從前表中可以看出🐂,開源安全性不容樂觀🚋,它已成為軟件供應鏈安全問題增長的重要因素。今年 6 月,奇安信代碼安全實驗室發布了《2021中國軟件供應鏈安全分析報告》。報告通過對 2188個企業軟件項目的檢測結果進行分析,得出了開源使用的安全狀況:所有軟件項目均使用了開源軟件🕍,平均每個項目使用開源軟件數量達 135 個,使用最多的開源軟件出現在 581 個項目中,滲透率達到了26.6%🦠;平均每個軟件項目存在 52.5 個開源軟件漏洞8️⃣,存在開源軟件漏洞、高危開源軟件漏洞和超危開源軟件漏洞的項目分別為 1695 個、1559 個、1319個,占比分別為 77.5%、71.3%、60.3%;影響面最大的開源軟件漏洞 (Spring FrameWork 漏洞 ) 出現在973 個項目中,滲透率高達 44.5%,一旦該漏洞被攻擊者利用,將影響近半數的企業軟件,波及的企業數量更加不計其數🪶。此外🙏,根據奇安信代碼安全實驗室另一項針對聯網設備固件的安全檢測表明,攝像頭、路由器等智能聯網設備的開源軟件安全問題也很突出:許多多年之前的老舊漏洞未進行及時修復,86.4% 的設備的最新固件存在至少一個老舊開源軟件漏洞,漏洞最多的固件存在 74 個老舊開源軟件漏洞👨🏼🦳,甚至2014 年曝出的“心臟滴血”漏洞,仍然存在於 5.3%的最新設備中👌。
(四)供應鏈攻擊頻發原因分析
生產模式的變化🧏🏿♀️。用戶對軟件功能🧛🏻🐖、應用實效等方面的需求越來越高,這就要求開發者在短時間內實現相應功能,還要持續不斷地進行迭代更新。軟件系統往往由自主研發的、開源獲取的、外包開發的、商業購買的等多種來源的部件組合而成,為了響應快速開發的需求,軟件供應鏈中第三方來源的如開源、外包、商業等成分軟件的占比會增加,從而引入更多“不可控”成分,增加了軟件安全評估的難度,也提高了軟件供應鏈風險🕙。軟件自身的變化。軟件系統規模越來越大,程序邏輯越來越復雜,因此對軟件的理解和分析也越來越難👨🏿🏫😍,這也造成了對軟件把關和分析技術的門檻越來越高。另外🏋🏿,開源、庫文件等提高了代碼復用性👩🦳🧗🏼♂️,但在算法、結構、邏輯、特性等復用的同時,也帶來了缺陷、漏洞等風險的復製,極大增加了供應鏈的攻擊面,會造成某一點問題的大面積爆發,利用Struts2 等開源漏洞攻擊的影響面之廣就是個很好的例子。環境渠道的多樣👩⚖️👨🏻。軟件產品開發、構建🛌、部署、交付等環節的生產線環境和發布渠道越來越多樣化🙅🏿♂️、多元化,IDE🌃、代碼管理系統、Bug 管理系統、構建工具🤣、CI/CD 工具、雲平臺部署🌲、交付方式等的選擇越來越多,這些輔助工具或渠道的不安全因素會作為“基因”傳導至軟件產品中,也會增加軟件供應鏈的攻擊面🪺。
二、美國和我國的相關舉措分析
(一)美國加快供應鏈風險管理步伐
早在 2013 年,美國就發布了第一部 ICT 供應鏈安全方面的標準《供應商關系的信息安全(ISO/IEC 27036)》,針對客戶和供應商之間的購買與供應關系🥹,規定了信息安全管理框架;又於 2015 年發布了《聯邦信息系統和組織供應鏈風險管理方法(NIST SP800-161)》,用於指導美國聯邦政府機構管理 ICT 供應鏈的安全風險👐🏼,包括識別、評估和緩解 ICT 供應鏈風險等。2020 年底爆發的“太陽風”(SolarWinds)供應鏈攻擊事件,使得美國政府對供應鏈安全的重視進一步提升。下表列舉了 2021 年以來其在供應鏈安全風險管理方面的一些行動🚣🏻♀️,可以看出,步伐明顯加快🙅🏻♂️。
表 2 美國供應鏈安全風險管理舉措
(二) 我國相關法規和標準日趨完善
近年來,我國在網絡安全領域的重要法規頻頻出臺🔯,對供應鏈安全的要求也多有涉及👩🎤。《網絡安全法》規定了網絡產品和服務提供者的職責🧚🏼♂️,包括嚴禁的行為👼🏼、及時采取補救措施、告知報告義務、維護的延續性等🌵;《網絡安全法》《網絡安全審查辦法》和《關鍵信息基礎設施安全保護條例》針對關鍵信息基礎設施的供應鏈安全提出了要求,包括對可能影響國家安全的設施進行安全審查👩👧👦、網絡產品和服務提供者應配合審查並承諾避免危及供應鏈安全的行為、安全審查時考慮供應鏈風險方面的因素、優先采購安全可信的網絡產品和服務、與提供者簽署協議等🪠。我國在供應鏈安全方面的標準體系也日趨完善🥫。《信息安全技術 信息技術產品供應方行為安全準則》(GB/T 32921-2016)從供應商角度入手,規定了信息技術產品供應方的行為安全準則🦻🏿;《信息安全技術 ICT 供應鏈安全風險管理指南》(GB/T 36637-2018)規定了信息通信技術(ICT)供應鏈的安全風險管理過程和控製措施👩🎨,適用於 ICT 供方和需方♻、第三方測評機構等🏂🏽;國標《信息安全技術 信息技術產品供應鏈安全要求》針對關鍵信息基礎設施,規定了信息技術產品供應方和需求方應滿足的供應鏈安全要求🥴🕠,該標準已完成征求意見🔐,即將發布;中國信息安全測評中心牽頭的國標《信息安全技術 軟件供應鏈安全要求》也在編製中🎚,將對軟件供應鏈所涉及的相關方應滿足的安全要求進行規範。此外,國內有些標準雖並非專門針對供應鏈安全🥞,但也包含一些具體要求😫:《信息安全技術 網絡安全等級保護基本要求》(GB/T 22239-2019)在通用要求裏,給出了產品采購與使用、外包軟件開發👶🏿🐘、服務供應商選擇等方面的要求;《信息安全技術 雲計算服務安全能力要求》(GB/T 31168-2014)對雲服務商的供應鏈從采購過程、外部服務提供商🥜、開發商🐨、防篡改🏛、組件真實性、不被支持的系統組件😦、供應鏈保護等方面提出了安全要求。
三、對策與建議
雖然我國已出臺了一系列針對軟件供應鏈安全的法規和標準,但包括風險的發現、分析、處置✏️、防護等能力在內的軟件供應鏈安全管理水平仍有待繼續提升。建議從三個方面開展相關工作。
(一)政策層面
建議國家和行業監管部門繼續完善和製定軟件供應鏈安全相關的政策、標準和實施指南👲,建立長效工作機製;建立國家級/行業級軟件供應鏈安全風險分析平臺🎄,具備系統化👩🏼🦳🍚、規模化的軟件源代碼缺陷和後門分析、軟件漏洞分析💁🏽♂️、開源軟件成分及風險分析等能力,及時發現和處置軟件供應鏈安全風險。
(二)用戶層面
建議政企用戶參照監管要求及成功案例🛬,明確本單位軟件供應鏈安全管理的目標、工作流程、檢查內容🫱🏻、責任部門等;在采購商用現貨軟件時,應充分評估供應商的安全能力💁🏿♀️,與其簽署安全責任協議,要求提供所使用的第三方組件/開源組件清單👈🏻,並對出現的安全問題提供必要的技術支持;在自行或委托第三方定製開發軟件系統時📪,應遵循軟件安全開發生命周期管理流程,對軟件源代碼進行安全缺陷檢測和修復,並重點管控開源軟件的使用,建立開源軟件資產臺賬,持續監測和消減所使用開源軟件的安全風險。建議個人用戶及時升級軟件或打補丁,開啟軟件安全保護功能🍥,不使用來源不明的應用😇,做好賬戶密碼設置及管理。
(三)廠商層面
建議軟件產品廠商提高安全責任意識,嚴控產品安全質量;建立清晰的軟件供應鏈安全策略,明確相關的管理目標、工作流程、檢查內容、責任部門等;嚴控上遊,尤其重點管控開源軟件的使用🧚🏻,建立開源軟件資產臺賬,采用開源安全治理工具,持續監測和消減其安全風險;嚴控自主開發代碼的質量,采用軟件源代碼安全分析工具⚛️,持續檢測和修復軟件源代碼中的安全缺陷和漏洞;建立完善的產品漏洞響應機製,包括產品漏洞信息的收集、漏洞報告渠道的建立和維護👨🏼🍳、漏洞補丁的開發和發布✋🏽、客戶端漏洞應急響應和修復支持等。
(本文刊登於《中國信息安全》雜誌2021年第10期)