摘要:TDSC 2022發表了安全補丁識別最新的方案“Enhancing Security Patch Identification by Capturing Structures in Commits” (E-SPI),
本文分享自華為云社區《【論文推薦】TDSC2022 安全補丁識別最新的方案E-SPI》,作者: 華為云軟體分析Lab,
TDSC 2022發表了安全補丁識別最新的方案“Enhancing Security Patch Identification by Capturing Structures in Commits” (E-SPI),該方案同時考慮代碼提交的Message和Changed Code的拓撲特征,通過實驗表明,該方案超過了當前業界的SOTA,達到業界領先,
1. 背景知識
根據《2021年開源安全與風險分析報告》統計,平均每個代碼倉含158個安全漏洞,84%的代碼倉都至少存在1個安全漏洞,相比20年,21年高風險漏洞環比增長了11%,開源軟體帶來便利的同時,也引入了潛在的安全風險,大多數軟體漏洞都在公開源組件被靜默修復,這就導致集成它們的已部署軟體無法及時更新,鑒于此,如何高效的識別開源組件的安全補丁成為學術界一個熱門的問題,
最近幾年,隨著深度學習的飛速發展,基于深度學習的安全補丁識別模型快速提升了安全補丁識別模型的有效性,但是,目前大多數現有的安全補丁識別方案直接把代碼提交修改的代碼、提交資訊當成Token,忽略了代碼的結構資訊,這篇文章提出了E-SPI模型,有效的利用了隱藏在提交中的結構資訊,進一步提升識別模型的效果,
2. E-SPI模型架構
E-SPI整體的架構入上圖所示,該方案分別對代碼提交中的代碼修改以及提交資訊進行Embedding,最終聯合兩者的特征,來識別安全補丁,
代碼修改編碼器:對于代碼提交中代碼修改,該方案首先抽取代碼修改前的函式Pre-function 和代碼修改后的函式Post-function ;接著對著兩個函式進行AST決議,為了適配序列模型的輸入,該方案創新的提出了AST Path提取方法,將、對應AST的圖轉換成兩類AST Paths:Within-context paths、Within-changes paths,其中Within-context paths代表AST樹上開始的節點在修改代碼中,結束節點不在修改的代碼中的路徑,Within-changes path代表AST樹上開始和結束都在修改代碼中的路徑;最終以1:1的比例隨機分別選取K個Within-context paths 和Within-context paths,來表征代碼修改,輸入Bi-LSTM完成代碼修改的Embedding,
提交資訊編碼器:對于代碼提交中的提交資訊,該方案將原始的自言語言進行Dependency Graph決議,從而獲取自言語言的依賴關系,針對該圖結構,使用Gated Graph Neural Network完成編碼,
3. 結果
為了對比,這篇文章選取了學術界7個典型的安全補丁識別演算法,這些模型主要的特征以及架構如下
首先,這篇文章從整體上對所有的模型進行了比較,結果(見下圖)顯示E-SPI達到了SOTA,這表明,相對其他的方案,E-SPI能更好的對代碼提交進行建模,通過進一步觀察發現,代碼提交資訊是安全補丁識別問題的重要特征,加入提交資訊的模型(Stacking、PatchRNN、SPI、Transformer、E-SPI)顯著比沒有加入代碼提交資訊的模型(Commit2Vec、VulFixMiner)要好,即使架構最簡單的Stacking模型(添加了代碼提交資訊特征)也比只使用修改代碼的模型Commit2Vec,VulFixMiner結果要好;另外可以發現,在特征相同的情況下,Transformer-Based的模型(Transformer)反而沒有BiLSTM-Based的模型(PatchRNN,SPI,E-SPI)結果好,這有可能是樣本不足,導致Transformer-Based模型訓練不充分,
為了進一步比較不同模型對代碼的建模能力,該篇文章在只使用代碼修改作為特征的前提下,也對不同模型進行了比較,結果見下圖,結果顯示Transformer-Based的模型(Transformer)對代碼的建模能力會顯著優于其他的架構模型(PatchRNN、SPI、Commit2vec、E-SPI w/o changes、E-SPI w/o context);另外我們可以發現AST Paths在代碼特征建模有顯著的增益,這就導致,在整體上E-SPI對代碼的建模能力依然超過了Transformer模型,
文章來自:PaaS技術創新Lab,PaaS技術創新Lab隸屬于華為云,致力于綜合利用軟體分析、資料挖掘、機器學習等技術,為軟體研發人員提供下一代智能研發工具服務的核心引擎和智慧大腦,我們將聚焦軟體工程領域硬核能力,不斷構筑研發利器,持續交付高價值商業特性!加入我們,一起開創研發新“境界”!
PaaS技術創新Lab主頁鏈接:https://www.huaweicloud.com/lab/paas/home.html
相關文獻:
【1】Enhancing Security Patch Identification by Capturing Structures in Commits,
論文地址:https://arxiv.org/pdf/2207.09022.pdf
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/540411.html
標籤:其他
