基于图注意力的二进制代码相似性检测方法及系统与流程

未命名 08-07 阅读:81 评论:0


1.本发明涉及二进制代码相似性检测技术领域,更具体的说是涉及基于图注意力的二进制代码相似性检测方法及系统。


背景技术:

2.在软件漏洞检测方面,由于二进制代码相似性检测,相较于其他漏洞挖掘方法,无须进行符号执行和约束求解等高计算量工作,漏洞检测速度较快,在提升代码质量和提高代码分析效率方面应用效果显著,因此近年来逐渐成为研究热点之一。
3.目前,传统方法都依赖图匹配来计算二进制函数的相似度,但图匹配的主要关注点在低维的信息结构上,使其无法应对图结构差异较大的情况,由于要考虑体系结构不同等因素对检测结果影响,在大规模相似度检测应用场景下经常是低效耗时的。
4.因此,如何提高二进制函数的相似度检测效率,而不受其图结构差异的影响,是本领域技术人员亟需解决的问题。


技术实现要素:

5.有鉴于此,本发明提供了一种基于图注意力的二进制代码相似性检测方法及系统,旨在实现检测准确率高、速度快、适用场景灵活的二进制代码相似性分析和检测,从而为发现软件中存在的漏洞,尤其是代码重用所导致的漏洞传播,提供技术和手段支撑,以减轻软件漏洞为信息安全带来的威胁。
6.为了实现上述目的,本发明采用如下技术方案:
7.一方面,本发明公开了一种基于图注意力的二进制代码相似性检测方法,包括如下步骤:
8.s1、获取二进制代码的属性控制流图,输入预训练的注意力机制中,得到节点间注意力相关系数;
9.s2、对每个所述注意力相关系数进行归一化,并利用leakyrelu函数激活,得到节点间权重系数;
10.s3、根据节点间的权重系数生成新的节点特征;
11.s4、根据所述新的节点特征判断二进制代码的相似性。
12.本发明采用softmax函数对注意力相关系数进行归一化,以便于计算和比较注意力相关系数;而使leakyrelu函数激活,可使本发明的相似性检测方法适用于各种输入情况。
13.作为优选,所述注意力机制为单层前馈神经网络,用于利用经训练的权值矩阵根据输入的节点特征得到输出节点特征,并根据所述输出的节点特征得到节点间注意力相关系数。
14.作为优选,步骤s4中,将所述属性控制流图输入多个不同的预训练注意力机制中,重复步骤s1-s3,得到多个新的特征节点,对多个新的特征节点进行整合,得到图嵌入向量,
根据所述图嵌入向量判断二进制代码的相似性。
15.作为优选,按如下公式对多个新的特征节点进行整合,
[0016][0017]
式中,代表整合后的节点特征,σ(
·
)表示非线性变化,k表示注意力机制的个数,j表示节点i的邻居节点,ni表示节点i的邻居节点的个数,是通过第k个注意力机制计算并归一激活得到的节点j相对于节点i的注意力系数,wk表示第k个注意力机制的输入线性变换的权重矩阵,表示原始的节点特征。
[0018]
作为优选,通过计算所述图嵌入向量的余弦距离判断二进制代码的相似性,或通过神经网络预测两个向量相似度评分,作为两个函数最终相似度。
[0019]
另一方面,本发明还公开了一种基于图注意力的二进制代码相似性检测系统,包括:
[0020]
图嵌入向量生成模块,内置多个预训练的注意力机制,用于对注意力机制根据二进制代码的属性控制流图输出的节点间注意力相关系数进行归一化,利用leakyrelu函数激活,得到节点间权重系数;并根据节点间的权重系数生成新的节点特征后,进行整合输出图嵌入向量;
[0021]
相似度计算模块,用于根据所述图嵌入向量判断二进制代码的相似性;
[0022]
其中,可计算输出的所述图嵌入向量的余弦距离,根据计算结果判断二进制代码的相似性,或通过神经网络预测两个向量相似度评分,作为两个函数最终相似度。
[0023]
作为优选,所述图嵌入向量生成模块有两个,且参数共享。
[0024]
作为优选,每个图嵌入向量模块连接一属性控制流图提取模块,用于根据待检测的二进制代码提取相应的属性控制流图。
[0025]
作为优选,还包括:交互界面及显示界面,
[0026]
所述交互界面用于导入待检测的二进制代码文件;
[0027]
所示显示界面,用于直观显示二进制代码相似性检测结果,生成检测报告。
[0028]
经由上述的技术方案可知,本发明公开提供了一种一种基于图注意力的二进制代码相似性检测方法和系统,与现有技术相比,本发明采用注意力的思想获取每个节点的邻居节点对其权重系数,以达到从局部信息可以获得整个网络的信息,且不需要提前知道整个图的结构,在计算权重系数的同时堆叠隐藏注意力层获取临近节点的特征,避免了大量的矩阵运算,提高了二进制代码相似性的检测效率。
附图说明
[0029]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0030]
图1为本发明提供的基于图注意力的二进制代码相似性检测方法流程图;
[0031]
图2为本发明提供的对多个节点特征进行整合更新的示意图;
[0032]
图3为本发明提供的基于图注意力的二进制代码相似性检测系统孪生框架图;
[0033]
图4为本发明提供的项目列表界面图;
[0034]
图5为本发明提供的二进制代码相似性检测系统运行显示界面。
具体实施方式
[0035]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036]
本发明实施例公开了一种基于图注意力的二进制代码相似性检测方法和系统,为了凸显本技术的有益效果,首先对传统方法的弊端进行清楚地说明。
[0037]
以structure2vec图神经网络为例,structure2vec图神经网络模型是一种注重顶点之间结构关系相似性的图嵌入网络,能够同时将节点特征、边特征以及异构网络结构进行整合嵌入。它主要思想来自原图形模型推理算法,该算法会根据图的拓扑结构递归地对顶点特征进行聚合。经过若干步递归之后,该网络会为每一个顶点生成一个新的特征表示(顶点嵌入),该表示综合考虑了图的结构特征和顶点特征之间长距离相互作用。
[0038]
假设图g中顶点v的邻居顶点的集合表示为n(v),structure2vec网络会首先将每个顶点的嵌入初始化为0,然后在每次迭代中按以下公式对每个顶点的嵌入进行更新:
[0039][0040]
其中xv为顶点v的特征属性,v为图g的顶点集合,为顶点u在第t次迭代时的嵌入,为顶点v在第(t+1)次迭代时的嵌入。
[0041]
从上面迭代公式中可以看出,顶点嵌入的更新过程是在图拓扑结构的基础上以一种同步方式进行的,只有所有顶点嵌入的更新过程都已经完成,下一轮更新才会开始。每个顶点的特征都通过传播函数f传播到了其他顶点。迭代次数越多,顶点特征传播的距离越远,而且在远处顶点处进行了非线性聚合。如果更新过程在t次迭代之后终止,每个顶点嵌入会包含其t-跳邻居顶点的信息,这些信息由图的拓扑结构和相关的顶点特征共同决定。
[0042]
该特点导致其无法应对图结构差异较大的情况,且由于要考虑体系结构,当在大规模相似度检测应用场景下,检测效率是低效耗时的。
[0043]
对此,本发明考虑到传统structure2vec网络的嵌入生成方法中,计算每个邻居节点对当前节点影响力时是同等对待的,没有突出邻居节点的重要性差异。因此本发明提出基于图注意力网络的嵌入生成,力求解决这一问题。
[0044]
具体地,本发明将注意力机制引入到图结构中,可通过注意力机制学习不同节点之间的相互权重系数,从而能够在进行顶点特征学习的过程中依据邻居的权重系数进行学
习,最终更精确的描述顶点特征信息。
[0045]
进一步,本发明通过以下实施例进行说明。
[0046]
实施例一,本发明公开了一种基于图注意力的二进制代码相似性检测方法,包括如下步骤,如图1所示:
[0047]
s1、获取二进制代码的属性控制流图,输入预训练的注意力机制中,得到节点间注意力相关系数;
[0048]
其中,x为输入的属性控制流图的节点特征,表示为:
[0049][0050]
式中,n是节点的数量,s是每个节点特征的维度,为s维实数空间。
[0051]
经过注意力机制后会得到一组新的节点特征,
[0052][0053]
式中,x'表示新生成的节点特征,s'是新生成节点特征维度,为s'维实数空间。
[0054]
从原始节点特征输入到新节点特征输出至少需要进行一次线性变换,因此,本技术注意力机制根据已有输入输出节点训练得到一个权值矩阵w,请注意力机制根据已有输入输出节点训练得到一个权值矩阵w,该权值矩阵代表节点输入特征与节点输出特征之间的转换关系。计算节点之间的注意力权重:a:进一步计算节点之间注意力相关系数为:
[0055][0056]
式中,e
ij
表示节点j对节点i的重要性,这个相关系数计算没有考虑图结构信息。其中j∈ni,ni为节点i的所有邻居节点。
[0057]
其中,注意力机制a为单层前馈神经网络,用于利用经训练的权值矩阵根据输入的节点特征得到输出节点特征,并根据所述输出的节点特征得到节点间注意力相关系数;
[0058]
s2、对每个所述注意力相关系数进行归一化,并利用leakyrelu函数激活,得到节点间权重系数;
[0059]
为了便于计算和比较注意力相关系数,本发明通过引入softmax函数对节点i和其所有邻居节点j的相关权重系数进行归一化处理,归一化过程如下:
[0060][0061]
并利用leakyrelu函数激活,得到节点间的权重系数为:
[0062][0063]
在上述公式中,表示参数权重向量,t表示矩阵的转置,||表示节点特征向量之间的级联操作。训练中采用leakyrelu激活函数而不使用relu激活函数是因为后者在输入小于0时其斜率为0,如果输入全部小于0会导致训练无效,而reakyrelu激活函数在输入小于0时其斜率为0.2,适应各种输入情况。
[0064]
s3、根据节点间的权重系数生成新的节点特征;即计算得到最终的节点相对权重系数α之后,生成新的节点特征为:
[0065][0066]
σ(.)表示非线性变化,α
ij
表示节点间的权重系数。
[0067]
s4、根据所述新的节点特征判断二进制代码的相似性。
[0068]
一种实施例中,为丰富网络模型的能力以及稳定模型训练的过程,图注意力网络引入了多头注意力机制将各个节点特征映射到多个子空间中,它对复杂网络具有更好鲁棒性,能够将特征映射到多个子空间中,每个子空间捕获节点之间不同的相关性信息。由于每个注意力的头都有自己的参数,所以要对多个注意力机制的输出结果进行整合。
[0069]
故本技术步骤s4中,将所述属性控制流图输入多个不同的预训练注意力机制中,重复步骤s1-s3,得到多个新的特征节点,对多个新的特征节点进行整合,得到图嵌入向量,根据所述图嵌入向量判断二进制代码的相似性。
[0070]
由于使用了多头注意力机制,输出的新的节点特征个数也发生了改变,由原来的s'个特征变成现在的ks'个特征,因此,本发明对多个新的特征节点采用求平均的方法进行整和,如图2所示,过程如下:
[0071][0072]
式中,代表整合后的节点特征,σ(
·
)表示非线性变化,k表示注意力机制的个数,j表示节点i的邻居节点,ni表示节点i的邻居节点的个数,是通过第k个注意力机制计算并归一激活得到的节点j相对于节点i的注意力系数,wk表示第k个注意力机制的输入线性变换的权重矩阵,表示生成的新的节点特征。
[0073]
进一步,在根据所述图嵌入向量判断二进制代码的相似性时,可通过计算所述图嵌入向量的余弦距离判断二进制代码的相似性,或通过神经网络预测两个向量相似度评分,作为两个函数最终相似度。
[0074]
每一个注意力单元结构表示的是节点特征学习过程中其中一层的一个头机制,表示上一层学到的节点特征,表示通过当前层的学习之后得到的节点特征。可以观察到首先会依据上一层节点特征和图结构信息学习节点之间权重系数,此权重系数表示不同节点之间相互关联程度。利用刚学习到的权重系数对当前层节点特征进行学习,最终得到
[0075]
针对structure2vec网络同等对待每一个邻居节点,缺乏考虑邻居节点重要度差异的问题,本发明采用注意力机制计算当前节点受到其周围邻居节点的影响大小,对于重要的邻居则赋予其较高的权重,并学习这些权重,最终能够强调二进制函数属性流程图中重要的部分且忽略不重要部分,提高图嵌入表示的准确性。
[0076]
structure2vec网络在学习每一个节点特征时,将该节点和其邻居节点分开进行特征学习。在引入注意力机制后,对所有节点进行了统一处理,将当前节点与其邻居节点一
起,输入到注意力单元中自己学习节点之间的重要性权重,因此整个网络图结构变得更加智能。由于不用再特殊对待当前节点,模型训练效率也会提升。
[0077]
实施例二,本发明还公开了一种基于图注意力的二进制代码相似性检测系统,包括:
[0078]
图嵌入向量生成模块,内置多个预训练的注意力机制,用于对注意力机制根据二进制代码的属性控制流图输出的节点间注意力相关系数进行归一化,利用leakyrelu函数激活,得到节点间权重系数;并根据节点间的权重系数生成新的节点特征后进行整合输出图嵌入向量;
[0079]
相似度计算模块,用于根据所述图嵌入向量判断二进制代码的相似性,优选的,可通过计算所述图嵌入向量的余弦距离判断二进制代码的相似性,或通过神经网络预测两个向量相似度评分,作为两个函数最终相似度。
[0080]
当采用余弦距离判断二进制代码的相似性时,余弦距离的计算公式为:
[0081][0082]
式中,p表示图嵌入向量和的分量个数。
[0083]
进一步,为了便于检测,本发明优选将图嵌入向量生成模块有两个,以组成孪生系统进行特征学习,如图3所示,
[0084]
图中,g1和g2是一对待检测的二进制函数属性控制流程图,它们通过图注意力嵌入网络生成一对图嵌入和两个图注意力网络之间的权重w是共享的,最后通过计算两个嵌入向量的余弦距离来表示两个二进制函数之间的相似度。
[0085]
为进一步优化上述技术方案,使每个图嵌入向量模块连接一属性控制流图提取模块,用于根据待检测的二进制代码提取相应的属性控制流图。
[0086]
本发明在构造数据集的过程中,为每对训练样本添加了一个标签,计算出两个图嵌入特征向量的相似度距离后,通过神经网络的反向传播算法来更新各个网络层的参数权重,然后利用更新后的网络最终得到两个二进制函数之间的相似度,完成相似性检测。
[0087]
进一步,本发明相似性检测系统还包括:交互界面及显示界面,
[0088]
所述交互界面用于导入待检测的二进制代码文件;
[0089]
具体的,启动二进制代码相似性检测系统后,首先创建新项目,以文件夹或压缩包方式来导入被检测的二进制代码文件(pe或elf格式),然后选
[0090]
择和配置检测选项,最终完成创建的项目后,软件界面以项目列表形式展现。项目列表界面如图4所示,
[0091]
所示显示界面,用于直观显示二进制代码相似性检测结果,生成检测报告。即在检测项目创建完成后,选择要检测的两个二进制代码文件,执行二进制代码相似性检测流程,最终检测结果通过图示方式直观展示给用户,并能够自动生成检测报告。运行界面如图5所示,
[0092]
本发明采用图注意力网络方法,计算当前节点受到其周围邻居节点的影响大小,对于重要的邻居则赋予其较高的权重,并学习这些权重,最终能够强调二进制函数属性流
程图中重要部分且忽略不重要部分,整个网络图结构变得更加智能并且也使得模型训练效率也会提升,能够提高图嵌入表示的准确性,从而显著提高二进制代码相似性检测的工作效率。
[0093]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0094]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种基于图注意力的二进制代码相似性检测方法,其特征在于,包括:s1、获取二进制代码的属性控制流图,输入预训练的注意力机制中,得到节点间注意力相关系数;s2、对每个所述注意力相关系数进行归一化,并利用leakyrelu函数激活,得到节点间权重系数;s3、根据节点间的权重系数生成新的节点特征;s4、根据所述新的节点特征判断二进制代码的相似性。2.根据权利要求1所述的一种基于图注意力的二进制代码相似性检测方法,其特征在于,所述注意力机制为单层前馈神经网络,用于利用经训练的权值矩阵根据输入的节点特征得到输出节点特征,并根据输出的所述节点特征得到节点间注意力相关系数。3.根据权利要求1所述的一种基于图注意力的二进制代码相似性检测方法,其特征在于,步骤s4中,将所述属性控制流图输入多个不同的预训练注意力机制中,重复步骤s1-s3,得到多个新的特征节点,对多个新的特征节点进行整合,得到图嵌入向量,根据所述图嵌入向量判断二进制代码的相似性。4.根据权利要求3所述的一种基于图注意力的二进制代码相似性检测方法,其特征在于,按如下公式对多个新的特征节点进行整合,式中,代表整合后的节点特征,σ(
·
)表示非线性变化,k表示注意力机制的个数,j表示节点i的邻居节点,n
i
表示节点i的所有邻居节点,是通过第k个注意力机制得到的节点j相对于节点i的注意力系数,w
k
表示第k个注意力机制的输入线性变换的权重矩阵,表示原始的节点特征。5.根据权利要求3所述的一种基于图注意力的二进制代码相似性检测方法,其特征在于,通过计算所述图嵌入向量的余弦距离判断二进制代码的相似性,或通过神经网络预测两个向量相似度评分,作为两个函数最终相似度。6.一种基于图注意力的二进制代码相似性检测系统,其特征在于,包括:图嵌入向量生成模块,内置多个预训练的注意力机制,用于对注意力机制根据二进制代码的属性控制流图输出的节点间注意力相关系数进行归一化,利用leakyrelu函数激活,得到节点间权重系数;并根据节点间的权重系数生成新的节点特征后,进行整合输出图嵌入向量;相似度计算模块,用于根据所述图嵌入向量判断二进制代码的相似性。7.根据权利要求6所述的一种基于图注意力的二进制代码相似性检测系统,其特征在于,所述图嵌入向量生成模块有两个,且参数共享。8.根据权利要求7所述的一种基于图注意力的二进制代码相似性检测系统,其特征在于,每个图嵌入向量模块连接一属性控制流图提取模块,用于根据待检测的二进制代码提取相应的属性控制流图。
9.根据权利要求6所述的一种基于图注意力的二进制代码相似性检测系统,其特征在于,还包括:交互界面及显示界面,所述交互界面用于导入待检测的二进制代码文件;所述显示界面,用于直观显示二进制代码相似性检测结果,生成检测报告。

技术总结
本发明公开了基于图注意力的二进制代码相似性检测方法及系统,属于二进制代码相似性检测技术领域。本发明获取二进制代码的属性控制流图,输入预训练的注意力机制中,得到节点间注意力相关系数;对每个注意力相关系数进行归一化,并利用LeakyReLU函数激活,得到节点间权重系数;并根据节点间的权重系数生成新的节点特征;从而根据新的节点特征判断二进制代码的相似性。本发明采用注意力的思想获取每个节点的邻居节点对其权重系数,以达到从局部信息可以获得整个网络的信息,无需提前知道整个图的结构,且在计算权重系数的同时堆叠隐藏注意力层获取临近节点的特征,避免了大量的矩阵运算,提高了二进制代码相似性的检测效率。提高了二进制代码相似性的检测效率。提高了二进制代码相似性的检测效率。


技术研发人员:王栓奇 武伟 刘钊 王宇龙 杨荫钊 何新
受保护的技术使用者:中国兵器工业信息中心
技术研发日:2023.04.13
技术公布日:2023/8/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐