《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測
融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測
網(wǎng)絡(luò)安全與數(shù)據(jù)治理 11期
李濤,王金雙
(中國人民解放軍陸軍工程大學(xué)指揮控制工程學(xué)院,江蘇南京210007)
摘要: 抽象語法樹是一種代碼的樹型表示,它保留了代碼中定義良好的語句組件、語句的顯式順序和執(zhí)行邏輯。包含豐富語義信息的抽象語法樹可以在二進制分析時通過反編譯生成,并且已經(jīng)作為代碼特征應(yīng)用于二進制代碼相似度檢測。抽象語法樹中不同類別的節(jié)點承載著不同的語義信息,對整棵樹的語義具有不同的貢獻程度。然而現(xiàn)有的二進制代碼相似度檢測方法所用神經(jīng)網(wǎng)絡(luò)無法對抽象語法樹節(jié)點進行重要性區(qū)分,影響了模型的訓(xùn)練效果。針對該問題,提出了一種融合注意力機制和Child-Sum Tree-LSTM神經(jīng)網(wǎng)絡(luò)的跨指令集、跨代碼混淆二進制代碼相似性檢測方法。首先使用二進制分析工具IDA Pro對二進制代碼反編譯提取架構(gòu)無關(guān)的抽象語法樹特征,并利用隨機采樣構(gòu)造訓(xùn)練樣本對。然后使用抽象語法樹訓(xùn)練樣本對訓(xùn)練融合注意力機制和Child-Sum Tree-LSTM的神經(jīng)網(wǎng)絡(luò)模型。在公開數(shù)據(jù)集BINKIT上的實驗表明,所提方法的AUC和Accuracy指標(biāo)分別為94.1%、66.2%,優(yōu)于Child-Sum Tree-LSTM算法。
中圖分類號:TP315
文獻標(biāo)識碼:ADOI:10.19358/j.issn.2097-1788.2023.11.002
引用格式:李濤,王金雙.融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測[J].網(wǎng)絡(luò)安全與數(shù)據(jù)治理,2023,42(11):8-14,34.
Binary code similarity detection via attention mechanism and Child-Sum Tree-LSTM
Li Tao,Wang Jinshuang
(Command & Control Engineering College,Army Engineering University of PLA,Nanjing 210007,China)
Abstract: Abstract syntax tree (AST) is a tree representation of code, which preserves well-defined statement components, exploit order of statements, and the execution logic. AST contains rich semantic information and is easy to generate by decompiling the function during binary analysis. The AST can be utilized as a code feature for binary code similarity detection. In an AST, nodes of different types carry different semantic information and contribute differently to the overall semantics of the tree. However, the neural networks used in the existing binary code similarity detection methods are unable to differentiate the importance of AST nodes,which adversely affects the training effectiveness of the models. To address this issue, a binary code similarity detection method is proposed. The method is designed for cross-instruction set architecture and cross-obfuscation, combining attention mechanism and Child-Sum tree-structured long short-term memory networks (Tree-LSTM). Firstly, binary analysis tools IDA Pro are used to decompile the binary code and extract architecture independent AST features. Random sampling is employed to construct training binary function pairs. Secondly, the neural network model, which combines the attention mechanism and Child-Sum Tree-LSTM, is trained on the pairs of abstract syntax tree features. Evaluation results on the public dataset BINKIT show that the method achieves an AUC (Area Under the Curve) of 941% and an accuracy of 662%, outperforming the Child-Sum Tree-LSTM algorithm.
Key words : binary code; similarity detection; attention mechanism; Child-Sum Tree-LSTM

0引言

代碼復(fù)用在軟件開發(fā)過程中非常普遍。大量代碼和庫被復(fù)用到多個體系架構(gòu)的二進制文件中,其中存在的一些脆弱代碼可能會導(dǎo)致安全隱患。二進制代碼相似性檢測技術(shù)可以評估兩個或者多個二進制代碼間的相似性和差異性,被廣泛應(yīng)用于漏洞發(fā)現(xiàn)[1-2]、代碼剽竊檢測[3]、惡意軟件檢測[4]等領(lǐng)域。

二進制代碼相似性檢測的任務(wù)是尋找與給定查詢二進制函數(shù)func最相似的目標(biāo)函數(shù)func′。根據(jù)檢測對象的不同,主要分為以下兩種類型:(1)一對一比較:直接計算兩段二進制代碼之間的相似性。這種方法通常需要設(shè)置一個合適的閾值,閾值的選擇將直接影響檢測的準(zhǔn)確度。(2)一對多比較。該場景將一個源函數(shù)與目標(biāo)函數(shù)池中的函數(shù)進行相似度評分并排序。目標(biāo)函數(shù)的排序越靠前,說明模型對于函數(shù)語義的區(qū)分度越好。

編譯選項的差異(如編譯優(yōu)化O0-O3、-fno-inline選項等)、代碼混淆技術(shù)(如Obfuscator-LLVM[5])的使用給研究人員提取二進制代碼語義帶來了諸多挑戰(zhàn)。

基于深度學(xué)習(xí)的二進制代碼相似度檢測方法可以自動化地提取代碼語義,從而避免了人工分析可能引入的偏差。常用的神經(jīng)網(wǎng)絡(luò)主要有兩類:(1)使用處理結(jié)構(gòu)特征的圖神經(jīng)網(wǎng)絡(luò),如Structure2Vec[6]、GCN[7]等;(2)使用處理文本序列的神經(jīng)網(wǎng)絡(luò),如LSTM(Long Short Term Memory)[8]、Transformer[9]等。

Genius[10]結(jié)合基本塊語法特征和控制流圖(Control Flow Graph,CFG)生成屬性控制流圖用于相似性檢測,之后的Gemini[11]、VulSeeker[1]等均使用了類似的思想。

在二進制代碼相似度檢測領(lǐng)域,Luo等人[12]利用LSTM和孿生網(wǎng)絡(luò)學(xué)習(xí)匯編代碼的語義表示。Asm2vec[13]使用PV-DM[14]模型學(xué)習(xí)函數(shù)和指令符號的嵌入。jTrans[15]在文獻[16]預(yù)訓(xùn)練任務(wù)的基礎(chǔ)上,將控制流信息融入預(yù)訓(xùn)練任務(wù),取得了較好的效果。但是這些方法無法適用于跨指令集架構(gòu)的檢測場景。

觀察來自庫findutils中的closs_stream函數(shù),如圖1所示,在保持編譯配置相同(編譯器Clang70,編譯優(yōu)化O0,其他編譯器選項相同)的情況下,不同指令集架構(gòu)(x86和ARM)二進制代碼間的CFG具有一定的差異,而其二進制代碼對應(yīng)的AST特征則只出現(xiàn)了一個節(jié)點的差異。

Tai[17]等人提出了兩種Tree-LSTM網(wǎng)絡(luò)(Child-Sum Tree-LSTM和N-ary Tree-LSTM)用于處理自然語言處理領(lǐng)域的結(jié)構(gòu)化數(shù)據(jù),其在情感分類和語義相關(guān)任務(wù)中的性能優(yōu)于普通LSTM。其中,N-ary Tree-LSTM適合于二叉樹,而Child-Sum Tree-LSTM適用于多孩子的無序樹,并且具有更高的計算效率。

在此工作的基礎(chǔ)上,Yang等人[18]提出了一種基于AST編碼的跨指令集架構(gòu)的檢測方法Asteria。通過提取二進制函數(shù)的AST作為跨指令集架構(gòu)的二進制特征來源,并利用能夠處理樹形數(shù)據(jù)的Tree-LSTM網(wǎng)絡(luò)學(xué)習(xí)二進制代碼的AST語義嵌入。但是原生Tree-LSTM難以捕獲子節(jié)點對整棵樹的語義貢獻度,影響訓(xùn)練精度。

屏幕截圖 2024-01-25 110722.png

圖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é)點具有一定的從屬關(guān)系,并且通常在樹中處于不同的位置。進行節(jié)點向量傳播的過程中應(yīng)當(dāng)對這些節(jié)點的語義信息對進行重要性區(qū)分,使得在模型訓(xùn)練過程中節(jié)點對整棵AST提供適當(dāng)?shù)恼Z義貢獻度。

本文提出了一種融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測方法。首先使用二進制分析工具IDA Pro對二進制文件進行反編譯提取AST作為特征來源,輸入到融合注意力機制的Child-Sum Tree-LSTM神經(jīng)網(wǎng)絡(luò)中進行訓(xùn)練,最后通過實驗表現(xiàn)驗證本方法的有效性。所提方法可用于跨指令集架構(gòu)、跨代碼混淆、跨編譯優(yōu)化等級等多種二進制代碼相似性檢測場景。


本文下載請點擊:融合注意力機制和Child-Sum Tree-LSTM的二進制代碼相似性檢測AET-電子技術(shù)應(yīng)用-最豐富的電子設(shè)計資源平臺 (chinaaet.com)


作者信息:

李濤,王金雙

 (人民解放軍陸軍工程大學(xué)指揮控制工程學(xué)院,江蘇南京210007)中國


電子技術(shù)應(yīng)用微店二維碼.jpg


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。