基于图对比学习的二进制代码相似性检测方法及系统与存储介质转让专利

申请号 : CN202310064656.9

文献号 : CN115858002B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘玉玲张云

申请人 : 湖南大学

摘要 :

本发明提供一种基于图对比学习的二进制代码相似性检测方法及系统与存储介质,方法包括:S1、获取用于训练的二进制程序对;S2、对二进制程序对进行反汇编,并获取过程间控制流图及其指令;S3、计算基本块中指令的TF‑IDF;S4、通过图对比学习预训练图神经网络;S5、在冻结模式下,冻结预训练图神经网络的参数并训练二进制程序对匹配的分类器;S6、通过图神经网络及其分类器得到二进制程序对的相似性检测结果。本发明通过图对比学习训练图神经网络得到二进制程序的过程间控制流图的最终嵌入,其具有程序的结构表征,从而能够应对大型复杂程序的检测问题,并有效提高检测精确度,对于二进制程序安全分析有重要的基础性作用。

权利要求 :

1.一种基于图对比学习的二进制代码相似性检测方法,其特征在于,包括如下步骤:S1、获取用于训练的二进制程序对;

S2、对获取的所述二进制程序对进行反汇编,并获取其过程间控制流图ICFG及其基本块中的指令;

S3、计算所述基本块中指令的TF‑IDF;

S4、通过图对比学习预训练图神经网络;具体如下:S401、图数据增强,在不影响语义标签的情况下通过应用一定的转换创建新颖且现实合理的图数据;

S402、通过基于GNN的图编码器获得图级的向量表示;

S403、通过多层感知器MLP将增强的表示映射到另一个计算对比损失的潜在空间;

S404、通过对比损失函数强制最大化正对与负对之间的一致性;

S5、在冻结模式下,冻结预训练的所述图神经网络的参数并训练所述二进制程序对匹配的分类器;

S6、通过所述图神经网络及其分类器得到所述二进制程序对的相似的概率;

步骤S401中采用基于中心性的边扰动和基于TF‑IDF的节点丢弃对图数据进行增强,具体如下:令 表示一个图,其中 , 分别表示节点集和边集;给定 个图的数据集中的图 ,制定增强图   满足:,其中  为图数据增强;

所述基于中心性的边扰动为通过随机添加或删除预设比例的边来扰乱图的连通性;具体为以概率从原始  中采样一个修改的子集 : ,其中 , 为移除边  的概率;

移除边 的概率 定义为: ,

其中 为控制去除边的整体概率的超参数, 为 的最大值, 为平均值; 为截止概率; 的定义为: ,其中 和 分别表示节点 和节点 的中心性;

所述基于TF‑IDF的节点丢弃是指随机丢弃预设比例的顶点及其连接;具体为以概率从原始 中采样一个修改的子集 , ,其中 , 是删除节点 的概率;

当基本块中包含系统函数和库函数调用时 ,否则:,

其中 为控制删除节点的整体概率的超参数, 为 的最大值, 为平均值; 为截止概率; 的定义为: ,其中 为基本块中的 个指令的TF‑IDF值;

步骤S402中所述基于GNN的图编码器使用图同构网络GIN,其包括聚合邻居节点和计算图嵌入;其中聚合邻居节点定义为: ,上式中, 和 分别表示节点 在 和 时刻的输出, 为一个可学习参数, 为节点 的邻居节点, 为节点 在 时刻的输出;MLP代表多层感知器;

所述图嵌入的定义为: ,

上式中, 为串联, 为求和;

步骤S404中,所述正对定义为将同一个图创建的增强图,所述负对定义为不同图创建,并且使用余弦函数计算相似度;所述损失函数的定义为:,

上式中, , 为小批量中的第 个图, 为增强图的数量, 表示温度参数,为余弦相似度函数。

2.根据权利要求1所述的基于图对比学习的二进制代码相似性检测方法,其特征在于,步骤S2具体包括:针对获取的二进制程序对进行反汇编得到每个函数的控制流图CFG以及每个基本块的指令序列;所述基本块为一个最大的连续执行无跳转的指令序列;所述的控制流图CFG,其节点为一个基本块,边为控制流中的跳转;所述的过程间控制流图ICFG将控制流图CFG按照函数调用关系进行连接,即从函数调用的基本块连接到被调用函数的入口处的基本块。

3.根据权利要求1或2所述的基于图对比学习的二进制代码相似性检测方法,其特征在于,步骤S3具体包括:S301、对获取的所述基本块中的指令的操作码进行归一化,所有的基本内存地址替换为“mem”;所有的通用寄存器根据其长度进行重命名;

S302、将指令中的操作码和归一化后的操作数进行连接作为单词;

S303、将基本块的指令序列作为文章;

S304、计算每个指令的TF‑IDF值;

S305、将基本块中的每个指令按照TF‑IDF值进行降序排列。

4.根据权利要求1所述的基于图对比学习的二进制代码相似性检测方法,其特征在于,步骤S5具体包括:S501、对图神经网络的参数进行固定,使图神经网络的超参数在训练的过程中不再受反向传播的影响;

S502、使用全连接层作为二进制程序对匹配的分类器;

S503、使用标记的二进制函数对进行训练,更新分类器的参数。

5.一种基于图对比学习的二进制代码相似性检测系统,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~4中任意一项所述基于图匹配网络的二进制程序相似性检测方法的步骤。

6.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~4中任意一项所述基于图对比学习的二进制代码相似性检测方法的计算机程序。

说明书 :

基于图对比学习的二进制代码相似性检测方法及系统与存储

介质

技术领域

[0001] 本发明属于属于计算机安全领域,具体涉及一种基于图对比学习的二进制代码相似性检测方法及系统与存储介质。

背景技术

[0002] 二进制代码的相似性检测被广泛应用于计算机安全的领域中,如:Bug搜索,补丁生成和分析,恶意软件检测,恶意软件聚类以及软件盗窃检测等。特别是随着物联网的快速发展,现代的航空航天、汽车、运输和物流等行业的稳定运行越来越依赖于信息化的控制系统,其固件映像代码库中开源代码漏洞问题成为信息系统安全的重要挑战。Synopsys 2022 年开源安全与风险分析报告显示:物联网领域的被审源代码中高达92%都是开源代码组成,其中64%的物联网代码库中存在漏洞。因此,在没有相应源码的情况下对二进制代码进行相似性度量显得尤为关键和重要。
[0003] 目前传统的二进制代码相似性检测的方法存在准确性低,可伸缩性差,粒度粗糙等问题。传统方法多基于静态分析,而静态分析大多数仅考虑指令的语法,不考虑语义。并且,其图匹配算法开销巨大,且不能保证最佳匹配。动态分析虽然擅长提取代码的语义并且并且对编译器的优化和代码混淆具有良好的弹性,但是由于动态分析的性质,它们通常具有较差的可伸缩性和不完整的代码覆盖范围的问题。
[0004] 最近有研究利用机器学习来解决二进制代码的相似性问题,首先利用自然语言处理技术提取语言信息,之后利用图表示学习提取结构信息;最后将代码的语义和结构信息合并到嵌入中进行相似性度量。基于机器学习的方法拥有更高的精度以及更好的可伸缩性。如:公开号为CN113254934A的中国专利文献公开一种基于图匹配的二进制代码相似性检测方法及系统,其通过图匹配神经网络得到待测程序对的过程间控制流图ICFG 的最终嵌入以获取丰富的语义表征,从而提高检测精确率。
[0005] 尽管基于机器学习进行二进制代码相似性检测的方法具有诸多优点,但仍存在三个主要方面的局限性:1)模型的迁移性方面:目前提取结构信息的方法均使用监督方法,其与特定数据集的关联度比较高,模型缺乏通用性和可迁移性。2)缺乏可扩展性。3)存在程序级别的匹配问题。目前二进制代码相似性检测均是对基本块或函数进行相似性度量,缺少对二进制程序进行比较的方法。
[0006] 因此,亟待研发一种能解决现有技术不足的高检测精度的二进制代码相似性检测方法。

发明内容

[0007] 本发明要解决的技术问题是:针对现有技术上的不足,提供一种基于图对比学习的二进制代码相似性检测方法及系统与存储介质,通过图对比学习训练图神经网络得到二进制程序的过程间控制流图ICFG的最终嵌入,其具有程序的结构表征,从而能够应对大型复杂程序的检测问题,并且有效提高检测精确度,对于二进制程序安全分析有重要的基础性作用。
[0008] 为解决上述技术问题,本发明采用如下技术方案:
[0009] 第一方面,本发明提供一种基于图对比学习的二进制代码相似性检测方法,包括如下步骤:
[0010] S1、获取用于训练的二进制程序对;
[0011] S2、对获取的所述二进制程序对进行反汇编,并获取其过程间控制流图ICFG及其基本块中的指令;
[0012] S3、计算所述基本块中指令的TF‑IDF;
[0013] S4、通过图对比学习预训练图神经网络;
[0014] S5、在冻结模式下,冻结预训练的所述图神经网络的参数并训练所述二进制程序对匹配的分类器;
[0015] S6、通过所述图神经网络及其分类器得到所述二进制程序对的相似的概率。
[0016] 进一步地,步骤S2具体包括:
[0017] 针对获取的二进制程序对进行反汇编得到每个函数的控制流图CFG以及每个基本块的指令序列;所述基本块为一个最大的连续执行无跳转的指令序列,即该序列除最后一条指令外,其余部分不会出现转移指令(跳转,函数调用等);所述的控制流图CFG,其节点为一个基本块,边为控制流中的跳转;所述的过程间控制流图ICFG将控制流图CFG按照函数调用关系进行连接,即从函数调用的基本块连接到被调用函数的入口处的基本块。
[0018] 进一步地,步骤S3具体包括:
[0019] S301、对获取的所述基本块中的指令的操作码进行归一化,所有的基本内存地址替换为“mem”;所有的通用寄存器根据其长度进行重命名;
[0020] S302、将指令中的操作码和归一化后的操作数进行连接作为单词;
[0021] S303、将基本块的指令序列作为文章;
[0022] S304、计算每个指令的TF‑IDF值;
[0023] S305、将基本块中的每个指令按照TF‑IDF值进行降序排列。
[0024] 进一步地,步骤S4具体包括:
[0025] S401、图数据增强,在不影响语义标签的情况下通过应用一定的转换创建新颖且现实合理的图数据;
[0026] S402、通过基于GNN的图编码器获得图级的向量表示;
[0027] S403、通过双层感知器MLP将增强的表示映射到另一个计算对比损失的潜在空间;
[0028] S404、通过对比损失函数强制最大化正对与负对之间的一致性。
[0029] 进一步地,步骤S401中采用基于中心性的边扰动和基于TF‑IDF的节点丢弃对图数据进行增强,具体如下:
[0030] 令 表示一个图,其中 , 分别表示节点集和边集;给定 个图的数据集中的图 ,制定增强图  满足:
,其中  为图数据增强。
[0031] 可选地,所述基于中心性的边扰动为通过随机添加或删除预设比例的边来扰乱图的连通性;具体为以概率从原始  中采样一个修改的子集 :
[0032]
[0033] 其中 , 为移除边  的概率。
[0034] 移除边 的概率 定义为:
[0035]
[0036] 其中 为控制去除边的整体概率的超参数, 为 的最大值, 为平均值;  为截止概率; 的定义为:
[0037]
[0038] 其中 和 分别表示节点 和节点 的中心性。
[0039] 可选地,所述基于TF‑IDF的节点丢弃是指随机丢弃预设比例的顶点及其连接,具体为以概率从原始 中采样一个修改的子集
[0040]
[0041] 其中 , 是删除节点 的概率。
[0042] 当基本块中包含系统函数和库函数调用时 ,否则:
[0043]
[0044] 其中 为控制删除节点的整体概率的超参数, 为 的最大值, 为平均值;  为截止概率; 的定义为:
[0045]
[0046]
[0047] 其中 为基本块中的 个指令的TF‑IDF值。
[0048] 进一步地,步骤S402中所述基于GNN的图编码器使用图同构网络GIN,其包括聚合邻居节点和计算图嵌入;其中聚合邻居节点定义为:
[0049]
[0050] 上式中, 和 分别表示节点 在 和 时刻的输出, 为一个可学习参数, 为节点 的邻居节点, 为节点 在 时刻的输出;
[0051] 所述图嵌入的定义为:
[0052]
[0053] 上式中, 为串联, 为求和。
[0054] 进一步地,步骤S404中,所述正对定义为同一个图创建的增强图,所述负对定义为不同图创建,并且使用余弦函数计算相似度;所述损失函数的定义为:
[0055]
[0056] 上式中, , 为小批量中的第 个图, 为增强图的数量, 表示温度参数,为余弦相似度函数。
[0057] 进一步地,步骤S5具体包括:
[0058] S501、对图神经网络的参数进行固定,使图神经网络的超参数在训练的过程中不再受反向传播的影响;
[0059] S502、使用全连接层作为二进制程序对匹配的分类器;
[0060] S503、使用标记的二进制函数对进行训练,更新分类器的参数。
[0061] 第二方面,本发明还提供一种基于图对比学习的二进制代码相似性检测系统,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述基于图对比学习的二进制代码相似性检测方法的步骤。
[0062] 第三方面,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述基于图对比学习的二进制代码相似性检测方法的计算机程序。
[0063] 本发明中的专业名词释义:
[0064] TF‑IDF,即“term frequency–inverse document frequency”的英文缩写,是一种用于信息检索与数据挖掘的常用加权技术。TF是词频(Term Frequency),IDF是逆文本频率指数(Inverse Document Frequency)。
[0065] ICFG:即过程间控制流图,为“inter‑procedural control flow graph”的英文缩写,用于描述整个程序控制流信息的图,它包含了整个程序中所有可能执行的分支信息。
[0066] CFG:一般指控制流图,也叫控制流程图,即“Control Flow Graph”的英文缩写,是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式表示一个过程内所有基本块执行的可能流向,也能反映一个过程的实时执行过程。
[0067] GNN,即图神经网络,为“Graph Neural Network”的英文缩写,是指使用神经网络来学习图结构数据,提取和发掘图结构数据中的特征和模式,满足聚类、分类、预测、分割、生成等图学习任务需求的算法总称。
[0068] MLP,即多层感知器,为“Multi‑Layer Perception”的英文缩写,是一种典型神经网络构成,最典型的MLP包括包括三层:输入层、隐层和输出层,MLP神经网络不同层之间是全连接的,全连接的意思就是:上一层的任何一个神经元与下一层的所有神经元都有连接。
[0069] GIN,图同构网络。
[0070] 本发明的有益效果:
[0071] 1、本发明提出了一种新的自监督二进制代码表示学习技术,该技术能够充分利用代码的结构信息生成高质量的图级向量表示。
[0072] 2、本发明使用基于中心性和TF‑IDF作为图数据增强的方法,最大程度上保留了ICFG的关键节点及边。
[0073] 3、本发明使用GIN计算图嵌入,能够更好的区分网络结构;使用图对比学习的方法训练图神经网络,捕获ICFG的通用拓扑结构,使图神经网络更加健壮和可转移。
[0074] 因此,本发明基于图对比学习对二进制代码进行相似性度量具有更高的检测精确率,对于基于二进制的代码安全分析有重要的基础性作用。

附图说明

[0075] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0076] 图1为本发明实施例二进制代码相似性检测方法的基本流程示意图。
[0077] 图2为本发明实施例中生成基本块的初始特征嵌入的流程示意图。
[0078] 图3为本发明实施例中图对比学习的结构示意图。

具体实施方式

[0079] 下面结合实施例及附图对发明进一步说明,但不用来限制本发明的范围。
[0080] 实施例1
[0081] 如图1所示,本实施例提供一种基于图匹配网络的二进制代码相似性检测方法,包括如下步骤:
[0082] S1、获取用于训练的二进制程序对;
[0083] S2、对获取的所述二进制程序对进行反汇编,并获取其过程间控制流图ICFG及其基本块中的指令;
[0084] S3、计算所述基本块中指令的TF‑IDF;
[0085] S4、通过图对比学习预训练图神经网络;
[0086] S5、在冻结模式下,冻结预训练的所述图神经网络的参数并训练所述二进制程序对匹配的分类器;
[0087] S6、通过所述图神经网络及其分类器得到所述二进制程序对的相似的概率。
[0088] 作为优选实施例,本实施例的步骤S2具体包括:针对二进制程序对进行反汇编得到每个函数的控制流图CFG以及每个基本块的指令序列。所述基本块为一个最大的连续执行无跳转的指令序列,即该序列除最后一条指令外,其余部分不会出现转移指令(跳转,函数调用等)。所述的控制流图CFG,其节点为一个基本块,边为控制流中的跳转。所述过程间控制流图ICFG将控制流图CFG按照函数调用关系进行连接,即从函数调用的基本块连接到被调用函数的入口处的基本块。
[0089] 如图2所示,作为优选实施例,本实施例的步骤S3具体包括:
[0090] S301、对获取的所述基本块中的指令的操作码进行归一化,所有的基本内存地址替换为“mem”;所有的通用寄存器根据其长度进行重命名;
[0091] S302、将指令中的操作码和归一化后的操作数进行连接作为单词;
[0092] S303、将基本块的指令序列作为文章;
[0093] S304、计算每个指令的TF‑IDF值;
[0094] S305、将基本块中的每个指令按照TF‑IDF值进行降序排列。
[0095] 如图3所示,作为优选实施例,本实施例的步骤S4具体包括:
[0096] S401、图数据增强,在不影响语义标签的情况下通过应用一定的转换创建新颖且现实合理的图数据;
[0097] S402、通过基于GNN的图编码器获得图级的向量表示;
[0098] S403、通过双层感知器MLP将增强的表示映射到另一个计算对比损失的潜在空间;
[0099] S404、通过对比损失函数强制最大化正对与负对之间的一致性。
[0100] 作为优选实施例,本实施例中,步骤S401采用基于中心性的边扰动和基于TF‑IDF的节点丢弃对图数据进行增强,具体如下:
[0101] 令 表示一个图,其中 , 分别表示节点集和边集;给定 个图的数据集中的图 ,制定增强图  满足:
,其中  为图数据增强。
[0102] 作为优选实施例,所述基于中心性的边扰动为通过随机添加或删除预设比例的边来扰乱图的连通性;具体为以概率从原始  中采样一个修改的子集 :
[0103]
[0104] 其中 , 为移除边  的概率。
[0105] 移除边 的概率 定义为:
[0106]
[0107] 其中 为控制去除边的整体概率的超参数, 为 的最大值, 为平均值;  为截止概率; 的定义为:
[0108]
[0109] 其中 和 分别表示节点 和节点 的中心性。本实施例中,中心性采用中介中心性。
[0110] 作为优选实施例,所述基于TF‑IDF的节点丢弃是指随机丢弃预设比例的顶点及其连接,具体为以概率从原始 中采样一个修改的子集
[0111]
[0112] 其中 , 是删除节点 的概率。
[0113] 当基本块中包含系统函数和库函数调用时 ,否则:
[0114]
[0115] 其中 为控制删除节点的整体概率的超参数, 为 的最大值, 为平均值;  为截止概率; 的定义为:
[0116]
[0117]
[0118] 其中 为基本块中的 个指令的TF‑IDF值。
[0119] 作为优选实施例,步骤S402中所述基于GNN的图编码器使用图同构网络GIN,其包括聚合邻居节点和计算图嵌入。其中,聚合邻居节点定义为:
[0120]
[0121] 上式中, 和 分别表示节点 在 和 时刻的输出, 为一个可学习参数, 为节点 的邻居节点, 为节点 在 时刻的输出;
[0122] 所述图嵌入的定义为:
[0123]
[0124] 上式中, 为串联, 为求和。
[0125] 作为优选实施例,步骤S404中,所述正对定义为同一个图创建的增强图,负对定义为不同图创建,并且使用余弦函数计算相似度。所述损失函数的定义为:
[0126]
[0127] 上式中, , 为小批量中的第 个图, 为增强图的数量, 表示温度参数,为余弦相似度函数。
[0128] 作为优选实施例,本实施例的步骤S5具体包括:
[0129] S501、对图神经网络的参数进行固定,使图神经网络的超参数在训练的过程中不再受反向传播的影响;
[0130] S502、使用全连接层作为二进制程序对匹配的分类器;
[0131] S503、使用标记的二进制函数对进行训练,更新分类器的参数。
[0132] 实施例2
[0133] 本实施例提供一种能实现实施例1提供的基于图匹配网络的二进制代码相似性检测方法的种基于图对比学习的二进制代码相似性检测系统,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执前述基于图对比学习的二进制代码相似性检测方法的步骤。
[0134] 基于同一发明构思,本实施例为与上述方法实施例对应的系统实施例,可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,重复之处不再赘述。
[0135] 实施例3
[0136] 本实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置的计算机程序,所述计算机程序被执行器执行时能实现如图1所示的实施例1提供的基于图对比学习的二进制代码相似性检测方法。
[0137] 所述计算机可读存储介质可包括但不限于,软盘、光盘、CD‑ROM(只读光盘存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。所述计算机可读存储介质可以是未接入计算机设备的产品,也可以是已接入计算机设备使用的部件。
[0138] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0139] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0140] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0141] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0142] 显然,上述实施例仅仅是本发明的优选实例,并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。