文獻標識碼:ADOI:10.19358/j.issn.2097-1788.2023.11.002
引用格式:李濤,,王金雙.融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測[J].網(wǎng)絡安全與數(shù)據(jù)治理,,2023,42(11):8-14,34.
0引言
代碼復用在軟件開發(fā)過程中非常普遍。大量代碼和庫被復用到多個體系架構的二進制文件中,,其中存在的一些脆弱代碼可能會導致安全隱患,。二進制代碼相似性檢測技術可以評估兩個或者多個二進制代碼間的相似性和差異性,被廣泛應用于漏洞發(fā)現(xiàn)[1-2],、代碼剽竊檢測[3],、惡意軟件檢測[4]等領域,。
二進制代碼相似性檢測的任務是尋找與給定查詢二進制函數(shù)func最相似的目標函數(shù)func′。根據(jù)檢測對象的不同,,主要分為以下兩種類型:(1)一對一比較:直接計算兩段二進制代碼之間的相似性,。這種方法通常需要設置一個合適的閾值,閾值的選擇將直接影響檢測的準確度,。(2)一對多比較,。該場景將一個源函數(shù)與目標函數(shù)池中的函數(shù)進行相似度評分并排序。目標函數(shù)的排序越靠前,,說明模型對于函數(shù)語義的區(qū)分度越好,。
編譯選項的差異(如編譯優(yōu)化O0-O3、-fno-inline選項等),、代碼混淆技術(如Obfuscator-LLVM[5])的使用給研究人員提取二進制代碼語義帶來了諸多挑戰(zhàn),。
基于深度學習的二進制代碼相似度檢測方法可以自動化地提取代碼語義,從而避免了人工分析可能引入的偏差,。常用的神經(jīng)網(wǎng)絡主要有兩類:(1)使用處理結(jié)構特征的圖神經(jīng)網(wǎng)絡,,如Structure2Vec[6]、GCN[7]等,;(2)使用處理文本序列的神經(jīng)網(wǎng)絡,,如LSTM(Long Short Term Memory)[8]、Transformer[9]等,。
Genius[10]結(jié)合基本塊語法特征和控制流圖(Control Flow Graph,,CFG)生成屬性控制流圖用于相似性檢測,之后的Gemini[11],、VulSeeker[1]等均使用了類似的思想,。
在二進制代碼相似度檢測領域,Luo等人[12]利用LSTM和孿生網(wǎng)絡學習匯編代碼的語義表示,。Asm2vec[13]使用PV-DM[14]模型學習函數(shù)和指令符號的嵌入,。jTrans[15]在文獻[16]預訓練任務的基礎上,將控制流信息融入預訓練任務,,取得了較好的效果,。但是這些方法無法適用于跨指令集架構的檢測場景。
觀察來自庫findutils中的closs_stream函數(shù),,如圖1所示,,在保持編譯配置相同(編譯器Clang70,,編譯優(yōu)化O0,,其他編譯器選項相同)的情況下,不同指令集架構(x86和ARM)二進制代碼間的CFG具有一定的差異,,而其二進制代碼對應的AST特征則只出現(xiàn)了一個節(jié)點的差異,。
Tai[17]等人提出了兩種Tree-LSTM網(wǎng)絡(Child-Sum Tree-LSTM和N-ary Tree-LSTM)用于處理自然語言處理領域的結(jié)構化數(shù)據(jù),,其在情感分類和語義相關任務中的性能優(yōu)于普通LSTM。其中,,N-ary Tree-LSTM適合于二叉樹,,而Child-Sum Tree-LSTM適用于多孩子的無序樹,并且具有更高的計算效率,。
在此工作的基礎上,,Yang等人[18]提出了一種基于AST編碼的跨指令集架構的檢測方法Asteria。通過提取二進制函數(shù)的AST作為跨指令集架構的二進制特征來源,,并利用能夠處理樹形數(shù)據(jù)的Tree-LSTM網(wǎng)絡學習二進制代碼的AST語義嵌入,。但是原生Tree-LSTM難以捕獲子節(jié)點對整棵樹的語義貢獻度,影響訓練精度,。
圖1二進制代碼的CFG和AST特征對比
(bigram工程closs_stream函數(shù)O0優(yōu)化)
AST的節(jié)點代表了代碼中的表達式或語句,,不同種類的節(jié)點承載著不同的信息量。然而Child-Sum Tree-LSTM對子節(jié)點隱藏狀態(tài)累加以表示父節(jié)點,,未能考慮不同類別AST節(jié)點對整棵樹特征表示的貢獻程度,。例如,AST中包含的num等節(jié)點通常和expr,、block等節(jié)點具有一定的從屬關系,,并且通常在樹中處于不同的位置。進行節(jié)點向量傳播的過程中應當對這些節(jié)點的語義信息對進行重要性區(qū)分,,使得在模型訓練過程中節(jié)點對整棵AST提供適當?shù)恼Z義貢獻度,。
本文提出了一種融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測方法。首先使用二進制分析工具IDA Pro對二進制文件進行反編譯提取AST作為特征來源,,輸入到融合注意力機制的Child-Sum Tree-LSTM神經(jīng)網(wǎng)絡中進行訓練,,最后通過實驗表現(xiàn)驗證本方法的有效性。所提方法可用于跨指令集架構,、跨代碼混淆,、跨編譯優(yōu)化等級等多種二進制代碼相似性檢測場景。
本文下載請點擊:融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測AET-電子技術應用-最豐富的電子設計資源平臺 (chinaaet.com)
作者信息:
李濤,,王金雙
(人民解放軍陸軍工程大學指揮控制工程學院,,江蘇南京210007)中國