PDGraph:針對不安全項目依賴的大規模實證研究
VSole2022-07-25 18:50:54

簡介
代碼重用可能帶來潛在的安全問題,不同的軟件項目可能同時由相互依賴的重用組件引入漏洞。論文通過構建一個項目依賴關系圖PDGraph,對項目依賴關系與安全漏洞進行了首次大規模實證研究。
挑戰
- 項目的構建文件只提供分離的依賴關系,需要遍歷項目重用庫中的構建文件才能獲得完整的依賴關系。
- 解決:將依賴關系分為 Full/Whole Dataset (Maven) 和 Partial Dataset (GitHub) 兩類
- 如何整合不同來源數據集(NVD、Maven、GitHub)的信息來判斷項目是否存在漏洞。
- 解決:對漏洞信息和項目依賴間的一致性進行了量化
方法
A.數據收集
- 依賴關系
- Maven:解析pom.xml建立有向邊
- GitHub:針對Java、Ruby、Python、.NET、JavaScript五種語言不同的依賴聲明文件,借助API爬取依賴聲明文件。將GitHub數據集分為三類:A類(涉及漏洞的項目)、B類(直接使用A類項目庫的項目)、C類(間接使用A類項目庫的項目)
- 關聯漏洞
- 相似度匹配:統計文本特征提取相關詞,使用Levenshtein距離計算Maven、GitHub項目描述和CPE間相似度。
- URL:比較NVD漏洞報告中的url與Maven、GitHub項目的url。
- 第三方數據:Advisory database、CVE、 manually-curated dataset。

B. 構建項目依賴圖
- 定義四項指標評估依賴風險:依賴項目數量、依賴該項目的項目數量、依賴路徑長度、循環依賴。
- 生成依賴圖,通過SCC簡化PDGraph,利用MFAS保證局部圖的層次結構,然后對于每個SCC生成有向無環圖DAG.
- 檢測不安全的邊:正則匹配依賴關系邊緣中的需求版本和漏洞版本。
實驗
數據集:
不安全邊發現:
總結
論文構建了第一個針對安全漏洞的項目依賴圖,發現了大量由于項目依賴而引入的不安全邊,可以為代碼審計、防御代碼重用攻擊等提供幫助。但仍存在一些不足:
- PDGraph基于項目構建文件創建,可能存在人為錯誤
- PDGraph目前不支持構建C和C++項目依賴
- 并非所有漏洞都是可傳遞的,現有的不安全邊可能存在誤報
- 定義的四項依賴風險評估指標有待完善
VSole
網絡安全專家