本文為安全知識圖譜技術技術白皮書《踐行安全知識圖譜,攜手邁進認知智慧》精華解讀系列第七篇,介紹了知識圖譜相關技術如何在軟體供應鏈安全領域應用。
01軟體供應鏈安全的興起與挑戰
隨著軟體技術的飛速發展和軟體開發技術的不斷進步,軟體開發和整合過程中常會應用第三方軟體產品或開源元件,其供應鏈中軟體的安全性和可靠性逐步成為軟體產業面臨的重要安全問題。近年來大量湧現的軟體供應鏈安全事件則具有不同的特點,攻擊軟體供應鏈相較於攻擊軟體本身,難度和成本顯著降低,影響範圍一般顯著擴大,並且由於攻擊發生後被供應鏈上的多次傳遞所掩蓋,難以被現有的計算機系統安全防範措施識別和處理。如Xcode非官方版本惡意程式碼汙染事件、遠端終端管理工具Xshell後門事件、開源元件Fastjson反序列化漏洞等,主要體現在針對開發工具的汙染、原始碼汙染、預留後門、捆綁下載、軟體漏洞等方面。
我們對軟體供應鏈安全的關注由來已久,2020年爆發的SolarWinds供應鏈遭受APT攻擊事件,是典型的軟體供應鏈攻擊案例。2021年2月美國總統拜登簽署行政令,為包括資訊科技在內的商品構建更安全的供應鏈,將軟體供應鏈安全推進公眾視野。我國對於軟體供應鏈安全的法規和標準也在日趨完善中,《資訊保安技術 資訊科技產品供應方行為安全準則》(GB/T 32921-2016)約束了供方的安全要求,由中國資訊保安測評中心牽頭的《資訊保安技術 軟體供應鏈安全要求》也在編制階段,對供需雙方的安全要求進行約束。由此可見軟體供應鏈安全的重要性。
與傳統軟體安全相比,軟體供應鏈面臨的安全風險不斷加大,因其遭受破壞而引發的網路安全事件愈演愈烈。第一,軟體供應鏈攻擊面由軟體產品本身的漏洞擴大為上游供應商的軟體、元件和服務漏洞,任何一個上游階段的漏洞都將影響下游所有軟體,導致整個軟體供應鏈遭受的攻擊面不斷擴大;第二,攻擊面的擴大顯著降低了攻擊者的攻擊難度,軟體供應鏈中的任意環節一旦被攻擊或篡改,都將會引起安全風險的連鎖反應,產生巨大的安全危害;另外,軟體開源化趨勢增強,據Forrester Research 研究表明,應用軟體的80%~90%程式碼來自開源元件,開源元件的安全性直接關係到資訊系統基礎設施安全,已成為軟體供應鏈安全問題增長的重要因素。
軟體供應鏈的安全治理可以從以下角度進行:
1、清晰供應鏈關係:需要全面梳理軟體供應鏈中涉及到的供應商、軟體、資訊、工具、服務、上下游交付環節,保證供應鏈流程不會存在遺漏。
2、系統和元件引用關係:需要識別軟體原始碼、工具存在的安全問題,重點明確系統和元件、元件與元件間的引用關係。
3、供應鏈上下游軟體漏洞風險管理:上游軟體漏洞如被引入當前環節,需追蹤當前環節的產出會被哪些下游所使用,跟蹤資訊流,確保問題發生時影響範圍的可知、可控、可追溯。
4、制定有效的安全防護方案:針對已知安全風險需要制定決策或解決方案,透過替換、升級、修復解決,也可採用安全防護、封堵等方式規避風險。
在實際的企業安全運營中,僅從以上幾個方面考慮軟體供應鏈安全遠遠不夠,我們還需要從軟體的全生命週期考慮更細粒度的安全性,如SDL 軟體安全開發生命週期、DevSecOps、安全編碼、軟體供應商評估與風險管理、成熟的應急響應機制等。
02基於知識圖譜的應用方案
傳統軟體供應鏈安全體系
狹義的軟體供應鏈安全解決方案一般以開源軟體為切入點,跟蹤開源軟體在系統和專案中的應用情況,以此作為軟體供應鏈安全的主體內容。在這種情況下,檢查、管理開源元件,並識別開源元件的已知漏洞,成為軟體供應鏈安全的主要技術手段。
但軟體供應鏈安全絕不等於開源元件及漏洞管理。傳統軟體供應鏈安全體系一般以SDL軟體安全開發生命週期來整體構建,在每個階段都有屬於軟體供應鏈安全的體系內容和技術要素。如圖1所示,是一個簡化版的基於SDL的軟體供應鏈技術實踐方案。
圖1 SDL軟體供應鏈安全體系
可以看到,在SDL流程中,從軟體供應商評估到產品安全檢測與防護,都是軟體供應鏈安全解決方案中的重要環節。在每個階段,都有專門的技術、產品或方法來保障過程的全面性和安全性。
傳統的軟體供應鏈安全體系缺乏統一的度量標準或規範對供應鏈中的供需關係、軟體質量進行風險評估。在目前安全運營場景中雖然可以透過SOC(Security Operation Center)或安管平臺反映每個階段的執行結果,但這種結果過於分散,未形成連線關係,不足以反映整體結果。其次,採用SDL解決方案,無法發現供應鏈安全中特有的關聯風險,只能提前預設可能的風險點並進行進一步安全評估。
考慮到以上傳統技術體系的不足,我們結合軟體供應鏈的關聯特性,基於知識圖譜方式,對軟體供應鏈安全進行風險分析。
軟體供應鏈知識圖譜構建
以當前組織為切入點,收集軟體供應鏈上下游的依賴關係。這種依賴關係可以是元件引用、購買產品、使用服務、安裝軟體、下載應用等,還可以包括地理位置、開源社群、供應商的可信能力等。
如圖2所示,是一個典型軟體供應鏈知識圖譜中不同軟體物件和物件之間的依賴關係。可見其中有很多節點和過程存在潛在安全風險並容易受到攻擊。
圖2 軟體供應鏈知識圖譜
風險識別
結合軟體供應鏈安全知識圖譜,採用不一致性進行判斷。可以透過設定查詢模式,找出在知識圖譜中本應相同卻不同、本應不同卻相同的實體。如圖 3 所示,開源元件A和B本應是兩個不同的開源元件,但他們卻指向同一md5雜湊值,則A和B可能存在冒用的風險。假如圖譜中開源元件A,存在兩個不同的md5屬性,則可能存在元件A被篡改或其他惡意軟體偽裝的風險。
圖3 開源元件風險識別
高風險軟體推薦
軟體供應鏈有一個明顯特徵,即引用關係鏈較長。假如某個軟體實體被公佈或暴露存在安全隱患,我們可根據知識圖譜多步關聯搜尋,快速梳理出受影響的使用者和供應商實體,進一步進行風險管理和應急處置。如圖4所示,使用者 A安裝了APP-I,而APP-I引用了開源元件A和開源元件B。若開源元件A(fastjson 1.2.67)存在CVE-2020-8840注入導致遠端程式碼執行漏洞,則能間接分析出影響使用者A。知識圖譜中節點之間的邊,可以很好的表示軟體與元件之間的引用、存在、依賴等關係,完全適用於軟體供應鏈安全中的多級依賴和分析場景。透過深度搜尋,提取相應特徵,可作為風險評估模型的輸入。
圖4 高風險軟體推薦
基於圖模式可以識別高風險開源軟體節點,對節點被引用數或更新週期等計算對應節點的風險值。圖4中開源元件B被多個APP引用,因此一旦開源元件B被暴露存在安全漏洞,受影響的範圍將會擴大,所以開源元件B被定為高風險節點。同時從開源社群角度考慮,活躍社群的開源元件更新及時且質量較高,版本迭代、更新維護不及時的社群元件則相對安全風險較高。
影響範圍分析
基於安全知識圖譜中的所有儲存歷史資訊,對潛在威脅進行建模,包括開發工具汙染、預留後門、原始碼汙染、捆綁下載、升級劫持等。透過圖譜可直接對可識別威脅進行影響範圍分析,如圖5所示,Microsoft office2007、2013 和 2016 均存在 CVE-2017-11882 遠端執行漏洞,被 SideWinder 組織在某次APT攻擊戰役中使用。透過知識圖譜中軟體的引用關係,可以分析得到環境中受到影響的終端PC。
圖5 CVE漏洞利用影響範圍分析
緩解措施決策
將攻擊和風險結合起來,形成 < 風險值,影響 > 對,構建該軟體供應鏈的安全知識圖譜風險圖。基於風險圖和業內收集的漏洞解決辦法和防護策略,制定相應的安全管理措施,緩解針對軟體供應鏈的攻擊影響。在實際操作時,可以對緩解措施進行約束,以便只執行在約束範圍內的緩解措施(例如在規定的成本內、在規定的持續時間內等),任何不滿足約束的緩解措施不會被預先提出來進一步考慮。
03總結
知識圖譜能夠很好地表現出軟體供應鏈安全中的依賴和使用關係,且能夠利用自身特性發現其中的風險。在軟體供應鏈安全範圍廣度和深度兼具的複雜場景下,使用知識圖譜來保障軟體供應鏈安全,極具先進性和創造性。但在當前的應用與研究中,軟體供應鏈的相關實體,包括供應商、元件、程式碼、工具、社群、應用開發平臺等,都是軟體供應鏈安全中的關鍵風險節點。而全面收集關鍵節點並進行語義準確表達,是目前面臨的重要挑戰,值得我們繼續深入研究。