Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

1

引 言

近年來,軟體供應鏈安全事件呈現快速增長態勢,在軟體生命週期的各個環節、軟體系統的各個層次上都可能發生。因此,軟體供應鏈已成為網路空間攻防對抗的焦點,直接影響到國家關鍵基礎設施和重要資訊系統安全。

據Sonatype統計公佈,2021年軟體供應鏈安全事件發生1。2萬起,同比增長高達650%,29%的流行專案中至少包含一個已知的安全漏洞。特別是最近公開的Apache Log4j2漏洞和Spring Framework漏洞,因為危害性高、波及範圍廣,對整個Java生態產生了巨大的危害。

以守護軟體供應鏈安全為己任,任奎教授領導的浙江大學軟體供應鏈安全課題組聯合南洋理工大學劉楊教授課題組,設計、研發了一套

軟體供應鏈安全分析系統(名為“涅槃”)

,包含以下三個子系統:

集:大規模增量式元件收集;

析:多層次高精度依賴分析;

警:實時漏洞分析與預警。

“涅槃”系統涵蓋了多種語言生態的供應鏈安全分析,提出了系統化的資料聚合、抽象和提取方法,定義了元件影響力和漏洞傳播能力評價指標,實現了高精度的元件依賴分析和新型資料聚合展示技術,從而達到對多種語言生態軟體供應鏈的全景分析,對漏洞傳播和影響力的量化分析,以及對漏洞修復精準追蹤和分析的目的。

“涅槃”系統為漏洞影響力評價、安全預警、修復優先順序提供了依據,為軟體供應鏈安全防護指明瞭重點方向,對提升整個生態軟體供應鏈安全具有重要意義。

2

Java語言生態分析

針對Java語言生態分析,“涅槃”系統中建立了一個覆蓋全部Java元件的依賴關係圖譜(如圖1所示),包含超過880萬個元件版本和6500萬條依賴關係。基於此圖譜,“涅槃”進一步分析得出:

在Java語言生態中,軟體供應鏈依賴高度集中,Top 5的元件被超過60%的Java元件所依賴,其安全問題會對整個生態造成災難性後果。

Apache Log4j2和Spring Framework這兩個漏洞對Java元件的影響比例分別是15%和18%。截止到2022年5月份,其修復比例分別是29%和15%。儘管目前對這兩個漏洞已有不少的曝光,但修復比例較低,仍需引起重視。

在Apache Log4j2漏洞的傳播過程中,Netty-common,Netty-buffer,Netty-transport等元件是擴散的關鍵節點,而對於Spring Framework漏洞,Spring-beans,Spring-context,Spring-expression等元件進一步擴大了漏洞的傳播範圍。

生態全景展示

“涅槃”系統分析了Java預設包管理器Maven的所有元件資訊(包含全部880萬個元件版本,以及各個元件版本間的依賴關係6500萬條),繪製了Java生態全景依賴圖譜。

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖1 Java生態元件依賴網全景圖

如圖1所示,其中每個節點代表一個Java元件,每條邊代表兩個元件間的依賴關係,每種顏色代表一種元件以及受其影響的依賴。該圖能夠直觀的展現整個Java語言生態的全貌,以及Top 10元件依賴關係網的分佈。從圖中可以看出,在Java生態中,被廣泛依賴的元件還有Scala-library、Slf4j-api和Guava等,這些元件具有更大的生態影響力,一旦曝出漏洞,將會產生比Apache Log4j2和Spring Framework漏洞更嚴重的影響。

直接影響力

“涅槃”系統中將元件依賴關係中的直接依賴定義為“直接影響力”,以直接依賴的元件數量為依據繪製了圖2。

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖2 Java生態直接影響力Top50元件及其依賴關係

圖2所示為Java語言生態中被其他元件依賴數量最多的Top50元件及其依賴關係,最近兩次影響巨大的軟體供應鏈漏洞攻擊事件所涉及到的Log4j-core排名29位(黃色),Spring-core元件排名33位(藍色)。此外,從上圖中可以看出:

● Top元件之間互相存在依賴關係,例如Guava元件依賴於熱門元件Jsr305,同時又被熱門元件Guice依賴;

● Top元件之間形成了依賴群體,意味著一旦在這些Top元件中發現漏洞,漏洞的傳播存在放大效應,使傳播範圍更廣,影響力更大。

3

漏洞傳播與修復分析

“涅槃”系統不僅能夠正向推理語言生態中的依賴關係形成知識圖譜,還能夠反向追溯漏洞在軟體供應鏈上的傳播,並且可以精確到傳播中的關鍵元件、版本以及傳播層級,這對於研究漏洞在軟體供應鏈中的傳播態勢、傳播特點以及如何在關鍵節點上進行漏洞阻斷和修復具有重要的意義。下文以Log4j2和Spring兩個漏洞為例展示分析結果。

層級影響力

“涅槃”系統中將元件依賴關係(包含直接依賴和間接依賴)以傳播距離進行分層抽象,定義了“層級影響力”,並對所有版本的直接依賴和間接依賴關係進行提取,從根節點開始自上而下逐層分析,清晰呈現了每一級的元件版本數和逐層變化的層級影響力。

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖3 Log4j-core元件層級依賴圖

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖4 Spring-core元件層級依賴圖

圖3、圖4分別展示了Log4j和Spring的元件層級依賴。從圖中可以看出:

● Log4j和Spring元件影響超過百萬元件版本,影響範圍較廣;

● 大多數依賴都集中於五層以內,說明對Log4j和Spring元件的引用層次較淺,程式碼路徑短,因此二者曝出的漏洞極易被觸發;

● 由於淺層依賴較多,有利於漏洞修復,當部分元件漏洞修復之後,其餘元件可以靈活地進行依賴調整,選擇最新版本進行漏洞規避。

傳播影響力

“涅槃”系統把元件所輻射到的直接和間接依賴的元件、版本數量定義為“傳播影響力”。

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖5 Log4j-core依賴元件傳播影響力分佈圖

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖6 Spring-core依賴元件傳播影響力分佈圖

圖5、圖6分別展示了Log4j和Spring的元件依賴傳播影響力分佈圖,其中標明瞭傳播影響力排名前30的元件名稱。從圖5、圖6可以看出:

● 在依賴Log4j-core的元件中,影響力權重最大的前三個元件是Netty-common,Netty-buffer,Netty-transport。

● 在依賴Spring-core的元件中,影響力權重最大的前三個元件是Spring-beans,Spring-context,Spring-expression;

● 權重較大的元件之間存在相互依賴,組成了重要的傳播鏈,進一步擴大了漏洞的傳播影響力;

● 傳播影響力排名靠前的關鍵元件是進一步擴大漏洞傳播影響力的關鍵所在,其修復狀態在生態中也至關重要。

修復全景展示

“涅槃”統計了截止到2022年5月份Log4j-core漏洞傳播影響力覆蓋到的所有依賴資料,從中篩選出各元件的最新版本及其依賴路徑,共計超過8萬個節點和10萬條邊,並對Lo4j-core的53個版本分別著色,形成了Log4j-core最新元件依賴網修復全景圖,如圖7所示。

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖7 Log4j-core最新元件依賴網修復全景圖

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖8 Spring-core最新元件依賴網修復全景圖

“涅槃”系統對Spring漏洞的修復現狀也做了同樣的統計分析,如圖8所示,共計9。7萬個節點和16萬條邊,覆蓋了Spring-core的全部版本。圖中冷色系(青、藍、綠等)表示已修復版本,只有少量顯示,可見由於Spring漏洞爆發時間尚短,目前整個Spring-core軟體供應鏈中大部分元件仍未被修復。

修復比例分析

為了直觀的展示漏洞的修復速度,“涅槃”統計了從2021年12月10日至2022年5月5日所有直接依賴於Log4j-core各個版本的最新元件數量的動態變化,計算出了各個時期直接依賴元件的修復比例,如圖9所示。其中,紅色系為受漏洞影響的版本,綠色系為修復版本,從動圖中可以看出,紅色系版本的比例不斷縮小,嘗試修復漏洞的綠色系版本不斷增加,截止今年5月5日,修復版本佔總體直接依賴數量比例為29%,依然有71%的直接依賴未被修復。

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖9 Log4j-core直接依賴元件修復比例變化動圖

由於Spring版本眾多,“涅槃”將部分版本分割槽間進行了合併,統計了從2022年3月29日至5月5日之間,所有直接依賴於Spring-core各個版本的最新元件數量的動態變化,計算出各個時期直接依賴元件的修復比例,如圖10所示。截止今年5月5日,修復版本佔總體直接依賴數量比例已經達到了15%,說明軟體供應鏈安全日益被開發者所關注,在漏洞發生之後很短時間就能迅速作出修復,但依然有85%的依賴未進行修復。

Java語言生態漏洞影響力與修復分析丨軟體供應鏈安全的“涅槃”

圖10 Spring-core直接依賴元件修復比例變化動圖

4

結 語

本文初步展示了“涅槃”系統對Java語言生態的軟體供應鏈安全分析,包含對整個生態的全景依賴分析和展示,揭示出Java語言生態中影響力最大的元件,為後續安全防護工作指明瞭重點方向。

“涅槃”系統對兩個影響力較大的Java漏洞進行分析,量化了漏洞在Java語言生態軟體供應鏈中的傳播和影響範圍,提出了評估漏洞對生態危害的新型指標,為漏洞影響力評價和軟體供應鏈安全預警提供了依據。同時“涅槃”系統對軟體供應鏈漏洞的修復進行了持續的跟進,並從層級影響力和傳播影響力方面給出了漏洞修復的優先順序依據,對加快漏洞修復、提升整個生態軟體供應鏈安全具有重要意義。

“涅槃”系統目前可對Java、Rust、Go等程式語言進行供應鏈元件依賴分析,漏洞傳播分析與預警,漏洞修復追蹤;後續擬擴充套件覆蓋所有主流程式語言,定期釋出程式碼資料集和漏洞資料集;對語言生態供應鏈依賴進行分析,釋出語言生態安全性分析報告;同時釋出軟體供應鏈漏洞預警系統,對基礎軟體、關鍵行業進行供應鏈漏洞預警,為提升國內軟體供應鏈安全水平貢獻力量。

團隊介紹

浙大網安軟體供應鏈安全課題組,由任奎教授帶領,申文博、常瑞等教授為骨幹,以保護軟體供應鏈安全為宗旨,聚焦多種語言生態和多個關鍵垂直領域軟體供應鏈安全問題,提出全棧式供應鏈安全防護方案,助力提升軟體供應鏈安全。

團隊成員包含多名教授和數十名博士、碩士研究生,研究成果覆蓋軟體供應鏈各個層次,包含硬體、作業系統、軟體,已發表計算機安全頂會論文20餘篇。多項研究成果被應用於超過億部裝置,並獲得人民日報專題報道。