預測功能性漏洞利用
簡介
該文為發表于USENIX 2021的Expected Exploitability: Predicting the Development of Functional Vulnerability Exploits。眾所周知,武器化的漏洞利用程序會對網絡安全造成巨大破壞,也因此網絡安全行業將這種通過利用軟件漏洞自動傳播的惡意軟件視為主要的網絡攻擊威脅之一。目前評估軟件漏洞的可利用性仍然是一件困難且容易出錯的任務,現有漏洞可利用性的評價指標往往存在不完善、不準確的問題。在本篇論文中,作者建立了一個稱為“預期可利用性”的指標來改善這一情況。這一指標隨著時間的推移不斷預測開發功能性漏洞利用的可能性,以此幫助研究人員發現哪些漏洞應該得到優先關注。
方法
作者首先定義了其預測目標:功能性漏洞利用。該概念是漏洞PoC的一種延續,其能夠達到漏洞規定的全部安全影響。同時作者也指出雖然功能性漏洞利用更加容易用于現實世界的攻擊,但其仍然受到漏洞本身以外因素(例如攻擊者選擇、修補延遲)的影響。因此,為了依照這個概念對數據集進行標注,本文的思路是從IBM X-Force Exchange威脅情報共享平臺和Tenable Nessus漏洞掃描器中提取Temporal CVSS中的可利用性指標。再從Metasploit、Canvas等滲透工具中找到可利用的漏洞。最后,作者從Bugtraq、Skybox、AlienVault OTX等論壇通過NLP手段提取在野利用信息作為存在功能性漏洞利用的證據。綜合上述多種途徑,最后確定了32093個漏洞含有功能性漏洞利用。
在得到ground truth之后,作者主要對其特征選擇上的創新點進行詳細闡述。整體結構如下圖所示,除了提取漏洞報告和NVD數據的特征,還創新性的提取PoC代碼特征和文字特征。

直覺上,作者認為PoC復雜性是決定功能性漏洞利用復雜性的主要指標之一。因為如果觸發漏洞需要復雜的PoC,那么功能性漏洞利用的代碼也一定很復雜。另一方面,已存在復雜的PoC在一定程度上有利于開發功能性漏洞利用。因此,本文通過將代碼轉換為抽象語法樹的方法,從中提取能標志PoC復雜度的特征,例如節點類型的統計信息、樹的結構特征,以及程序內控制語句的統計信息以及它們之間的關系。此外,本文還提取PoC中的調用外部庫函數的特征。作者還從AST中提取圈復雜度,用于表征程序中獨立代碼路徑的數量。除了AST相關的特征,本文以文件大小和語言保留關鍵字分布的統計形式對PoC編程語言進行表征。還引入NLP處理技術,使用一組二進制unigram特征捕捉代碼、描述性文字和注釋中的文本信息。這些特定信息(例如漏洞作者名字)能夠使分類器捕獲漏洞利用程序的風格特征。具體特征選擇情況如下圖所示,可以看到選取特征的數量相當可觀。

最后對于分類器的選擇,作者并未在此多做糾結,選擇了基礎的兩層前饋神經網絡輔以ReLU激活函數作為分類模型使用,并針對多種損失函數進行較為詳盡的測試。
實驗
在實驗階段,作者首先針對特征中存在噪聲的問題對多種損失函數進行了測試。結果表明,作者改進得到的特征前向校準(FFC)損失函數能夠有效改善由特征噪聲帶來的分類器性能下降問題。

之后,作者設計實驗證明了其特征選擇的優越性。如下圖所示,使用PoC代碼特征和PoC文字特征了分類器能夠取得更好的效果。并且,融合NVD和漏洞報告特征也能有效提高分類器的準確率。

