[发明专利]一种基于神经网络的漏洞检测方法及装置有效
申请号: | 202010756148.3 | 申请日: | 2020-07-31 |
公开(公告)号: | CN111639344B | 公开(公告)日: | 2020-11-20 |
发明(设计)人: | 于璐;陆余良;潘祖烈;沈毅;杨国正;黄晖;朱凯龙;李明磊;戚兰兰 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F16/35;G06F40/30;G06N3/04 |
代理公司: | 中国和平利用军工技术协会专利中心 11215 | 代理人: | 刘光德 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 神经网络 漏洞 检测 方法 装置 | ||
1.一种基于神经网络的漏洞检测方法,其特征在于,包括以下步骤:
步骤S201:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用提取二进制文件的关键函数对应的特征向量方法,提取与二进制文件的关键函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;
步骤S202:输入目标二进制文件,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件;利用提取二进制文件的关键函数对应的特征向量方法,获取目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;
步骤S203:向所述训练好的神经网络模型输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;
进行关键函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞;
其中,所述提取二进制文件的关键函数对应的特征向量方法具体包括:
步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征;
步骤S205:提取二进制文件的关键函数级别代码结构化语义特征,生成与二进制文件的关键函数对应的特征向量,通过提取函数级别代码结构化语义特征,将函数内部节点和结构相关的属性信息进行收集,使用神经网络模型对得到的基本块级别的特征向量进行选择,以生成二进制文件的函数级别的向量;
基于Structure2vec构建图嵌入神经网络模型,完成函数级别的特征选择和向量嵌入,通过融合语义图ISSFG来表征二进制文件中的函数f的特征,每一个函数使用融合语义图表示g=(V,E),其中V表示节点集合,E表示边的集合,图中的每一个节点v∈V表征函数f的基本块,边e∈E表征函数中基本块之间的控制依赖关系,节点v不仅包含了skip-thoughts生成的基本块语义特征向量,还包括了节点在函数控制流图中的结构化数字特征,在进行向量嵌入时,嵌入的向量是结构图向量,所述结构图向量是将融合语义图输入神经网络,由神经网络经过计算输出表征函数语义的、用于嵌入的嵌入向量;
所述步骤S201中的所述神经网络模型为基于Siamese网络构建的神经网络模型,通过使用已知漏洞的二进制文件得到的、已经进行了标签处理的特征向量作为样本,对该神经网络模型进行训练,得到训练好的Siamese神经网络模型;
所述步骤S203:向所述训练好的神经网络模型分别输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;进行关键函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞,具体包括:
向训练好的Siamese神经网络模型输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量,分别得到目标二进制文件以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的融合语义图,得到分别对应于这两个二进制代码文件关键函数的图嵌入向量μ1和μ2,对μ1和μ2进行向量的相似性比较,cosine距离计算两个图嵌入向量μ1和μ2的相似性,根据相似性检测二进制文件的漏洞;所述目标二进制文件为待检测漏洞的二进制文件;
所述步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征,包括:
步骤S2041:对二进制文件进行指令代码预处理;
步骤S2042:对基本块基于skip-thoughts提取语义特征,利用skip-thoughts中的编码-解码器结构,对提取的所述基本块代码语义特征进行特征嵌入,生成向量,得到基本块代码语义特征,具体包括:
二进制文件的指令按照其结构可以进行分层,包括指令级别、基本块级别和关键函数级别,对基本块基于skip-thoughts提取语义特征时,将二进制文件中的单独指令看成是自然语言处理中的“单词”,将基本块看成“句子”,关键函数看成“段落”,利用skip-thoughts中的编码-解码器结构,输入基本块所包含的指令序列;通过所述编码-解码器结构中的编码结构,将输入的指令序列输出为可以作为图嵌入网络输入的向量,并最大程度表征该基本块的语义特征,即编码-解码器结构中的编码结构,可以将分层的指令生成对应的特征向量;
所述步骤S205:提取二进制文件的关键函数级别代码结构化语义特征,生成与二进制文件的关键函数对应的特征向量,包括:
步骤S2051:将关键函数中的基本块作为图结构的节点,获取图结构的节点语义特征及与结构相关的数字化特征,所述数字化特征包括基本块嵌入过程中的语义向量,也包括关键函数与其内部基本块属性中与结构相关的数字化特征,以二进制文件的控制流图为基础,将从基本块提取的语义特征与该数字化特征进行融合,得到关键函数图结构的信息,作为结构化语义嵌入的基础;所述基本块属性中与结构相关的数字化特征包括入度、出度、介数、关键函数参数个数;
步骤S2052:使用structure2vec神经网络将融合语义图转化为可以作为机器学习模型输入的图嵌入向量,即生成最终图嵌入向量;通过图嵌入网络找到的评价关键函数可以整合关键函数中距离某一个节点2步甚至3步以外的所有邻居的信息,并将信息压缩成一个有限维的非线性向量;使用基于深度神经网络模型的包含语义的方法来处理关键函数结构化语义表达,得到二进制文件的关键函数对应的特征向量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010756148.3/1.html,转载请声明来源钻瓜专利网。