《电子技术应用》
您所在的位置:首页 > 模拟设计 > 设计应用 > 融合注意力机制和Child-Sum Tree-LSTM的二进制代码相似性检测
融合注意力机制和Child-Sum Tree-LSTM的二进制代码相似性检测
网络安全与数据治理 11期
李涛,王金双
(中国人民解放军陆军工程大学指挥控制工程学院,江苏南京210007)
摘要: 抽象语法树是一种代码的树型表示,它保留了代码中定义良好的语句组件、语句的显式顺序和执行逻辑。包含丰富语义信息的抽象语法树可以在二进制分析时通过反编译生成,并且已经作为代码特征应用于二进制代码相似度检测。抽象语法树中不同类别的节点承载着不同的语义信息,对整棵树的语义具有不同的贡献程度。然而现有的二进制代码相似度检测方法所用神经网络无法对抽象语法树节点进行重要性区分,影响了模型的训练效果。针对该问题,提出了一种融合注意力机制和Child-Sum Tree-LSTM神经网络的跨指令集、跨代码混淆二进制代码相似性检测方法。首先使用二进制分析工具IDA Pro对二进制代码反编译提取架构无关的抽象语法树特征,并利用随机采样构造训练样本对。然后使用抽象语法树训练样本对训练融合注意力机制和Child-Sum Tree-LSTM的神经网络模型。在公开数据集BINKIT上的实验表明,所提方法的AUC和Accuracy指标分别为94.1%、66.2%,优于Child-Sum Tree-LSTM算法。
中图分类号:TP315
文献标识码:ADOI:10.19358/j.issn.2097-1788.2023.11.002
引用格式:李涛,王金双.融合注意力机制和Child-Sum Tree-LSTM的二进制代码相似性检测[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引言

代码复用在软件开发过程中非常普遍。大量代码和库被复用到多个体系架构的二进制文件中,其中存在的一些脆弱代码可能会导致安全隐患。二进制代码相似性检测技术可以评估两个或者多个二进制代码间的相似性和差异性,被广泛应用于漏洞发现[1-2]、代码剽窃检测[3]、恶意软件检测[4]等领域。

二进制代码相似性检测的任务是寻找与给定查询二进制函数func最相似的目标函数func′。根据检测对象的不同,主要分为以下两种类型:(1)一对一比较:直接计算两段二进制代码之间的相似性。这种方法通常需要设置一个合适的阈值,阈值的选择将直接影响检测的准确度。(2)一对多比较。该场景将一个源函数与目标函数池中的函数进行相似度评分并排序。目标函数的排序越靠前,说明模型对于函数语义的区分度越好。

编译选项的差异(如编译优化O0-O3、-fno-inline选项等)、代码混淆技术(如Obfuscator-LLVM[5])的使用给研究人员提取二进制代码语义带来了诸多挑战。

基于深度学习的二进制代码相似度检测方法可以自动化地提取代码语义,从而避免了人工分析可能引入的偏差。常用的神经网络主要有两类:(1)使用处理结构特征的图神经网络,如Structure2Vec[6]、GCN[7]等;(2)使用处理文本序列的神经网络,如LSTM(Long Short Term Memory)[8]、Transformer[9]等。

Genius[10]结合基本块语法特征和控制流图(Control Flow Graph,CFG)生成属性控制流图用于相似性检测,之后的Gemini[11]、VulSeeker[1]等均使用了类似的思想。

在二进制代码相似度检测领域,Luo等人[12]利用LSTM和孪生网络学习汇编代码的语义表示。Asm2vec[13]使用PV-DM[14]模型学习函数和指令符号的嵌入。jTrans[15]在文献[16]预训练任务的基础上,将控制流信息融入预训练任务,取得了较好的效果。但是这些方法无法适用于跨指令集架构的检测场景。

观察来自库findutils中的closs_stream函数,如图1所示,在保持编译配置相同(编译器Clang70,编译优化O0,其他编译器选项相同)的情况下,不同指令集架构(x86和ARM)二进制代码间的CFG具有一定的差异,而其二进制代码对应的AST特征则只出现了一个节点的差异。

Tai[17]等人提出了两种Tree-LSTM网络(Child-Sum Tree-LSTM和N-ary Tree-LSTM)用于处理自然语言处理领域的结构化数据,其在情感分类和语义相关任务中的性能优于普通LSTM。其中,N-ary Tree-LSTM适合于二叉树,而Child-Sum Tree-LSTM适用于多孩子的无序树,并且具有更高的计算效率。

在此工作的基础上,Yang等人[18]提出了一种基于AST编码的跨指令集架构的检测方法Asteria。通过提取二进制函数的AST作为跨指令集架构的二进制特征来源,并利用能够处理树形数据的Tree-LSTM网络学习二进制代码的AST语义嵌入。但是原生Tree-LSTM难以捕获子节点对整棵树的语义贡献度,影响训练精度。

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

图1二进制代码的CFG和AST特征对比

(bigram工程closs_stream函数O0优化)

AST的节点代表了代码中的表达式或语句,不同种类的节点承载着不同的信息量。然而Child-Sum Tree-LSTM对子节点隐藏状态累加以表示父节点,未能考虑不同类别AST节点对整棵树特征表示的贡献程度。例如,AST中包含的num等节点通常和expr、block等节点具有一定的从属关系,并且通常在树中处于不同的位置。进行节点向量传播的过程中应当对这些节点的语义信息对进行重要性区分,使得在模型训练过程中节点对整棵AST提供适当的语义贡献度。

本文提出了一种融合注意力机制和Child-Sum Tree-LSTM的二进制代码相似性检测方法。首先使用二进制分析工具IDA Pro对二进制文件进行反编译提取AST作为特征来源,输入到融合注意力机制的Child-Sum Tree-LSTM神经网络中进行训练,最后通过实验表现验证本方法的有效性。所提方法可用于跨指令集架构、跨代码混淆、跨编译优化等级等多种二进制代码相似性检测场景。


本文下载请点击:融合注意力机制和Child-Sum Tree-LSTM的二进制代码相似性检测AET-电子技术应用-最丰富的电子设计资源平台 (chinaaet.com)


作者信息:

李涛,王金双

 (人民解放军陆军工程大学指挥控制工程学院,江苏南京210007)中国


电子技术应用微店二维码.jpg


此内容为AET网站原创,未经授权禁止转载。