《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 融合注意力機(jī)制和Child-Sum Tree-LSTM的二進(jìn)制代碼相似性檢測(cè)
融合注意力機(jī)制和Child-Sum Tree-LSTM的二進(jìn)制代碼相似性檢測(cè)
網(wǎng)絡(luò)安全與數(shù)據(jù)治理 11期
李濤,王金雙
(中國人民解放軍陸軍工程大學(xué)指揮控制工程學(xué)院,江蘇南京210007)
摘要: 抽象語法樹是一種代碼的樹型表示,它保留了代碼中定義良好的語句組件、語句的顯式順序和執(zhí)行邏輯。包含豐富語義信息的抽象語法樹可以在二進(jìn)制分析時(shí)通過反編譯生成,并且已經(jīng)作為代碼特征應(yīng)用于二進(jìn)制代碼相似度檢測(cè)。抽象語法樹中不同類別的節(jié)點(diǎn)承載著不同的語義信息,對(duì)整棵樹的語義具有不同的貢獻(xiàn)程度。然而現(xiàn)有的二進(jìn)制代碼相似度檢測(cè)方法所用神經(jīng)網(wǎng)絡(luò)無法對(duì)抽象語法樹節(jié)點(diǎn)進(jìn)行重要性區(qū)分,影響了模型的訓(xùn)練效果。針對(duì)該問題,提出了一種融合注意力機(jī)制和Child-Sum Tree-LSTM神經(jīng)網(wǎng)絡(luò)的跨指令集、跨代碼混淆二進(jìn)制代碼相似性檢測(cè)方法。首先使用二進(jìn)制分析工具IDA Pro對(duì)二進(jìn)制代碼反編譯提取架構(gòu)無關(guān)的抽象語法樹特征,并利用隨機(jī)采樣構(gòu)造訓(xùn)練樣本對(duì)。然后使用抽象語法樹訓(xùn)練樣本對(duì)訓(xùn)練融合注意力機(jī)制和Child-Sum Tree-LSTM的神經(jīng)網(wǎng)絡(luò)模型。在公開數(shù)據(jù)集BINKIT上的實(shí)驗(yàn)表明,所提方法的AUC和Accuracy指標(biāo)分別為94.1%、66.2%,優(yōu)于Child-Sum Tree-LSTM算法。
中圖分類號(hào):TP315
文獻(xiàn)標(biāo)識(shí)碼:ADOI:10.19358/j.issn.2097-1788.2023.11.002
引用格式:李濤,王金雙.融合注意力機(jī)制和Child-Sum Tree-LSTM的二進(jìn)制代碼相似性檢測(cè)[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è)體系架構(gòu)的二進(jìn)制文件中,其中存在的一些脆弱代碼可能會(huì)導(dǎo)致安全隱患。二進(jìn)制代碼相似性檢測(cè)技術(shù)可以評(píng)估兩個(gè)或者多個(gè)二進(jìn)制代碼間的相似性和差異性,被廣泛應(yīng)用于漏洞發(fā)現(xiàn)[1-2]、代碼剽竊檢測(cè)[3]、惡意軟件檢測(cè)[4]等領(lǐng)域。

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

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

基于深度學(xué)習(xí)的二進(jìn)制代碼相似度檢測(cè)方法可以自動(dòng)化地提取代碼語義,從而避免了人工分析可能引入的偏差。常用的神經(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)生成屬性控制流圖用于相似性檢測(cè),之后的Gemini[11]、VulSeeker[1]等均使用了類似的思想。

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

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

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適用于多孩子的無序樹,并且具有更高的計(jì)算效率。

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

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

圖1二進(jìn)制代碼的CFG和AST特征對(duì)比

(bigram工程closs_stream函數(shù)O0優(yōu)化)

AST的節(jié)點(diǎn)代表了代碼中的表達(dá)式或語句,不同種類的節(jié)點(diǎn)承載著不同的信息量。然而Child-Sum Tree-LSTM對(duì)子節(jié)點(diǎn)隱藏狀態(tài)累加以表示父節(jié)點(diǎn),未能考慮不同類別AST節(jié)點(diǎn)對(duì)整棵樹特征表示的貢獻(xiàn)程度。例如,AST中包含的num等節(jié)點(diǎn)通常和expr、block等節(jié)點(diǎn)具有一定的從屬關(guān)系,并且通常在樹中處于不同的位置。進(jìn)行節(jié)點(diǎn)向量傳播的過程中應(yīng)當(dāng)對(duì)這些節(jié)點(diǎn)的語義信息對(duì)進(jìn)行重要性區(qū)分,使得在模型訓(xùn)練過程中節(jié)點(diǎn)對(duì)整棵AST提供適當(dāng)?shù)恼Z義貢獻(xiàn)度。

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


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


作者信息:

李濤,王金雙

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


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


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