CN117216771B - 一种二进制程序漏洞智能挖掘方法及系统 - Google Patents
一种二进制程序漏洞智能挖掘方法及系统 Download PDFInfo
- Publication number
- CN117216771B CN117216771B CN202311482596.9A CN202311482596A CN117216771B CN 117216771 B CN117216771 B CN 117216771B CN 202311482596 A CN202311482596 A CN 202311482596A CN 117216771 B CN117216771 B CN 117216771B
- Authority
- CN
- China
- Prior art keywords
- node
- edge
- matching
- graph
- reconstruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000005065 mining Methods 0.000 title claims abstract description 21
- 239000011159 matrix material Substances 0.000 claims abstract description 71
- 238000012549 training Methods 0.000 claims abstract description 14
- 239000013598 vector Substances 0.000 claims description 143
- 230000008569 process Effects 0.000 claims description 14
- 238000004422 calculation algorithm Methods 0.000 claims description 11
- 125000004122 cyclic group Chemical group 0.000 claims description 10
- 238000013528 artificial neural network Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 4
- 230000005856 abnormality Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000000354 decomposition reaction Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据处理技术领域,提出了一种二进制程序漏洞智能挖掘方法及系统,包括:对每条没有漏洞的执行日志样本中的句子进行合并,获得对应的数据矩阵;获得每个数据矩阵对应的图结构以及每个邻域范围下每个图结构的重构图结构;获得同一邻域范围的任意两个图结构之间的相似度;根据最大相似度和获得最佳邻域范围和该邻域范围下每个图结构的重构图结构记为更新图结构,根据所有数据矩阵的更新图结构训练自编码网络,根据训练后的自编码网络获取未知执行日志样本是否存在漏洞。本发明提高了对程序漏洞的识别准确度和精度。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种二进制程序漏洞智能挖掘方法及系统。
背景技术
现有的对二进制程序漏洞进行分析时,往往是通过分析每次运行过程中是否存在报错或警告信息来判断程序是否存在漏洞。然而,如果在运行过程中没有出现报错或警告信息,并不能确定程序就不存在漏洞。漏洞的存在可能并不总是导致立即可见的错误或警告。一些漏洞可能会隐藏在代码逻辑中,只在特定条件下触发,或者仅在特定输入情况下显露出来,此时仅仅通过报错或警告信息来进行程序漏洞的识别就存在较大误差。
发明内容
本发明提供一种二进制程序漏洞智能挖掘方法及系统,以解决现有的对二进制程序漏洞进行分析时对没有报错和警告信息的漏洞无法识别的问题,所采用的技术方案具体如下:
本发明的一种二进制程序漏洞智能挖掘方法及系统采用如下技术方案:
本发明实施例提供了一种二进制程序漏洞智能挖掘方法,该方法包括以下步骤:
获取多条没有漏洞的执行日志样本;
每条执行日志样本中的句子按照先后顺序排列成日志句子序列;将每个日志句子序列中的相邻句子合并,得到重新分句后的每条第二执行日志样本,所有所述第二执行日志样本中句子数量相同;
获得每条第二执行日志样本对应的数据矩阵;根据每个数据矩阵的所有特征向量构建每个数据矩阵的图结构;在每个图结构中,根据每个节点在每个邻域范围的嵌入向量得到每个邻域范围下每个图结构的重构图结构;
根据同一邻域范围的任意两个重构图结构,获得节点匹配关系和边匹配关系;根据同一邻域范围的任意两个重构图结构的节点匹配和边匹配关系获得每个边匹配关系的权重;
根据节点匹配关系、边匹配关系和每个边匹配关系的权重获得每个邻域范围下任意两个重构图结构之间的相似度;
获得每个邻域范围下所有重构图之间的相似度和,获得最大相似度和对应的邻域范围,记为最佳邻域范围,将最佳邻域范围下每个图结构的重构图结构记为每个数据矩阵对应的图结构的更新图结构;
将当前采集得到的不能确定是否存在异常的执行日志样本记为未知执行日志样本;
根据所有数据矩阵对应的更新图结构训练自编码网络,根据训练后的自编码网络获取未知执行日志样本是否存在漏洞。
进一步地,所述将每个日志句子序列中的相邻句子合并,得到重新分句后的每条第二执行日志样本,获取的具体方法为:
对日志句子序列进行合并,包括:将日志句子序列中的每个句子输入到循环神经网络得到每个句子对应的输出向量;将日志句子序列中的句子次序值相邻的句子作为相邻句子,将相邻句子的输出向量作为相邻输出向量对,计算每个相邻输出向量对中两个输出向量的余弦相似度;在日志句子序列中,将具有最大余弦相似度的相邻输出向量对应的相邻句子合并成一个句子,得到合并后的日志句子序列。
重复对合并后的日志句子序列进行合并操作,直至合并后的日志句子序列中的句子数量等于所有执行日志样本中的句子数量最小值时停止重复,将重新分句后的每条执行日志样本称之为第二执行日志样本。
进一步地,所述每条第二执行日志样本对应的数据矩阵,获取的具体方法为:
将每条第二执行日志样本中的每个句子输入到循环神经网络中得到每个句子对应的输出向量,将每个句子对应的输出向量作为矩阵的一行,第二执行日志样本中的所有句子对应的输出向量构成的矩阵记为每条第二执行日志样本对应的数据矩阵。
进一步地,所述根据每个数据矩阵的所有特征向量构建每个数据矩阵的图结构,包括的具体方法为:
对每条第二执行日志样本对应的数据矩阵,通过SVD分解,可以得到左奇异矩阵和右奇异矩阵,将左奇异矩阵中每列和右奇异矩阵中每列作为特征向量,得到多个特征向量,将每个数据矩阵对应的多个特征向量称之为特征向量组。
将所述特征向量组中每个特征向量作为图结构的节点;计算得到任意两个特征向量的相同次序位置的元素值的差值绝对值,将所有的次序位置的差值绝对值的平方和作为图结构的边值,图结构的节点和图结构的边值构成每个数据矩阵的图结构。
进一步地,所述根据每个节点在每个邻域范围的嵌入向量得到每个邻域范围下每个图结构的重构图结构,包括的具体方法为:
设置不同的邻域范围,对于每个邻域范围,将每个数据矩阵图结构输入到Node2Vec算法中获得图结构中每个节点的嵌入向量,得到每个节点在每个邻域范围的嵌入向量。
将图结构中任意两个节点的边值重新设置为:任意两个节点在每个邻域范围的嵌入向量的余弦相似度;将重新设置边值之后的图结构记为每个邻域范围的重构图结构。
进一步地,所述节点匹配关系和边匹配关系,获取的具体方法为:
将图A中的所有节点作为二分图的左侧节点,将图B中的所有节点作为二分图的右侧节点,二分图中左侧每个节点与右侧所有节点都有边,二分图中的边值为:左侧节点与右侧节点的嵌入向量的余弦相似度,通过最大匹配原则,得到A中节点与B中节点的一对一匹配关系,简称为节点匹配关系。
将图A中的所有边值作为左侧节点,将图B中的所有边值作为右侧节点,二分图中的边值为:左侧节点与右侧节点的节点值中较小值与较大值的比值,通过最大匹配原则,得到A中边与B中边的一对一匹配关系,简称为边匹配关系。
进一步地,所述每个边匹配关系的权重,获取的具体方法为:
计算得到图A与图B中第i个边匹配关系的权重的过程如下:
第i个边匹配关系中的两个边分别记为u、v,其中u是图A中的边,v是图A中的边;
边u在图A中的两个节点为:a1、b1,边v在图B中的两个节点为:a2、b2。
当图A中边u的节点a1、b1与图B中边v的节点a2、b2存在两个节点匹配关系时,将所述两个节点匹配关系中的两个节点对的节点值的余弦相似度均值作为图A与图B中第i个边匹配关系的权重;
当组合方式中边u中节点与边v中节点存在一种节点匹配关系时,获取包含节点b1的节点匹配关系,再获取包含节点b2的节点匹配关系,这两个节点匹配关系的最大匹配特征值记为m1,假设b1对应的节点匹配关系的匹配特征值最大,那么将节点b1与节点b2的嵌入向量的余弦相似度记为m2,将m1与m2中小值与大值的比值作为图A与图B中第i个边匹配关系的权重;
当组合方式中图A中边u的节点a1、b1与图B中边v的节点a2、b2不存在节点匹配关系时,在图B获得与节点a1能够成节点匹配关系的节点,记为a1的匹配节点,在图B获得与节点b1能够成节点匹配关系的节点,记为b1的匹配节点,在图A获得与节点a2能够成节点匹配关系的节点,记为a2的匹配节点,在图A获得与节点b2能够成节点匹配关系的节点,记为b2的匹配节点,将a1的匹配节点与b1的匹配节点在图B中的边的边值记为n1,将图A中边u的边值记为n2,将n1、n2中小值与大值的比值记为q1;将a2的匹配节点与b2的匹配节点在图A中的边的边值记为o1,将图B中边v的边值记为o2,将o1、o2中小值与大值的比值记为q2,将q1与q2的均值作为图A与图B中第i个边匹配关系的权重。
进一步地,所述每个邻域范围下任意两个重构图结构之间的相似度,获取的具体方法为:
将每个节点匹配关系中两个节点的边值记为每个节点匹配关系的匹配特征值;
每个邻域范围下任意两个重构图结构分别记为图A和图B,计算图A和图B的相似度的过程为:
其中,k1表示图A和图B中所有节点匹配关系的匹配特征值之和,k0表示节点匹配关系的数量,n表示边匹配关系的数量,其中表示第i个边匹配关系中两条边的边值中小值与大值的比值;/>表示第i个边匹配关系的权重,/>表示每个邻域范围下任意两个重构图结构之间的相似度。
进一步地,所述根据所有数据矩阵对应的更新图结构训练自编码网络,根据训练后的自编码网络获取未知执行日志样本是否存在漏洞,获取的具体方法为:
将更新图结构上所有节点的嵌入向量进行拼接,记为拼接向量,将所有拼接向量作为数据集,使用数据集训练自编码网络;将数据集中的拼接向量输入到训练好的自编码网络中得到重构向量,根据拼接向量与重构向量差异得到拼接向量的重构误差,数据集中所有拼接向量的重构误差的均值记为k1;
获得未知执行日志样本对应的数据矩阵,获取未知执行日志样本对应的数据矩阵对应的更新图结构,记为更新图结构Q,将更新图结构Q上所有节点的嵌入向量进行拼接,得到拼接向量Q1,将拼接向量Q1输入到自编码网络中得到输出结果,通过输出结果与拼接向量Q1计算得到重构误差Q2,如果重构误差Q2大于k1的30%,则将该未知的执行日志样本对应的二进制程序中的漏洞进行修复。
本发明实施例提供了一种二进制程序漏洞智能挖掘系统,包括存储器,处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,以实现前述所述的方法。
本发明的有益效果是:通过对每条执行日志样本中的句子进行合并,使得所有第二执行日志样本中的句子数量相同,保证了在构建数据矩阵时,矩阵行向量维度的一致性;根据同一邻域范围的任意两个重构图结构的节点匹配和边匹配关系获得每个边匹配关系的权重,使得在计算任意两个同一邻域下图结构的相似度时,联系了节点与边的关联关系的一致性,得到了更加准确的图结构的相似度,有助于后续执行日志样本数据的共性特征的提取;通过对执行日志文件进行分析,使用训练好的自编码器对执行日志样本进行重构,得到最佳邻域范围和该范围下每个数据矩阵对应的图结构的更新图结构,使得自编码网络能够对执行日志样本的共性特征进行更好的表达,当未知执行日志样本输入时,会导致较大差异,进而大大提高了对程序漏洞的识别准确度和精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例所提供的一种二进制程序漏洞智能挖掘方法流程示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了本发明一个实施例所提供的一种二进制程序漏洞智能挖掘方法流程图,该方法包括以下步骤:
步骤S001、获取多条没有漏洞的执行日志样本,记为正确的执行日志样本。
本实施例的目的是对二进制程序漏洞进行智能分析,通过预先训练好的自编码器对正常样本和测试样本进行重构,然后计算原始输入数据与重构输出之间的重构误差,对于新的未见样本,比较其重构误差与训练集中的重构误差,如果重构误差超出预先设定的阈值范围,则该输入样本为异常数据,进而通过对该日志文件的人工分析,得到可能存在的漏洞进行修复。因此首先采集没有漏洞的执行日志样本,记为正确的执行日志作为样本数据训练得到自编码器。
需要说明的是,不同的程序执行路径,不同的输入等往往会产生不同的执行日志,并非没有报错的执行日志就表明该次运行没有问题,因此首先需要人工筛选得到其中的正确的执行日志,即该次程序运行过程中不存在问题。
具体的,对每次程序运行产生的执行日志进行人工筛选,得到其中的不存在问题的样本数据,即正确的执行日志作为执行日志样本。
至此,获取了正确的执行日志样本。
步骤S002、获取每条执行日志样本的数据矩阵,根据数据矩阵获得对应的特征向量组。
需要说明的是,自编码网络的输入往往是向量化的数据,因此首先需要将每个执行日志样本转化为向量形式,所述循环神经网络的作用为:将一串文本数据转化为固定长度的向量,这里的循环神经网络模型采用Skip-thought Vectors,模型输入为:一串文本数据,模型输出为:一个固定长度的向量。对于该循环神经网络的输出而言,相近输出对应的输入文本的上下文语义信息相近。
进一步需要说明的是,SVD是一种矩阵特征提取方法,对矩阵进行SVD分解获得的特征向量的长度取决于矩阵的大小,为了便于后续分析,需要使得每条执行日志样本的数据矩阵的大小相同,由于数据矩阵是通过循环神经网络得到的,而所述循环神经网络的输出为一个固定长度的向量,因此需要对每条数据进行相同数量的分段,使得每条数据获取相同大小的数据矩阵。
具体的,首先统计获得每条执行日志样本中的句子数量,将句子数量中最小值作为标准句子数量,记为a,即任意一条执行日志样本中的句子数量大于等于a,以任意一条执行日志样本为例,将该条执行日志样本中的所有句子按照出现的先后顺序排序,得到日志句子序列。
对日志句子序列进行合并,具体方法为:
(1)将日志句子序列中的每个句子输入到循环神经网络得到每个句子对应的输出向量;
(2)将日志句子序列中的句子次序值相邻的句子作为相邻句子,将相邻句子的输出向量作为相邻输出向量对,计算每个相邻输出向量对中两个输出向量的余弦相似度;
(3)在日志句子序列中,将具有最大余弦相似度的相邻输出向量对应的相邻句子合并成一个句子,得到合并后的日志句子序列。
重复对合并后的日志句子序列进行合并操作,直至合并后的日志句子中的句子数量等于a时停止重复。
至此,通过对每条执行日志样本中的句子通过相邻句子合并的方法,使得每条执行日志样本中的句子数量为a,完成了对每条执行日志样本的重新分句,将重新分句后的每条执行日志样本称之为第二执行日志样本。
进一步的,对每条第二执行日志样本中的每个句子,通过循环神经网络得到对应的输出向量,将每个句子对应的输出向量作为矩阵的一行,第二执行日志样本中的所有句子对应的输出向量构成的矩阵记为每条第二执行日志样本对应的数据矩阵,由于每条第二执行日志样本中的句子数量一致,且循环神经网络的输出向量的长度固定,因此得到的所有数据矩阵的大小,即行列数一致。
进一步的,对每条第二执行日志样本对应的数据矩阵,通过SVD分解,可以得到左奇异矩阵和右奇异矩阵,将左奇异矩阵中每列和右奇异矩阵中每列作为特征向量,进而可以得到多个特征向量,将每个数据矩阵对应的多个特征向量称之为特征向量组。
至此,通过计算得到了每条第二执行日志样本对应的特征向量组。
步骤S003、对每个数据矩阵,根据对应的特征向量组,构建图结构,并根据不同邻域范围的图结构,获取更新图结构。
需要说明的是,正确的执行日志样本之间有某种共性特征,例如:数据分布特性、数据信息偏向等特征,而不同的执行日志样本的特征向量除了共性特征,还包含自身的特征,因此可以通过图嵌入过程中节点信息的变化,使得每个执行日志样本的自身信息的模糊,进而凸显共性特征,进而将每个执行日志样本对应的数据矩阵分别朝着共性特征方向进行转化,得到更新图结构,此时以任意一个执行日志样本对应的更新图图结构为例,更新图结构与原来的数据矩阵相比,更新图结构中的信息更加偏向正确的执行日志样本的共性信息,将更新图结构输入自编码网络进行训练,可以增强自编码网络对正确的执行日志样本的识别精度,同时也可以使得当错误的执行日志样本,即存在问题的执行日志样本输入时,得到较大的重构误差,进而提高对存在问题的执行日志样本的识别精度和准确度。
具体的,以任意一个数据矩阵对应的特征向量组为例,将所述特征向量组中每个特征向量作为图结构的节点,首先计算得到任意两个特征向量的相同次序位置的元素值的差值绝对值,将所有的次序位置的差值绝对值的平方和作为图结构的边值;所述边值可以表示两个特征向量在不同特征维度上的强度的差异,图结构的节点和图结构的边值构成了任意一个数据矩阵对应的图结构,由于图结构可以作为聚类和分类算法的输入,利用特征向量之间的相似性或距离度量进行样本的归类,而本实施例的目的就是通过节点信息聚合过程中的不同图结构的相似度的变化进行下一步的分析,因此首先通过数据矩阵的特征向量构建图结构。需要说明的是,图嵌入是一种对节点进行向量表示的方法,Node2Vec算法是一种常用的图嵌入方法,该算法需要设置一个邻域范围参数;
当邻域范围参数设置为1时,将图结构输入到Node2Vec算法中获得图结构中每个节点的嵌入向量,记为每个节点在1邻域范围的嵌入向量。需要说明的是,将图结构中任意一个节点记为节点a,那么当邻域范围参数设置为1时,表示在利用Node2Vec算法进行向量表示时,只考虑图结构中与节点a直接相连的所有节点,即节点a的1阶相邻节点。
当邻域范围参数设置为2时,将图结构输入到Node2Vec算法中获得图结构中每个节点的嵌入向量,记为每个节点在2邻域范围的嵌入向量。需要说明的是,将邻域范围参数设置为2时,表示在利用Node2Vec算法进行向量表示时,只考虑图结构中与节点a的1阶相邻节点直接相连的所有节点。
依次类推,当邻域范围参数设置为N时,将图结构输入到Node2Vec算法中获得图结构中每个节点的嵌入向量,记为每个节点在N邻域范围的嵌入向量。本实施例中N=10。
至此获得了图结构中每个节点在不同邻域范围的嵌入向量。
将图结构中任意两个节点的边值重新设置为:任意两个节点在r邻域范围的嵌入向量的余弦相似度。将重新设置边值之后的图结构记为r邻域范围的重构图结构。
至此,每个数据矩阵均对应获得了r邻域范围的重构图结构,其中r的取值范围为1,2,3,……,N。
任意两个数据矩阵均对应的r邻域范围的重构图结构分别记为图A和图B,计算图A和图B的相似度的过程为:
步骤一:图A与图B中节点匹配关系和边匹配关系的计算。
具体的,图A与图B中节点的匹配关系的计算可以通过KM匹配计算得到,现有的KM匹配采用二分图匹配,二分图中的左侧节点表示一类节点,二分图中的右侧节点表示另一类节点,左侧每个节点与右侧所有节点有边相连;
一方面,本实施例中将图A中的所有节点作为二分图的左侧节点,将图B中的所有节点作为二分图的右侧节点,二分图中左侧每个节点与右侧所有节点都有边,二分图中的边值为:左侧节点与右侧节点的嵌入向量的余弦相似度,通过最大匹配原则,得到A中节点与B中节点的一对一匹配关系,简称为节点匹配关系。
另一方面,本实施例中将图A中的所有边值作为左侧节点,将图B中的所有边值作为右侧节点,二分图中的边值为:左侧节点与右侧节点的节点值中较小值与较大值的比值,通过最大匹配原则,得到A中边与B中边的一对一匹配关系,简称为边匹配关系。
根据KM匹配算法可知:每个节点匹配关系是由二分图中左侧节点和右侧节点构成的一对节点,二分图中该节点对的边值记为每个节点匹配关系的匹配特征值,所有节点匹配关系的匹配特征值之和记为k1,k1越大,说明两个图结构A、B中的节点相似度越大,两个图结构的相似度越大。需要说明的是,图A与图B的边匹配关系和节点匹配关系通过KM匹配已经分别计算得到,由于对于任意一个图结构来说,边表示的是节点的连接关系,因此可以通过图A与图B中的节点匹配关系得到满足节点匹配关系的边匹配关系,为了更加精确的计算图A与图B的相似度,本实施例中在计算图A与图B的边匹配关系时,计算满足节点匹配关系的边匹配关系与通过KM匹配计算得到的边匹配关系的一致性,将所述一致性作为实际中每个边匹配关系的权重,进而得到了图A与图B中节点与边关系的一致性,即图A中的节点与边的关系与图B中节点与边关系的一致性,进而得到更加精确的图A与图B的相似性。
至此,计算得到了图A与图B中的节点匹配关系和边匹配关系。
步骤二:图A与图B中每个边匹配关系的权重的计算。
计算得到图A与图B中第i个边匹配关系的权重的过程如下:
第i个边匹配关系中的两个边分别记为u、v,其中u是图A中的边,v是图B中的边;边u在图A中的两个节点为:a1、b1,边v在图B中的两个节点为:a2、b2,节点a1、b1与节点a2、b2有两种一对一的节点组合方式:
组合方式1为:a1与a2组合成节点对(a1,a2);b1与b2组合成节点对(b1,b2);
组合方式2为:a1与b2组合成节点对(a1,b2);b1与a2组合成节点对(b1,a2);
其中,每种组合方式中的节点对应关系有三种情况:
以组合方式1为例进行叙述:
情况1:图A中边u的节点a1、b1与图B中边v的节点a2、b2存在两个节点匹配关系,即(a1,a2)是一个节点匹配关系,(b1,b2)也是一个节点匹配关系,即图A中的边u与图B中的边v形成边匹配关系的同时,边u中节点与边v中节点存在两个节点匹配关系,将两个节点匹配关系中的两个节点对的节点值的余弦相似度均值作为权重。
情况2:图A中边u的节点a1、b1与图B中边v的节点a2、b2存在一个节点匹配关系,以(a1,a2)是一个节点匹配关系,(b1,b2)不是节点匹配关系为例,即图A中的边u与图B中的边v形成边匹配关系的同时,边u中节点与边v中节点存在一种节点匹配关系,此时权重计算方式如下:
获取包含节点b1的节点匹配关系,再获取包含节点b2的节点匹配关系,这两个节点匹配关系的最大匹配特征值记为m1,假设b1对应的节点匹配关系的匹配特征值最大,那么将节点b1与节点b2的嵌入向量的余弦相似度记为m2。
计算m1与m2中小值与大值的比值作为权重。
情况3:图A中边u的节点a1、b1与图B中边v的节点a2、b2不存在节点匹配关系,即(a1,a2)和(b1,b2)均不是节点匹配关系,即图A中的边u与图B中的边v形成边匹配关系的同时,边u中节点与边v中节点不存在节点匹配关系,此时权重计算方式如下:
在图B获得与节点a1能够成节点匹配关系的节点,记为a1的匹配节点,在图B获得与节点b1能够成节点匹配关系的节点,记为b1的匹配节点,在图A获得与节点a2能够成节点匹配关系的节点,记为a2的匹配节点,在图A获得与节点b2能够成节点匹配关系的节点,记为b2的匹配节点。
进一步的,将a1的匹配节点与b1的匹配节点在图B中的边的边值记为n1,将图A中边u的边值记为n2,将n1、n2中小值与大值的比值记为q1;将a2的匹配节点与b2的匹配节点在图A中的边的边值记为o1,将图B中边v的边值记为o2,将o1、o2中小值与大值的比值记为q2,将q1与q2的均值作为权重;每条边是由两个节点连接形成的,以图A中的边u为例,计算边匹配关系权重时,当前情况下构成边匹配关系的边中的节点不存在节点匹配关系,但可以得到图A中形成边u的两个节点在图B中的匹配节点形成的边,称之为形成边,形成边表示符合节点匹配关系的边u在图B中的对应边,图B中的边v作为图A中边u的匹配边,边v的边值越接近形成边,表示边v越符合节点匹配关系,应该赋予越大的权重,同样的,从图B中的边v出发,也可以得到一个权重值,因此将两个权重值的均值作为当前情况下边u与边v的权重。
至此,通过计算得到了图A与图B中第i个边匹配关系的权重。
步骤三:图A与图B的相似度的计算。
进一步的,图A与图B的相似度的计算公式如下:
(1)
公式(1)中,表示的是图A与图B的节点相似度,k0表示节点匹配关系的数量,k0是为了对k1进行归一化;
公式(1)中的表示的是图A与图B的边的相似度;
公式(1)中,n表示图A和图B中,通过 KM匹配得到的边匹配关系的数量,其中bi表示第i个边匹配关系中两条边的边值中小值与大值的比值;qi表示第i个边匹配关系的权重;
计算分为两个部分:第一部分是:节点的相似度,节点的相似度越大,两个图结构的相似度越大;第二部分是:边的相似度,越符合节点关系的边的相似度越大,两个图结构的相似度越大。
至此,计算得到了r邻域范围下不同重构图结构之间的相似度。
进一步的,计算每个邻域范围内的所有图结构之间的相似度和值,将最大相似度和值对应的邻域范围值作为最佳邻域范围值,将最佳邻域范围值下对应的重构图结构作为每个数据矩阵的更新图结构。
至此,计算得到了每个数据矩阵的更新图结构。
步骤S004、将一个未知的执行日志样本通过更新图结构得到拼接向量,将所有拼接向量作为数据集,训练自编码网络,根据训练后的自编码网络获取未知执行日志样本是否存在漏洞。
上述首先获得正确的执行日志样本的数据矩阵,然后获得每个数据矩阵对应的更新图结构,因此每个正确的执行日志样本对应一个更新图结构。
进一步的,根据更新图结构,进行自编码网络的训练,训练过程如下:需要说明的是,自编码网络的输入为向量数据,因此需要将更新图结构转化为向量的形式。
具体的,将更新图结构上的所有嵌入向量进行拼接,记为拼接向量,将所有拼接向量作为数据集,利用数据集训练自编码网络,训练过程中采用交叉熵损失函数。
自编码网络的训练方法是公知的,本实施例不再赘述具体过程。
进一步的,将每个拼接向量输入到训练好的自编码网络中,得到输出向量,将每条输出向量与对应拼接向量的相同次序位置元素值的差值平方和记为第一差值,将所有第一差值的和值作为该拼接向量对应的重建误差,进而可以得到每个正确的执行日志样本对应的重建误差,将所有执行日志样本的重建误差均值记为k1。
至此,计算得到了所有正确的执行日志样本在自编码网络中的重建误差均值k1。
需要说明的是,由于自编码网络的输入数据,即训练数据通过处理后,更加偏向正确执行日志样本的共性特征,因此当某个错误样本输入时,由于不存在该共性特征,会导致较大的重建误差,进而可以对错误样本进行更好的识别。
具体的,将当前采集得到的不能确定是否存在异常的执行日志样本记为未知的执行日志样本,通过步骤S001、S002和S003可以得到该未知的执行日志样本在最佳邻域范围值下的更新图结构,将更新图结构上所有节点的嵌入向量进行拼接,记为拼接向量,将所述拼接向量输入到训练好的自编码网络中,得到输出向量,通过拼接向量和输出向量计算得到该未知的执行日志样本的重建误差,如果重建误差大于k1的30%,则将该未知的执行日志样本记为异常样本,进而通过人工对执行日志样本数据进行分析,找到二进制程序中的漏洞进行修复。
至此,通过未知执行日志样本与阈值的比较,实现了对日志数据的分析。
本发明实施例还提供了一种二进制程序漏洞智能挖掘系统,包括存储器,处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,以实现前述所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种二进制程序漏洞智能挖掘方法,其特征在于,该方法包括以下步骤:
获取多条没有漏洞的执行日志样本;
每条执行日志样本中的句子按照先后顺序排列成日志句子序列;将每个日志句子序列中的相邻句子合并,得到重新分句后的每条第二执行日志样本,所有所述第二执行日志样本中句子数量相同;
获得每条第二执行日志样本对应的数据矩阵;根据每个数据矩阵的所有特征向量构建每个数据矩阵的图结构;在每个图结构中,根据每个节点在每个邻域范围的嵌入向量得到每个邻域范围下每个图结构的重构图结构;
根据同一邻域范围的任意两个重构图结构,获得节点匹配关系和边匹配关系;根据同一邻域范围的任意两个重构图结构的节点匹配和边匹配关系获得每个边匹配关系的权重;
根据节点匹配关系、边匹配关系和每个边匹配关系的权重获得每个邻域范围下任意两个重构图结构之间的相似度;
获得每个邻域范围下所有重构图之间的相似度和,获得最大相似度和对应的邻域范围,记为最佳邻域范围,将最佳邻域范围下每个图结构的重构图结构记为每个数据矩阵对应的图结构的更新图结构;
将当前采集得到的不能确定是否存在异常的执行日志样本记为未知执行日志样本;
根据所有数据矩阵对应的更新图结构训练自编码网络,根据训练后的自编码网络获取未知执行日志样本是否存在漏洞;
所述每个邻域范围下任意两个重构图结构之间的相似度,获取的具体方法为:
将每个节点匹配关系中两个节点的边值记为每个节点匹配关系的匹配特征值;
每个邻域范围下任意两个重构图结构分别记为重构图结构A和重构图结构B,计算重构图结构A和重构图结构B的相似度的过程为:
其中,表示重构图结构A和重构图结构B中所有节点匹配关系的匹配特征值之和,/>表示节点匹配关系的数量,/>表示边匹配关系的数量,其中/>表示第/>个边匹配关系中两条边的边值中最小值与最大值的比值;/>表示第/>个边匹配关系的权重,/>表示每个邻域范围下任意两个重构图结构之间的相似度。
2.根据权利要求1所述的一种二进制程序漏洞智能挖掘方法,其特征在于,所述将每个日志句子序列中的相邻句子合并,得到重新分句后的每条第二执行日志样本,获取的具体方法为:
对日志句子序列进行合并,包括:
将日志句子序列中的每个句子输入到循环神经网络得到每个句子对应的输出向量;将日志句子序列中的句子次序值相邻的句子作为相邻句子,将相邻句子的输出向量作为相邻输出向量对,计算每个相邻输出向量对中两个输出向量的余弦相似度;在日志句子序列中,将具有最大余弦相似度的相邻输出向量对应的相邻句子合并成一个句子,得到合并后的日志句子序列;
重复对合并后的日志句子序列进行合并操作,直至合并后的日志句子序列中的句子数量等于所有执行日志样本中的句子数量最小值时停止重复,将重新分句后的每条执行日志样本称之为第二执行日志样本。
3.根据权利要求1所述的一种二进制程序漏洞智能挖掘方法,其特征在于,所述每条第二执行日志样本对应的数据矩阵,获取的具体方法为:
将每条第二执行日志样本中的每个句子输入到循环神经网络中得到每个句子对应的输出向量,将每个句子对应的输出向量作为矩阵的一行,第二执行日志样本中的所有句子对应的输出向量构成的矩阵记为每条第二执行日志样本对应的数据矩阵。
4.根据权利要求1所述的一种二进制程序漏洞智能挖掘方法,其特征在于,所述根据每个数据矩阵的所有特征向量构建每个数据矩阵的图结构,包括的具体方法为:
对每条第二执行日志样本对应的数据矩阵,通过SVD分解,得到左奇异矩阵和右奇异矩阵,将左奇异矩阵中每列和右奇异矩阵中每列作为特征向量,得到多个特征向量,将每个数据矩阵对应的多个特征向量称之为特征向量组;
将所述特征向量组中每个特征向量作为图结构的节点;计算得到任意两个特征向量的相同次序位置的元素值的差值绝对值,将所有的次序位置的差值绝对值的平方和作为图结构的边值,图结构的节点和图结构的边值构成每个数据矩阵的图结构。
5.根据权利要求1所述的一种二进制程序漏洞智能挖掘方法,其特征在于,所述根据每个节点在每个邻域范围的嵌入向量得到每个邻域范围下每个图结构的重构图结构,包括的具体方法为:
设置不同的邻域范围,对于每个邻域范围,将每个数据矩阵图结构输入到Node2Vec算法中获得图结构中每个节点的嵌入向量,得到每个节点在每个邻域范围的嵌入向量;
将图结构中任意两个节点的边值重新设置为:任意两个节点在每个邻域范围的嵌入向量的余弦相似度;将重新设置边值之后的图结构记为每个邻域范围的重构图结构。
6.根据权利要求1所述的一种二进制程序漏洞智能挖掘方法,其特征在于,所述节点匹配关系和边匹配关系,获取的具体方法为:
将重构图结构A中的所有节点作为二分图的左侧节点,将重构图结构B中的所有节点作为二分图的右侧节点,二分图中左侧每个节点与右侧所有节点都有边,二分图中的边值为:左侧节点与右侧节点的嵌入向量的余弦相似度,通过最大匹配原则,得到重构图结构A中节点与重构图结构B中节点的一对一匹配关系,简称为节点匹配关系;
将重构图结构A中的所有边值作为左侧节点,将重构图结构B中的所有边值作为右侧节点,二分图中的边值为:左侧节点与右侧节点的节点值中最小值与最大值的比值,通过最大匹配原则,得到重构图结构A中边与重构图结构B中边的一对一匹配关系,简称为边匹配关系。
7.根据权利要求1所述的一种二进制程序漏洞智能挖掘方法,其特征在于,所述每个边匹配关系的权重,获取的具体方法为:
计算得到重构图结构A与重构图结构B中第i个边匹配关系的权重的过程如下:
第i个边匹配关系中的两个边分别记为u、v,其中u是重构图结构A中的边,v是重构图结构B中的边;
边u在重构图结构A中的两个节点为:a1、b1,边v在重构图结构B中的两个节点为:a2、b2;
当重构图结构A中边u的节点a1、b1与重构图结构B中边v的节点a2、b2存在两个节点匹配关系时,将所述两个节点匹配关系中的两个节点对的节点值的余弦相似度均值作为重构图结构A与重构图结构B中第i个边匹配关系的权重;
当边u中节点与边v中节点存在一种节点匹配关系时,获取包含节点b1的节点匹配关系,再获取包含节点b2的节点匹配关系,这两个节点匹配关系的最大匹配特征值记为m1,假设b1对应的节点匹配关系的匹配特征值最大,那么将节点b1与节点b2的嵌入向量的余弦相似度记为m2,将m1与m2中最小值与最大值的比值作为重构图结构A与重构图结构B中第i个边匹配关系的权重;
当重构图结构A中边u的节点a1、b1与重构图结构B中边v的节点a2、b2不存在节点匹配关系时,在重构图结构B获得与节点a1能够成节点匹配关系的节点,记为a1的匹配节点,在重构图结构B获得与节点b1能够成节点匹配关系的节点,记为b1的匹配节点,在重构图结构A获得与节点a2能够成节点匹配关系的节点,记为a2的匹配节点,在重构图结构A获得与节点b2能够成节点匹配关系的节点,记为b2的匹配节点,将a1的匹配节点与b1的匹配节点在重构图结构B中的边的边值记为n1,将重构图结构A中边u的边值记为n2,将n1、n2中最小值与最大值的比值记为q1;将a2的匹配节点与b2的匹配节点在重构图结构A中的边的边值记为o1,将重构图结构B中边v的边值记为o2,将o1、o2中最小值与最大值的比值记为q2,将q1与q2的均值作为重构图结构A与重构图结构B中第i个边匹配关系的权重。
8.根据权利要求1所述的一种二进制程序漏洞智能挖掘方法,其特征在于,所述根据所有数据矩阵对应的更新图结构训练自编码网络,根据训练后的自编码网络获取未知执行日志样本是否存在漏洞,获取的具体方法为:
将更新图结构上所有节点的嵌入向量进行拼接,记为拼接向量,将所有拼接向量作为数据集,使用数据集训练自编码网络;将数据集中的拼接向量输入到训练好的自编码网络中得到重构向量,根据拼接向量与重构向量差异得到拼接向量的重构误差,数据集中所有拼接向量的重构误差的均值记为k1;
获得未知执行日志样本对应的数据矩阵,获取未知执行日志样本对应的数据矩阵对应的更新图结构,记为更新图结构Q,将更新图结构Q上所有节点的嵌入向量进行拼接,得到拼接向量Q1,将拼接向量Q1输入到自编码网络中得到输出结果,通过输出结果与拼接向量Q1计算得到重构误差Q2,如果重构误差Q2大于k1的30%,则将该未知的执行日志样本对应的二进制程序中的漏洞进行修复。
9.一种二进制程序漏洞智能挖掘系统,包括存储器,处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1~8任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311482596.9A CN117216771B (zh) | 2023-11-09 | 2023-11-09 | 一种二进制程序漏洞智能挖掘方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311482596.9A CN117216771B (zh) | 2023-11-09 | 2023-11-09 | 一种二进制程序漏洞智能挖掘方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117216771A CN117216771A (zh) | 2023-12-12 |
CN117216771B true CN117216771B (zh) | 2024-01-30 |
Family
ID=89049685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311482596.9A Active CN117216771B (zh) | 2023-11-09 | 2023-11-09 | 一种二进制程序漏洞智能挖掘方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117216771B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111199361A (zh) * | 2020-01-13 | 2020-05-26 | 国网福建省电力有限公司信息通信分公司 | 基于模糊推理理论的电力信息系统健康评估方法及系统 |
CN111639344A (zh) * | 2020-07-31 | 2020-09-08 | 中国人民解放军国防科技大学 | 一种基于神经网络的漏洞检测方法及装置 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
WO2021164200A1 (zh) * | 2020-02-20 | 2021-08-26 | 齐鲁工业大学 | 一种基于深度分层编码的智能语义匹配方法和装置 |
CN115529166A (zh) * | 2022-09-05 | 2022-12-27 | 浙江御安信息技术有限公司 | 基于多源数据的网络安全扫描风险管控系统及其方法 |
CN115622793A (zh) * | 2022-11-14 | 2023-01-17 | 北京天融信网络安全技术有限公司 | 一种攻击类型识别方法、装置、电子设备及存储介质 |
CN116628695A (zh) * | 2022-02-10 | 2023-08-22 | 中国科学院软件研究所 | 基于多任务学习的漏洞挖掘方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11856013B2 (en) * | 2020-02-04 | 2023-12-26 | The George Washington University | Method and system for detecting lateral movement in enterprise computer networks |
-
2023
- 2023-11-09 CN CN202311482596.9A patent/CN117216771B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111199361A (zh) * | 2020-01-13 | 2020-05-26 | 国网福建省电力有限公司信息通信分公司 | 基于模糊推理理论的电力信息系统健康评估方法及系统 |
WO2021164200A1 (zh) * | 2020-02-20 | 2021-08-26 | 齐鲁工业大学 | 一种基于深度分层编码的智能语义匹配方法和装置 |
CN111639344A (zh) * | 2020-07-31 | 2020-09-08 | 中国人民解放军国防科技大学 | 一种基于神经网络的漏洞检测方法及装置 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
CN116628695A (zh) * | 2022-02-10 | 2023-08-22 | 中国科学院软件研究所 | 基于多任务学习的漏洞挖掘方法及装置 |
CN115529166A (zh) * | 2022-09-05 | 2022-12-27 | 浙江御安信息技术有限公司 | 基于多源数据的网络安全扫描风险管控系统及其方法 |
CN115622793A (zh) * | 2022-11-14 | 2023-01-17 | 北京天融信网络安全技术有限公司 | 一种攻击类型识别方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
一种跨指令架构二进制漏洞搜索技术研究;徐威扬等;《信息网络安全》(第09期);全文 * |
程序流程跟踪漏洞挖掘系统;张远等;信息安全与通信保密(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117216771A (zh) | 2023-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108549954B (zh) | 风险模型训练方法、风险识别方法、装置、设备及介质 | |
CN111967502B (zh) | 一种基于条件变分自编码器的网络入侵检测方法 | |
CN110287983B (zh) | 基于最大相关熵深度神经网络单分类器异常检测方法 | |
CN109063698B (zh) | 一种非负特征提取及人脸识别应用方法、系统及存储介质 | |
CN114120041B (zh) | 一种基于双对抗变分自编码器的小样本分类方法 | |
CN113065525B (zh) | 年龄识别模型训练方法、人脸年龄识别方法及相关装置 | |
CN113259216B (zh) | 一种can总线信号解析方法及系统 | |
CN114139624A (zh) | 一种基于集成模型挖掘时间序列数据相似性信息的方法 | |
CN116148656A (zh) | 一种便携式模拟断路器故障检测方法 | |
CN109615080B (zh) | 无监督模型评估方法、装置、服务器及可读存储介质 | |
CN117216771B (zh) | 一种二进制程序漏洞智能挖掘方法及系统 | |
CN117009968A (zh) | 恶意代码的同源分析方法、装置、终端设备及存储介质 | |
CN117009223A (zh) | 基于抽象语法的软件测试方法、系统、存储介质及终端 | |
CN111126420B (zh) | 一种建立识别模型的方法及装置 | |
CN117194219A (zh) | 模糊测试用例生成与选择方法、装置、设备及介质 | |
CN113824575A (zh) | 故障节点识别的方法、装置、计算设备及计算机存储介质 | |
CN111159424A (zh) | 标注知识图谱实体的方法,装置,存储介质及电子设备 | |
CN114897047B (zh) | 基于深度字典的多传感器数据漂移检测方法 | |
CN115455438A (zh) | 一种程序切片漏洞检测方法、系统、计算机及存储介质 | |
CN111209567B (zh) | 提高检测模型鲁棒性的可知性判断方法及装置 | |
CN115238874A (zh) | 一种量化因子的搜索方法、装置、计算机设备及存储介质 | |
CN113298160A (zh) | 三元组的校验方法、装置、设备和介质 | |
CN111562943A (zh) | 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置 | |
CN116842073B (zh) | 图数据的挖掘方法、装置和电子设备 | |
CN117349186B (zh) | 一种基于语义流图的程序语言缺陷定位方法、系统及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |