CN110943981B - 基于层次学习的跨架构漏洞挖掘方法 - Google Patents
基于层次学习的跨架构漏洞挖掘方法 Download PDFInfo
- Publication number
- CN110943981B CN110943981B CN201911142076.7A CN201911142076A CN110943981B CN 110943981 B CN110943981 B CN 110943981B CN 201911142076 A CN201911142076 A CN 201911142076A CN 110943981 B CN110943981 B CN 110943981B
- Authority
- CN
- China
- Prior art keywords
- function
- hierarchical
- model
- learning
- graph
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于网络信息安全技术领域,特别涉及一种基于层次学习的跨架构漏洞挖掘方法,包含:获取训练样本数据;构建层次学习模型;并对层次学习模型进行克隆,得到克隆版层次学习模型;将训练样本数据函数对特征信息分别输入层次学习模型和克隆版层次学习模型进行模型训练学习,并计算两者获取的函数特征高维向量表示的相似度,依据相似标签判定调整层次模型参数和权重,以获取用于目标函数漏洞挖掘的层次模型;针对目标函数,提取作为层次模型输入的函数特征信息和函数调用关系,通过训练学习后的层次模型完成目标函数漏洞挖掘。本发明通过两级机器学习和丰富特征提取极大提升大规模漏洞搜索工作的效率和精度,对网络信息安全具有重要的指导意义。
Description
技术领域
本发明属于网络信息安全技术领域,特别涉及一种基于层次学习的跨架构漏洞挖掘方法。
背景技术
Genius从控制流程图中学习高级特征表示,并将该图编码为嵌入(即高维数值向量)。Genius使用图匹配算法对相似的函数进行聚类,以在跨体系结构的不同编译环境中提取CFG的稳健特征,从而生成码本,并根据该码本生成函数嵌入;然后,建立固件数据库和漏洞功能数据库,并将LSH(局部敏感哈希)用于大规模漏洞搜索;嵌入生成效率不高,此外,Genius的搜索精度不足以满足数百万个固件中的大规模漏洞搜索工作。Gemini提出了一种基于深度神经网络来生成用于相似性检测的二进制函数的嵌入的方法,这在一定程度上提高了准确性和效率,Gemini提取跨架构的函数的健壮特征,并将提取的基本块级特征和CFG结构的表示提供给DNN模型;通过Structure2Vec的多层迭代,基本块节点特征被传播到与其相关的其他节点,并且所有基本块节点的表示被聚合以生成函数的高维向量表示;但其并没有克服Genius基于CFG图的匹配方法的局限性,未充分考虑不同编译选项对CFG结构的影响,搜索精度不足以满足数百万个固件中的大规模漏洞搜索工作。
发明内容
为此,本发明提供一种基于层次学习的跨架构漏洞挖掘方法,基于两级层次学习通过丰富特征提取提升大规模漏洞搜索工作的精度,提升漏洞搜索准确性和精度。
按照本发明所提供的设计方案,提供一种基于层次学习的跨架构漏洞挖掘方法,包含:
通过反汇编获取二进制函数对应的汇编程序,并对汇编程序中的汇编函数通过图形描述提取函数特征信息和函数调用关系,将汇编函数两两组合,并添加相似标签,形成函数对,作为训练样本数据;
构建层次学习模型,所述层次学习模型包含基于深度神经网络构建函数内级别学习模块和基于图谱注意力网络构建函数间级别学习模块;并对层次学习模型进行克隆,得到克隆版层次学习模型;
将训练样本数据函数对的汇编函数对应的特征信息分别输入层次学习模型和克隆版层次学习模型中,利用函数对中每个函数的函数特征信息分别对两个模型中的函数内级别学习模块进行训练学习,并获取作为中间嵌入的函数特征向量;将函数对中每个函数的函数调用关系及中间嵌入分别对应馈送至两个模型中的函数间特征学习模块进行训练学习,并获取函数特征高维向量表示;计算层次学习模型和克隆版层析学习模型两者获取的函数特征高维向量表示的相似度,并依据相似标签判定调整层次模型参数和权重,以获取完成训练学习用于目标函数漏洞挖掘的层次模型;
针对目标函数,通过反汇编获取其对应的汇编程序,并对汇编程序中的汇编函数创建控制流图,通过图形描述提取作为层次模型输入的函数特征信息和函数调用关系,通过训练学习后的层次模型完成目标函数漏洞挖掘。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,图形描述中,针对汇编程序创建控制流图、数据流图和函数功能调用图,函数指令以基本块划分,控制流图和数据流图的节点由不同基本块组成,将数据传输信息附加到控制流图结构中,并添加用于表示两个基本块之间是否存在数据传输的符号标记,控制流图中节点之间的边缘代表控制流的方向,边缘的标签代表基本块之间是否存在数据传输;函数功能调用图采用有向图表示,图边表示函数调用关系,图节点由具有数据流信息的函数控制流图表示。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,确定数据传输信息中,还包含:通过检查基本块中的指令是否访问同一地址寄存器来确定两个基本块之间是否存在数据传输。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,函数功能调用图中,对于动态加载的第三方函数库,通过提取二进制可执行文件的导入表来获取函数名称;将函数之间调用-被调用关系表示为有向未加权的边;根据函数功能调用图构造函数调用关系的邻接矩阵。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,采用面向模型的遗传算法提取函数特征信息,遗传算法中,用种群表示函数特征子集,使用代表示迭代轮数。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,利用遗传算法提取函数特征信息,包含如下内容:初始化配对集和后代,将函数对传入模型,获取种群适应度;根据种群适应度进行排名,并使用具有替换、交叉和变异的随机抽样选择种群,更新,经过多次迭代后,确定最终选择的函数特征。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,函数内级别学习模块中,使用Structure2Vec,根据图拓扑递归地非线性聚合控制流图顶点特征,每次迭代生成包含邻域信息及与顶点具有数据传输的顶点的多维顶点特征的多维嵌入,每个顶点生成多维嵌入后,对控制流图嵌入向量进行聚合。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,每次迭代中,通过完全连接网络定义的非线性变换进行迭代中的更新嵌入;经过迭代后,每个顶点特征将传播到与之关联的其他节点,并且每个顶点嵌入都包含上下文语义。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,函数间级别学习模块中,使用共享关注机制计算重要性,并获取用于非线性变换以获取函数嵌入的注意力系数,结合每个特征顶点共享参数化权重矩阵,获取用于作为模块输入的包含被调用函数语义的函数嵌入。
作为本发明的基于层次学习的跨架构漏洞挖掘方法,进一步地,利用余弦距离获取函数相似度,通过比较相似度和相似标签差异,评估模型质量。
本发明的有益效果:
本发明通过两级机器学习和丰富特征提取极大提升大规模漏洞搜索工作的效率和精度;通过引入函数结构化签名的概念,用图形描述目标函数的二进制代码,并从图中提取签名信息,增加函数调用关系语义,利用面向模型的特征选择方法进行特征选择,并添加函数数据流信息以丰富函数内的语义,在搜索效率足以满足真实世界大规模漏洞搜索工作的前提下,明显提升了漏洞搜索的准确性和精度,对网络信息安全具有重要的指导意义。
附图说明:
图1为本发明实施例中跨架构漏洞挖掘方法示意图;
图2为本发明实施例中层次模型示意图;
图3为本发明实施例中函数内级别学习模块示意图;
图4为本发明实施例中函数间级别学习模块;
图5为本发明实施例中自我注意力机制示意图。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
现有技术中,提取和利用二进制函数的特性来应对不同编译环境中二进制函数巨大差异的挑战,为此,本发明实施例中,提供一种基于层次学习的跨架构漏洞挖掘方法,参见图1所示,包含:
S101、通过反汇编获取二进制函数对应的汇编程序,并对汇编程序中的汇编函数通过图形描述提取函数特征信息和函数调用关系,将汇编函数两两组合,并添加相似标签,形成函数对,作为训练样本数据;
S102、构建层次学习模型,所述层次学习模型包含基于深度神经网络构建函数内级别学习模块和基于图谱注意力网络构建函数间级别学习模块;并对层次学习模型进行克隆,得到克隆版层次学习模型;
S103、将训练样本数据函数对的汇编函数对应的特征信息分别输入层次学习模型和克隆版层次学习模型中,利用函数对中每个函数的函数特征信息分别对两个模型中的函数内级别学习模块进行训练学习,并获取作为中间嵌入的函数特征向量;将函数对中每个函数的函数调用关系及中间嵌入分别对应馈送至两个模型中的函数间特征学习模块进行训练学习,并获取函数特征高维向量表示;计算层次学习模型和克隆版层析学习模型两者获取的函数特征高维向量表示的相似度,并依据相似标签判定调整层次模型参数和权重,以获取完成训练学习用于目标函数漏洞挖掘的层次模型;
S104、针对目标函数,通过反汇编获取其对应的汇编程序,并对汇编程序中的汇编函数创建控制流图,通过图形描述提取作为层次模型输入的函数特征信息和函数调用关系,通过训练学习后的层次模型完成目标函数漏洞挖掘。
基于两级层次学习通过丰富特征提取提升大规模漏洞搜索工作的精度,提升漏洞搜索准确性和精度。
作为本发明实施例中的基于层次学习的跨架构漏洞挖掘方法,进一步地,图形描述中,针对汇编程序创建控制流图、数据流图和函数功能调用图,函数指令以基本块划分,控制流图和数据流图的节点由不同基本块组成,将数据传输信息附加到控制流图结构中,并添加用于表示两个基本块之间是否存在数据传输的符号标记,控制流图中节点之间的边缘代表控制流的方向,边缘的标签代表基本块之间是否存在数据传输;函数功能调用图采用有向图表示,图边表示函数调用关系,图节点由具有数据流信息的函数控制流图表示。
控制流图和数据流图描述了函数的控制流和数据流。一个函数的指令可以分为几个基本块,但是,控制流图CFG和数据流图DFG的节点由不同划分的基本块组成。因此,实施例中将数据传输信息附加到CFG的结构上,并可标记0和1以指示两个基本块之间是否存在数据传输。CFG节点之间的边缘代表控制流的方向;CFG边缘上的标签指示两个基本块之间是否存在数据传输。函数控制流和数据流在不同的体系结构,不同的操作***和不同的编译优化级别上具有一定的鲁棒性。可通过提取控制流和数据流作为函数的语义特征来消除影响,即提取与平台和编译设置无关的跨平台和不同编译选项的通用特征。本发明实施例中,进一步地,采用面向模型的遗传算法提取函数特征信息,遗传算法中,用种群表示函数特征子集,使用代表示迭代轮数。函数调用描述了要分析的函数之间的调用关系。函数调用图涉及整个二进制文件的函数调用关系。每个节点代表一个函数,每个函数节点可以由具有数据流信息的函数CFG表示。即使在不同的编译环境中,函数间的调用关系是非常稳健的特征。同一函数在不同环境中调用的函数没有区别。因此,本发明实施例中,将函数之间的调用关系与社交网络中人群分类的思想相结合,并考虑调用函数对函数识别的影响,从而生成更准确的函数特征表示。
使用上面的三个图描述二进制函数,并基于该图为它们生成签名信息,可提取了在跨架构、不同优化选项下依旧稳健的基本块级特征,并结合附有数据流信息的CFG以及函数调用图中的调用函数信息作为函数的签名因素,实现通过引入函数结构化签名的概念并用图形描述目标函数的二进制代码,从图中提取签名信息,以方便比较,提高特征提取精度和效率。
使用两个神经网络来学习函数的两级特征。对于函数内级别学习模型,基于Gemini,并添加数据流信息以捕获更多的函数语义信息。由于函数调用的数量是可变的,并且在Gemini模型上不能很好地表达函数调用之间的关系,处理函数调用关系更加困难。因此,引入新的机制或模型来学习函数调用的语义信息。最后,在社交网络的启发下,本发明实施例中引入了图注意力图GAT来试图解决上述问题。
深度神经网络DNN用于训练学习函数的基本块级特征,而GAT用于训练调用关系对函数的影响,以生成包含更精确语义的高维特征向量。最后,通过计算函数特征向量的距离来测量函数之间的相似性,从而确定漏洞函数。
现有的语义学习方法依赖于功能的CFG来提取函数的每个基本块的特征,并根据这些特征进行相似性比较。BiN通过首先使用IDAPro工具将二进制文件反汇编为相应的汇编程序来提取特征。然后,使用IDAPro提供的IDAPython为每个汇编函数创建CFG。同时,本发明实施例中还可使用IDAPro的名为MIASM的插件来确定两个基本块之间是否存在数据传输。考虑到编译环境对汇编代码的影响,可对Gemini中提取的特征进行一些更改。与Gemini直接使用DiscovRE基于图匹配算法选择的函数特征不同,本发明实施例中设计了面向模型的遗传算法,重新选择了更适合模型的函数特征。利用遗传算法提取函数特征信息,包含如下内容:初始化配对集和后代,将函数对传入模型,获取种群适应度;根据种群适应度进行排名,并使用具有替换、交叉和变异的随机抽样选择种群,更新,经过多次迭代后,确定最终选择的函数特征。例如,提取50个功能特征,并选择表现最好的9个特征。算法1中提供了用于选择二元函数特征的面向模型的遗传算法,具体设计内容如下:
算法模型中,“种群”(population)是选定的函数特征子集,而“代”(generation)指代轮数。对于模型中的每个种群,首先初始化配对集(mating set)和后代(offspring),将实现标定事实的标签的函数对传入模型,并获得该种群的适应度(fitness)。然后,根据种群的适应度对它们进行排名,并使用具有替换(replacement),交叉(crossover)和变异(mutant)的随机抽样来选择种群。最后,更新人口。经过T代之后,选择性能最佳的子集作为最终选择。表1中显示的特征是使用的每个基本块的初始特征,包括8个统计特征和1个结构特征。函数的每个基本块(9维向量)的初始特征都输入到模型中,以生成函数的语义嵌入向量。
另外,数据流是一种可靠的表示,基本块之间的数据流可以捕获数据和变量的依赖性,并且数据流分析能工提供定位内联代码的能力。为了便于与CFG的结构协调,将数据流的信息附加到CFG结构的基本块中。在CFG的边缘标记0和1,以表示两个基本块之间是否存在数据传输以丰富函数语义。另外,通过检查基本块中的指令是否访问同一地址寄存器来确定两个基本块之间的数据传输。由于它考虑了函数内的控制结构和数据流信息,因此可以有效地缓解由于不同的编译环境而引起的CFG的结构变化。但是,从二进制文件中提取函数特征时,该方法无法捕获这些函数之间的交互,会丢失大量的结构信息。为了获得结构信息,引入了新的函数结构化签名,将函数之间的调用关系和函数的内部控制流信息一起用作描述函数的特征。功能调用图FCG是有向图表示,其中图的顶点表示函数,有向边表示函数的调用关系。提取FCG时,对于动态加载的第三方函数库,通过读取二进制可执行文件的导入表来获得函数名称作为标签。对于本地函数,可将本地函数的起始地址用作函数标签。将函数之间的调用-被调用关系表示为有向未加权的边。最后,根据FCG,构造了函数调用关系的邻接矩阵。在模型中,通过仅考虑文件的内部函数和静态链接的第三方库函数,并且函数调用图构成邻接表以表示二进制文件的函数调用关系,提取函数特征,并将提取的特征构成函数的结构化签名。
通过模型进行训练学习中,需要找到一个映射φ,它将二元函数转换为高维特征向量的表示形式。给定两个二进制函数f1和f2,则通过给定的相似度计算函数Sim(·,·)判断两个函数的相似性,即,如果两个函数相似,则Sim(φ(f1),φ(f2))的值为1。如果两个函数不相似,则Sim(φ(f1),φ(f2))的值为-1。
在模型中,尝试学习如何通过深度学习(即映射φ)来生成函数嵌入。与Gemini不同,可充分考虑函数的两级特征,内部函数的特征以及函数之间的调用关系,实施例中通过建立两级特征的学习模型,并合理有效地整合两级特征的训练模型来生成表示函数更多语义的向量,以进一步提高准确性。
参见图2所示,输入是提取的CFG,其中包含从固件二进制代码中提取的数据流信息和提取的基本块级别的特征,而N是二进制代码中的函数。将它们输入到函数内特征学习模型中,并获得中间嵌入;在函数内特征学习模型中进行了5次迭代,每个迭代都有2个完全连接的神经网络来训练特征。然后,将中间嵌入内容馈送到函数间特征学习模型中,如图2所示,模型中有3个隐藏层。使用邻接矩阵来确定函数的依赖关系,并通过注意机制计算相邻节点对函数节点的影响,并生成图形上不相关且包含函数调用信息的最终表示形式。通过获得一个映射φ,利用深度学习将二进制函数转换为高维表示。接下来,通过函数的高维表示来描述函数之间相似性的方法,并以此来训练模型。在数据预处理中,函数集分为L对函数对。如果该对是在不同编译环境中由同一源编译的两个相同函数,即Sim(φ(fi),φ(fi')),则该函数将1分配给事实标签否则,如果有两个不同的函数,即Sim(φ(fi),φ(fj)),则该函数将-1分配给事实标签此外,可用余弦距离描述函数的相似度为
在训练阶段,模型通过比较生成的相似度和函数对的事实标签的差异来评估映射的质量。可使用均方误差(MSE)作为度量,公式如下:
然后,训练在函数内模型中的共享参数W1,W2,P1,…,Pn和在函数间模型中的共享参数W,以最小化等式中的MSE。此外,为提高模型的泛化能力,通过添加L2正则化和Dropout以防止过度拟合来建立模型。使用随机梯度下降算法优化了MSE。最终,一旦得到了共享参数的最优值,可以轻松地将函数转换为高维表示,以进行函数相似性比较。
函数内部特征学习模型是Gemini的Structure2vec模型的改进,其主要目的是获得表示函数的高维向量,例如控制流和数据流,即生成嵌入。Structure2Vec受到图模型推理算法的启发。其顶点的特征根据图拓扑递归地非线性聚合。执行完足够的迭代后,每个顶点将包含有关相邻顶点的信息。在提取目标二进制文件中的函数的基本块级9维特征表示后,将特征输入到学习模型中以生成用于相似度计算的语义嵌入。
图3中,(a)是CFG,其数据传输表示为图中具有3个包含基本块级别特征的顶点,其中和ξ是顶点集和边缘。经过T层迭代后,DNN模型将为每个顶点生成p维嵌入,并且每次迭代将生成包含其邻域信息及与该顶点具有数据传输的顶点的特征信息的p维顶点特征μi。生成每个顶点的嵌入μT后,g的嵌入向量μ将通过公式进行聚合计算;(b)显示了在每次迭代中更新嵌入的方法。进一步地,本发明实施例中还提供一种更新嵌入的方法,具体内容可设计如下:
其中xv是每个顶点的d维数值矢量,W1是d×p的矩阵。分别将N(μ)表示为顶点μ的控制流邻居顶点集合,将D(μ)表示为具有数据传输的邻居顶点集合。此外,σc和σd是两个非线性变换σ(·),定义了n层完全连接的网络,以实现收集其他顶点特征的过程,例如
其中Pi(i=1,...,n)和Pi′(i=1,...,n)是p×p矩阵,n是嵌入深度。ReLU是激活功能。算法2概述了生成函数内级别嵌入的总体算法,具体内容如下:
经过T次迭代后,每个顶点的特征将传播到与之关联的其他顶点,并且每个顶点嵌入都包含上下文的语义。对于函数内特征学习模型,与DiscovRE,Genius和Gemini的现有研究相比,通过添加了数据流信息以捕获更多的功能语义信息。
函数调用关系在不同的编译环境下具有强大的语义。由于函数调用的数量是可变的,并且在Gemini模型上不能很好地表达函数调用之间的关系,因此处理函数调用关系更加困难。因此,可引入新的机制或模型来学习函数调用的语义信息。理想情况下,希望模型具有以下特征:
(1)模型可以作用于节点的邻域,即函数调用;
(2)该模型可以为函数的相邻节点分配不同的重要性;
(3)该模型适合归纳问题,并且可以处理任何未经训练的图结构。
应该注意的是,该函数在调用关系矩阵中没有固定数量的相邻节点。因此,在社交网络的启发下,在构建功能调用关系的嵌入式网络时,模型是在GAT网络的基础上进行修改的。GAT使用隐藏的自我注意层处理某些图卷积中的问题。不需要复杂的矩阵运算或图形结构的先验知识。通过堆叠自我注意层,在卷积过程中会将不同的重要性分配给相邻的不同节点。此外,由于采用了边沿机制,GAT不依赖于全局图结构,因此很容易应用于归纳问题。受GAT模型的启发,函数间学习模型包括以下主要步骤,如图4所示,输入是一组函数嵌入,即前一阶段生成的函数的高维表示,即其中N是函数的数量,F表示每个函数中特征的维数。除此之外,还可将二进制文件函数调用的邻接矩阵表示M馈入模型。考虑到每个函数节点i的一阶邻居节点集Ci,模型将生成最终的函数矢量表示根据每个被调用函数节点j的节点i的关注系数αij。
为了将输入特征转换为包含被调用函数语义的更高级别的函数嵌入,需要找到一种方法来指示函数节点i对其调用的每个函数节点的重要性。通过对函数节点进行自我注意,即使用一种共享关注机制来计算重要性;将其表示为注意力系数其中和是两个函数的初始特征,W是应用于每个特征顶点以进行线性变换的共享参数化权重矩阵。一旦获得归一化的注意力系数αij,在非线性变换之后计算最终函数嵌入,其中Ci是函数i调用的函数。
其中,LeakyReLU是非线性激活函数,·T表示转置,||表示串联操作。考虑到效率问题,仅使用一阶调用来计算eij并使用Softmax将eij归一化
现在,获得注意力系数,并可以通过以下公式计算最终函数表示:
选择ELU和tf max作为σ(·)。为了保证注意力机制学***均产生每个函数的表示。
函数内特征学习模型实现如算法3表示:
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
基于上述的方法,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
基于上述的方法,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的方法。
本发明实施例所提供的***/装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,***/装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***/装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种基于层次学习的跨架构漏洞挖掘方法,其特征在于,包含如下内容:
通过反汇编获取二进制函数对应的汇编程序,并对汇编程序中的汇编函数通过图形描述提取函数特征信息和函数调用关系,将汇编函数两两组合,并添加相似标签,形成函数对,作为训练样本数据;
构建层次学习模型,所述层次学习模型包含基于深度神经网络构建函数内级别学习模块和基于图谱注意力网络构建函数间级别学习模块;并对层次学习模型进行克隆,得到克隆版层次学习模型;
将训练样本数据函数对的汇编函数对应的特征信息分别输入层次学习模型和克隆版层次学习模型中,利用函数对中每个函数的函数特征信息分别对两个模型中的函数内级别学习模块进行训练学习,并获取作为中间嵌入的函数特征向量;将函数对中每个函数的函数调用关系及中间嵌入的函数特征向量均馈送至两个模型中的函数间特征学习模块进行训练学习,并获取函数特征高维向量表示;计算层次学习模型和克隆版层析学习模型两者获取的函数特征高维向量表示的相似度,并依据相似标签判定调整层次模型参数和权重,以获取完成训练学习用于目标函数漏洞挖掘的层次模型;
针对目标函数,通过反汇编获取其对应的汇编程序,并对汇编程序中的汇编函数创建控制流图,通过图形描述提取作为层次模型输入的函数特征信息和函数调用关系,通过训练学习后的层次模型完成目标函数漏洞挖掘。
2.根据权利要求1所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,图形描述中,针对汇编程序创建控制流图、数据流图和函数功能调用图,函数指令以基本块划分,控制流图和数据流图的节点由不同基本块组成,将数据传输信息附加到控制流图结构中,并添加用于表示两个基本块之间是否存在数据传输的符号标记,控制流图中节点之间的边缘代表控制流的方向,边缘的标签代表基本块之间是否存在数据传输;函数功能调用图采用有向图表示,图边表示函数调用关系,图节点由具有数据流信息的函数控制流图表示。
3.根据权利要求2所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,确定数据传输信息中,还包含:通过检查基本块中的指令是否访问同一地址寄存器来确定两个基本块之间是否存在数据传输。
4.根据权利要求2所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,函数功能调用图中,对于动态加载的第三方函数库,通过提取二进制可执行文件的导入表来获取函数名称;将函数之间调用-被调用关系表示为有向未加权的边;根据函数功能调用图构造函数调用关系的邻接矩阵。
5.根据权利要求1~4任一项所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,采用面向模型的遗传算法提取函数特征信息,遗传算法中,用种群表示函数特征子集,使用代表示迭代轮数。
6.根据权利要求5所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,利用遗传算法提取函数特征信息,包含如下内容:初始化配对集和后代,将函数对传入模型,获取种群适应度;根据种群适应度进行排名,并使用具有替换、交叉和变异的随机抽样选择种群,更新,经过多次迭代后,确定最终选择的函数特征。
7.根据权利要求1所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,函数内级别学习模块中,使用Structure2Vec,根据图拓扑递归地非线性聚合控制流图顶点特征,每次迭代生成包含邻域信息及与顶点具有数据传输的顶点的多维顶点特征的多维嵌入,每个顶点生成多维嵌入后,对控制流图嵌入向量进行聚合。
8.根据权利要求7所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,每次迭代中,通过完全连接网络定义的非线性变换进行迭代中的更新嵌入;经过迭代后,每个顶点特征将传播到与之关联的其他节点,并且每个顶点嵌入都包含上下文语义。
9.根据权利要求1所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,函数间级别学习模块中,使用共享关注机制计算重要性,并获取用于非线性变换以获取函数嵌入的注意力系数,结合每个特征顶点共享参数化权重矩阵,获取用于作为模块输入的包含被调用函数语义的函数嵌入。
10.根据权利要求1所述的基于层次学习的跨架构漏洞挖掘方法,其特征在于,利用余弦距离获取函数相似度,通过比较相似度和相似标签差异,评估模型质量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911142076.7A CN110943981B (zh) | 2019-11-20 | 2019-11-20 | 基于层次学习的跨架构漏洞挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911142076.7A CN110943981B (zh) | 2019-11-20 | 2019-11-20 | 基于层次学习的跨架构漏洞挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110943981A CN110943981A (zh) | 2020-03-31 |
CN110943981B true CN110943981B (zh) | 2022-04-08 |
Family
ID=69907040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911142076.7A Active CN110943981B (zh) | 2019-11-20 | 2019-11-20 | 基于层次学习的跨架构漏洞挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110943981B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475622A (zh) * | 2020-04-08 | 2020-07-31 | 广东工业大学 | 一种文本分类方法、装置、终端及存储介质 |
CN111562943B (zh) * | 2020-04-29 | 2023-07-11 | 海南大学 | 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置 |
CN111639344B (zh) * | 2020-07-31 | 2020-11-20 | 中国人民解放军国防科技大学 | 一种基于神经网络的漏洞检测方法及装置 |
CN112308210B (zh) * | 2020-10-27 | 2023-04-07 | 中国人民解放军战略支援部队信息工程大学 | 基于神经网络的跨架构二进制函数相似性检测方法及*** |
CN113204764B (zh) * | 2021-04-02 | 2022-05-17 | 武汉大学 | 一种基于深度学习的无符号二进制间接控制流识别方法 |
CN113240041B (zh) * | 2021-05-28 | 2022-11-08 | 北京理工大学 | 融合影响因子的二进制函数相似性检测方法 |
CN113688036A (zh) * | 2021-08-13 | 2021-11-23 | 北京灵汐科技有限公司 | 一种数据处理方法、装置、设备以及存储介质 |
CN113821804B (zh) * | 2021-11-24 | 2022-03-15 | 浙江君同智能科技有限责任公司 | 一种面向第三方组件及其安全风险的跨架构自动化检测方法与*** |
CN116028941B (zh) * | 2023-03-27 | 2023-08-04 | 天聚地合(苏州)科技股份有限公司 | 接口的漏洞检测方法、装置、存储介质及设备 |
CN117574393B (zh) * | 2024-01-16 | 2024-03-29 | 国网浙江省电力有限公司 | 一种信息终端漏洞挖掘方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229563A (zh) * | 2016-03-25 | 2017-10-03 | 中国科学院信息工程研究所 | 一种跨架构的二进制程序漏洞函数关联方法 |
US20180082064A1 (en) * | 2016-09-20 | 2018-03-22 | Sichuan University | Detection method for linux platform malware |
CN110287702A (zh) * | 2019-05-29 | 2019-09-27 | 清华大学 | 一种二进制漏洞克隆检测方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108622B (zh) * | 2017-12-13 | 2021-03-16 | 上海交通大学 | 基于深度卷积网络和控制流图的漏洞检测*** |
-
2019
- 2019-11-20 CN CN201911142076.7A patent/CN110943981B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229563A (zh) * | 2016-03-25 | 2017-10-03 | 中国科学院信息工程研究所 | 一种跨架构的二进制程序漏洞函数关联方法 |
US20180082064A1 (en) * | 2016-09-20 | 2018-03-22 | Sichuan University | Detection method for linux platform malware |
CN110287702A (zh) * | 2019-05-29 | 2019-09-27 | 清华大学 | 一种二进制漏洞克隆检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
《VDNS:一种跨平台的固件漏洞关联算法》;常青、刘中金等;《计算机研究与发展》;20161015;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110943981A (zh) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110943981B (zh) | 基于层次学习的跨架构漏洞挖掘方法 | |
Sun et al. | What and how: generalized lifelong spectral clustering via dual memory | |
Zhang et al. | An end-to-end deep learning architecture for graph classification | |
Garreta et al. | Learning scikit-learn: machine learning in python | |
Xu et al. | Matrix tri-factorization with manifold regularizations for zero-shot learning | |
CN112529168B (zh) | 一种基于gcn的属性多层网络表示学习方法 | |
Benchaji et al. | Using genetic algorithm to improve classification of imbalanced datasets for credit card fraud detection | |
CN111506714A (zh) | 基于知识图嵌入的问题回答 | |
Du et al. | Graph-based class-imbalance learning with label enhancement | |
Garreta et al. | Scikit-learn: machine learning simplified: implement scikit-learn into every step of the data science pipeline | |
Z-Flores et al. | A local search approach to genetic programming for binary classification | |
Raza et al. | Understanding and using rough set based feature selection: concepts, techniques and applications | |
Zhang et al. | Deep unsupervised self-evolutionary hashing for image retrieval | |
CN112214623A (zh) | 一种面向图文样本的高效监督图嵌入跨媒体哈希检索方法 | |
Xu et al. | Transductive visual-semantic embedding for zero-shot learning | |
CN111241326B (zh) | 基于注意力金字塔图网络的图像视觉关系指代定位方法 | |
CN115344863A (zh) | 一种基于图神经网络的恶意软件快速检测方法 | |
KR20230094955A (ko) | 문서 데이터 검색 기법 | |
Bao et al. | Asymmetry label correlation for multi-label learning | |
CN112182144B (zh) | 搜索词标准化方法、计算设备和计算机可读存储介质 | |
CN113535947A (zh) | 一种带有缺失标记的不完备数据的多标记分类方法及装置 | |
CN116720519B (zh) | 一种苗医药命名实体识别方法 | |
Liang et al. | A normalizing flow-based co-embedding model for attributed networks | |
CN116208399A (zh) | 一种基于元图的网络恶意行为检测方法及设备 | |
Pandi et al. | A novel similarity measure for sequence data |
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 |