一种多样本比较和融合的多种类型漏洞检测方法及系统技术方案

技术编号:34171640 阅读:105 留言:0更新日期:2022-07-17 10:55
本发明专利技术公开了一种多样本比较和融合的多种类型漏洞检测方法及系统,所述方法包括:对原始数据集进行处理,生成多种漏洞类型的数据集;对数据集中的样本进行单一代码的符号化操作,得到符号化样本;构建针对特定程序语言的专有词向量模型,对符号化样本进行向量化操作,得到样本向量;为样本向量分别构建同类型样本融合矩阵和不同类型样本比较矩阵,并且生成同类型样本融合向量和不同类型样本比较向量;利用同类型样本融合向量和不同类型样本比较向量对深度学习模型进行训练,并利用训练后的深度学习模型进行漏洞检测。本发明专利技术能够降低模型的复杂度,并且提高模型识别漏洞的能力和准确度。准确度。准确度。

A multi type vulnerability detection method and system based on multi sample comparison and fusion

【技术实现步骤摘要】
一种多样本比较和融合的多种类型漏洞检测方法及系统


[0001]本专利技术涉及网络信息安全
,特别涉及一种多样本比较和融合的多种类型漏洞检测方法及系统。

技术介绍

[0002]当前软件中存在的漏洞是引发软件安全事件的主要原因。因此在软件开发的各个阶段通过静态检测技术和动态检测技术来发现软件中存在的漏洞是一个很重要的工作。但是,由于静态检测技术和动态检测技术极大地依赖于专家和资深软件开发人员的个人经验,因此漏洞发现的时间较长,并且精度也不高。
[0003]目前,随着深度学习技术在恶意代码检测、垃圾邮件过滤等方面的不断应用,学术界和工业界也在不断地尝试将深度学习技术应用于软件漏洞的挖掘和分析当中,目的是实现软件漏洞自动化挖掘和分析,大幅度地提高漏洞挖掘的效率和精度。
[0004]基于深度学习的源代码漏洞检测的思想来源于自然语言处理技术。在自然语言处理技术中,可以把自然语言当作一种时序字符串序列,然后训练一个神经网络模型捕捉时序序列中的特征,应用于语言识别和机器翻译等具体的应用。与此类似,程序语言也是一种时序语言,在执行的时候也是按照一定时间顺序先后执行。但程序语言与其他的语言(例如英语)相比,是一种标记语言,或者说是一种“硬语言”,其语法定义可以唯一性地解释代码含义,计算机也能根据确定的规则分析和执行代码。而英语等自然语言的含义和形式会灵活变化,比如含义相同的文章可以有不同的表述,或者文章存在歧义等。从上面的分析不难看出,使用深度学习技术学习程序语言中的特征要比学习自然语言中的特征更加简单,因为程序语言中的单词含义唯一确定,不存在二义性。
[0005]目前,很多的科研工作者已经使用深度学习技术提取源代码程序中缺陷部分的特征,训练相应的神经网络模型来进行软件的漏洞检测。如Russell等人[Russell R,Kim L,Hamilton L,et al.Automated vulnerability detection in source code using deep representation learning[C]//2018 17th IEEE international conference on machine learning and applications(ICMLA).IEEE,2018:757

762]针对C/C++开源软件代码,提出了基于深度学习的函数级缺陷检测方法,直接以函数体为基本单位,来识别函数中是否存在对应的缺陷,但存在的问题是该种方法并不适用于包含跨函数数据依赖关系的代码缺陷检测。Zhou等人[Zhou Y,Liu S,Siow J,et al.Devign:Effective vulnerability identification by learning comprehensive program semantics via graph neural networks[J].arXiv preprint arXiv:1909.03496,2019]实现了基于图神经网络的源代码漏洞检测系统Devign,该系统同样是一个二分类的源代码漏洞检测系统,即给定一个源代码来判断其中是否存在漏洞,但是却无法识别具体的漏洞类型。Duan等人[Duan X,Wu J,Ji S,et al.VulSniper:Focus Your Attention to Shoot Fine

Grained Vulnerabilities[C]//IJCAI.2019:4665

4671]实现了基于注意力机制的源代码缺陷检测方法VulSniper,实现了多类源代码缺陷检测,但涉及到的源代码漏洞类型较少,只涉及了
CWE119和CWE399两种缺陷类型。Xu[Xu D,Jingzheng W U,Tianyue L U O.Vulnerability mining method based on code property graph and attention BiLSTM[J].Journal of Software,2020,31(11):3404

3420]等人基于代码属性图和深度学习技术实现了漏洞检测方法,但该方法的不足在于仍然基于以函数或程序为单位进行漏洞检测,仍然是二分类方法,并不能检测多种漏洞类型。此外,Zou[Zou,Deqing,et al."μVulDeePecker:A Deep Learning

Based System for Multiclass Vulnerability Detection."IEEE Transactions on Dependable and Secure Computing 18.5(2019):2224

2236]等人基于代码切片技术实现了一个多漏洞类型检测系统,可以检测40种漏洞类型,但检测的漏洞类型并没有覆盖大部分的CWE漏洞类型。
[0006]因此,当前基于深度学习的漏洞检测技术存在准确度不高、深度学习模型架构较复杂和所检测的漏洞种类较少的不足。

技术实现思路

[0007]针对上述问题,本专利技术的目的在于提供一种多样本比较和融合的多种类型漏洞检测方法及系统,其核心思想是为深度学习训练集中的每一个样本寻找类型相同样本和类型不相同样本,在模型训练的过程中,让模型学习类型相同样本的大量的、更加细微的特征,也学习类型不相同样本之间非常明显的不同特征,并对这些特征进行融合和比较。通过这种方式,使得深度学习模型在训练的时候可以提取更加丰富和多样性的特征,从而降低模型的复杂度,提高模型识别漏洞的准确度和种类。
[0008]为解决上述技术问题,本专利技术的实施例提供如下方案:
[0009]一方面,提供了一种多样本比较和融合的多种类型漏洞检测方法,包括以下步骤:
[0010]S1、对原始数据集进行处理,生成多种漏洞类型的数据集;
[0011]S2、对所述数据集中的样本进行单一代码的符号化操作,得到符号化样本;
[0012]S3、构建针对特定程序语言的专有词向量模型,对所述符号化样本进行向量化操作,得到样本向量;
[0013]S4、为所述样本向量分别构建同类型样本融合矩阵和不同类型样本比较矩阵,并且分别对所述同类型样本融合矩阵和所述不同类型样本比较矩阵进行相加和取平均值,得到所述数据集中每一个样本的同类型样本融合向量和不同类型样本比较向量;
[0014]S5、利用所述同类型样本融合向量和所述不同类型样本比较向量对深度学习模型进行训练,并利用训练后的深度学习模型进行漏洞检测。
[0015]优选地,步骤S3具体包括:
[0016]S31、对所述数据集中经过符号化操作的符号化样本进行单词统计,得到语料库;
[0017]S32、使用word2vec中的CBOW方法训练一个专有词向量模型;
[0018]S33、使用训练好的专有词向量模型对所述数据集中每一个符号化本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多样本比较和融合的多种类型漏洞检测方法,其特征在于,包括以下步骤:S1、对原始数据集进行处理,生成多种漏洞类型的数据集;S2、对所述数据集中的样本进行单一代码的符号化操作,得到符号化样本;S3、构建针对特定程序语言的专有词向量模型,对所述符号化样本进行向量化操作,得到样本向量;S4、为所述样本向量分别构建同类型样本融合矩阵和不同类型样本比较矩阵,并且分别对所述同类型样本融合矩阵和所述不同类型样本比较矩阵进行相加和取平均值,得到所述数据集中每一个样本的同类型样本融合向量和不同类型样本比较向量;S5、利用所述同类型样本融合向量和所述不同类型样本比较向量对深度学习模型进行训练,并利用训练后的深度学习模型进行漏洞检测。2.根据权利要求1所述的多样本比较和融合的多种类型漏洞检测方法,其特征在于,步骤S3具体包括:S31、对所述数据集中经过符号化操作的符号化样本进行单词统计,得到语料库;S32、使用word2vec中的CBOW方法训练一个专有词向量模型;S33、使用训练好的专有词向量模型对所述数据集中每一个符号化样本进行向量化操作,生成样本向量。3.根据权利要求2所述的多样本比较和融合的多种类型漏洞检测方法,其特征在于,步骤S33具体包括:S331、读取数据集中的一个符号化样本;S332、使用分词工具NLTK将所述符号化样本分为若干个单词;S333、对每一个单词使用训练好的专有词向量模型进行向量化操作,生成维度固定的词向量;S334、将每一个单词对应的词向量进行相加、取平均值,得到整个符号化样本对应的样本向量;S335、重复步骤S331

S334,得到数据集中所有符号化样本各自对应的样本向量。4.根据权利要求1所述的多样本比较和融合的多种类型漏洞检测方法,其特征在于,步骤S4具体包括:S41、统计数据集中每一种漏洞类型的样本数量;S42、基于步骤S41的结果,为数据集中的每一个样本寻找漏洞类型相同的样本和漏洞类型不同的样本;S43、根据步骤S42中返回的同类型样本集合和不同类型样本集合,构建目标样本的同类型样本融合矩阵和不同类型样本比较矩阵;S44、把所述同类型样本融合矩阵中的每一个同类型样本对应的向量进行相加,并取平均值,得到最终的同类型样本融合向量;把所述不同类型样本比较矩阵中的每一个不同类型样本对应的向量进行相加,并取平均值,得到最终的不同类型样本比较向量。5.根据权利要求1所述的多样本比较和融合的多种类型漏洞检测方法,其特征在于,步骤S5中,所述深度学习模型包含一个输入层模块,一个特征抽取层模块和一个分类层模块;其中,所述输入层模块由一个全连接网络和ReLU激活函数构成;所述特征抽取层模块由多个全连接网络构成,在全连接网络之间采用ReLU激活函数以及Dropout层来随机丢掉
网络中的神经元;所述分类层模块由一个全连接层构成,用于输出每一个样本的得分,然后使用Softmax函数对得分进行计算后输出各个漏洞类别预测的概率值,其中概率值最大的即为最终的分类结果。6.一种多样本比较和融合的多种类型漏洞...

【专利技术属性】
技术研发人员:陈小全龚晓锐刘剑夏翔宇周绍翔
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1