压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

可解釋的多粒度漏洞檢測系統mVulPreter

由于深度學習模型強大的建模能力,基于深度學習的漏洞檢測方法近年來取得了顯著發展。然而,目前基于深度學習的方法幾乎僅專注于單一粒度的漏洞檢測(函數級或切片級)。事實上,切片級別的漏洞檢測方法雖然檢測粒度細,但切片難以覆蓋完整的漏洞特征,導致模型難以學習到全面的漏洞特征;而函數級別的方法雖然樣本包含較為完整漏洞特征,但同時會引入過多漏洞無關的噪聲語句,導致模型的檢測效果不夠理想。同時,已有方法更關注樣本是否存在漏洞而無法輸出具體的漏洞語句,即檢測結果的解釋。為此,論文提出了一種多粒度的可解釋漏洞檢測方法。該方法有效融合了函數級和切片級漏洞檢測方法的優點,并能夠依靠檢測模型本身輸出對于檢測結果的解釋。在真實漏洞數據集上的實驗結果表明,該方法的檢測效果高于SySeVR和Devign等7個漏洞檢測工具,此外,其解釋效果在準確率和時間開銷方面均優于GNNExplainer 和PGExplainer這2種通用的圖神經網絡解釋器。此外,mVulPreter掃描8個開源軟件并發現了28個真實世界的漏洞,證明了mVulPreter具有在真實世界中檢測漏洞的能力。

該成果“mVulPreter: A Multi-granularity Vulnerability Detection System with Interpretations”發表在國際期刊IEEE Transactions on Dependable and Secure Computing (TDSC)。TDSC期刊每年出版6期,主要關注計算機及網絡安全、可信計算等領域的前沿研究,2021年影響因子是7.329,屬于中國計算機學會CCF A類期刊。

  • 論文鏈接:https://ieeexplore.ieee.org/document/9864301
  • 代碼鏈接:https://github.com/tao7777/mVulPreter

背景與動機

由于深度學習強大的建模和學習能力,已經受到廣泛關注。因此,安全研究人員將它們應用于漏洞檢測領域。根據模型處理的代碼粒度,目前基于深度學習的漏洞檢測方法可以分為兩大類,即函數級和切片級。針對函數級漏洞檢測,一個完整的函數被標注并作為訓練樣本使用;針對切片級漏洞檢測,訓練樣本是以經常引入漏洞的漏洞關注點(即,敏感API、指針使用、數組使用和整數使用)為程序切片的起點,根據程序依賴分析的結果生成。事實上,一個有漏洞的函數可以涵蓋完整的漏洞特征,但會引入了許多與漏洞無關的語句。與函數相比,切片可以更好地捕捉到噪音較小的漏洞特征。然而,切片執行的起點是漏洞的根本原因(root cause),所以并不能保證切片能覆蓋漏洞的觸發位置。因此,有漏洞的切片中可能會缺失必要的漏洞特征。此外,現有的基于深度學習的漏洞檢測方法大多不能解釋漏洞檢測的結果。他們僅關注待測代碼是否存在漏洞,但不能準確地指出哪一行代碼更有可能是漏洞語句。

設計與實現

針對上述問題,本文的目標是將切片級細粒度漏洞語義與函數級完整漏洞語義的優勢結合起來,構建一個準確且可解釋的漏洞檢測器mVulPreter。具體來說,我們主要面對兩個挑戰:

①如何結合切片級和函數級漏洞檢測的優勢以降低漏報和誤報?

②如何對漏洞檢測的結果進行細粒度解釋?

為了解決上述挑戰,mVulPreter的基本思想是針對同樣的輸入數據,同時訓練兩個函數級和切片級的漏洞檢測模型。其中,切片級模型負責提供一個函數內每個切片的預測概率,從而幫助過濾漏洞無關語義,而函數級模型則負責對已凈化語義的函數的檢測。此外,切片級和函數級模型均能夠為漏洞解釋做出貢獻。具體而言,為了解決第一個挑戰,mVulPreter根據切片級的漏洞檢測模型對切片的預測概率實現對函數語義的凈化,從而實現更準確的函數級漏洞檢測;為了解決第二個挑戰,結合函數級模型中注意力機制對切片的權重預測和切片級漏洞檢測模型對切片的預測概率,得到每一代碼行的重要性分數,從而完成對檢測結果的解釋。

圖1 mVulpreter的具體運行實例

mVulPreter的結構框架如圖1所示,其輸入是待測函數的源代碼,輸出是檢測結果和關鍵的漏洞語句(即,漏洞檢測結果的解釋)。在提取函數的圖表征之前,我們首先對源代碼進行預處理。首先進行代碼的規范化,mVulPreter采用三個等級的規范化方法,使其能夠抵御常見的代碼修改帶來的干擾,也同時保留程序語義。圖1中的步驟1-3說明了一個函數的詳細規范化過程。針對規范化后的代碼,我們使用靜態分析工具Joern提取其程序依賴圖(PDG)。

為了凈化函數內與漏洞無關的語義,我們采用了一個切片級的漏洞檢測模型過濾掉對于函數漏洞檢測結果貢獻較小的切片。首先,我們生成切片數據從而完成對切片級模型的訓練和測試。具體地,給定一個函數,我們以四類漏洞關注點為切片執行的起始點,分別執行前向和后向切片(即,數據和控制依賴分析)。例如,在圖1中*data(指針類型),dataBuffer(數組類型),dest(數組),和strncat(敏感API)被識別為漏洞關注點,并分別生成圖1中的切片S1-S4。對于以上切片,我們對其分別進行節點嵌入和切片嵌入。其中,節點嵌入是為了將節點中的代碼嵌入為向量表示。我們采用預訓練的Sent2Vec依次對每個節點中的語句進行嵌入。切片嵌入的目的在于刻畫切片的圖結構,因此我們采用Gated Graph Recurrent Network (GGNN)對切片進一步實現切片嵌入。我們使用該向量進行切片級漏洞檢測模型的訓練和預測,其輸出為切片為有漏洞的預測概率。函數中預測概率最低的切片可以被認為與漏洞的關聯性最小,換句話說,它們對函數級漏洞檢測的結果貢獻非常小。因此,過濾掉這些貢獻小的語義能夠減少函數內噪聲語義。具體而言,我們對函數中每個切片的預測概率進行排序,并根據設定的過濾比例(本文中設定為25%)丟棄一定比例的切片。例如,在圖1的步驟6中,我們丟棄了預測概率最低的切片S4。因此,函數中與漏洞相關度最低的語義(即,切片)被過濾,保留的部分進行下一步的函數級漏洞檢測。

最后一個階段的目標是檢測函數級漏洞并輸出解釋。我們利用一個基于注意力的GNN模型作為函數級的漏洞檢測器。其中,注意力機制能夠增強重要切片在其函數的影響力,同時能夠為函數中的每個切片分配注意力分數。我們將過濾切片后的函數(僅保留函數中與漏洞相關的切片)輸入函數級漏洞檢測模型,最終得到待測函數的檢測結果和函數中每個切片的注意力分數。最后,結合切片的注意力分數和切片級別模型輸出的預測概率,我們能夠為函數中每個切片計算出一個具體的分數。因此,每個代碼行通過累積它所屬的切片分數被賦予得分。代碼行的得分越高,它越可能是一個有漏洞的代碼行,從而完成對漏洞檢測結果的解釋。

發現與討論

在檢測有效性方面,本文在Big-Vul數據集上分別進行參數實驗并與最先進的漏洞檢測器進行對比實驗。實驗結果如圖2所示,可以看出當我們丟棄預測概率排名最后25%的切片時,mVulPreter可以達到最佳檢測性能。此時,mVulPreter的檢測效果優于Checkmarx、FlawFinder、RATS、TokenCNN、StatementLSTM、SySeVR和Devign,如圖3所示。結果說明過濾掉函數中與漏洞無關的語義能夠有效提升模型的檢測效果。

圖2 mVulpreter在不同切片過濾比例下的檢測性能

圖3 對比實驗結果

在解釋效果方面,我們關注mVulPreter和兩個常用的GNN解釋器(GNNExplainer和PGExplainer)的準確性和時間性能。我們通過解釋結果中是否包含了漏洞補丁的修改語句來評估解釋結果的準確性。此外,我們從數據集中隨機選擇500個函數進行解釋器時間開銷的評估。實驗結果如表1所示,可以看出mVulPreter解釋的有效性和運行效率都超過了對比解釋器。就效率而言,mVulPreter的運行時間明顯少于這兩個比較工具。因為GNNExplainer必須對每個解釋的實例進行重新訓練,所以在解釋大量的節點時耗時巨大。相比之下,PGExplainer一次性針對全部訓練數據進行模型訓練,因此,它比GNNExplainer花費的時間更少。然而,mVulPreter不是一個額外的解釋器,它不需要任何高開銷的訓練過程,而僅需要對每個切片注意力和預測概率進行簡單的算術運算就可以得到解釋結果,因此解釋耗時很短。

表1 漏洞解釋方法的準確性和時間開銷實驗結果

此外,我們進行了一個案例研究,以檢驗mVulPreter在現實世界中發現漏洞的實用性。具體來說,我們下載了四個常用的開源軟件作為待測目標:Libav、Xen、Openssl和Thun-derbird。mVulPreter總共掃描函數635,451個,總代碼數超過2500萬行。mVulPreter的檢測時長為92.9分鐘,共檢測到17個1-day漏洞和11個0-day漏洞,如表2所示。

表2 mVulPreter檢測到的真實軟件漏洞

詳細內容請參見:

Deqing Zou, Yutao Hu, Wenke Li, Yueming Wu, Haojun Zhao, and Hai Jin. mVulPreter: A Multi-granularity Vulnerability Detection System with Interpretations. IEEE Transactions on Dependable and Secure Computing, 2022.

https://ieeexplore.ieee.org/document/9864301

來源:穿過叢林

上一篇:360發布ISC安全課、紅客社區兩大SaaS平臺,打造數字時代人才方舟

下一篇:超過4萬臺思科設備被植入后門賬號:零日漏洞攻擊,暴露即被黑