System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于Bert的混合特征漏洞挖掘方法技术_技高网

一种基于Bert的混合特征漏洞挖掘方法技术

技术编号:41316264 阅读:5 留言:0更新日期:2024-05-13 14:57
本发明专利技术公开了一种基于Bert的混合特征漏洞挖掘方法,属于网络安全技术领域;方法为:收集数据集,并对数据集进行预处理;提取代码属性图水平CPG的特征,得到CPG水平特征向量n<subgt;1</subgt;;提取源代码水平的特征,得到源代码水平特征向量n<subgt;2</subgt;;提取Token水平的特征,得到Token水平特征向量n<subgt;3</subgt;;将得到的数据进行加权拼接,得到混合特征向量N;构建Bert分类模型并进行训练,得到训练后Bert分类模型,采用测试数据集行测试。本发明专利技术通过加权的方式将代码属性图、程序源代码和Token三个维度的特征进行结合,保存了漏洞图的特征、漏洞源代码特征和漏洞Token特征,避免提取特征时信息丢失问题,有效解决漏洞挖掘误报率和漏报率较高的问题,提高漏洞检测的效果。

【技术实现步骤摘要】

本专利技术属于网络安全,具体涉及一种基于bert的混合特征漏洞挖掘方法。


技术介绍

1、漏洞挖掘技术主要包括三种:静态挖掘方法、动态挖掘方法和动静结合的方法。静态挖掘主要是指在不运行应用的前提下,对程序源代码的语法、语义、控制流及数据流进行分析,继而检测出目标程序中潜在的漏洞代码。这种方法虽然效率较高,但由于需要人工专家定义漏洞规则所以也导致检测成本较高。动态挖掘方法是在程序运行时,通过追踪程序执行路径与数据流向,借此捕捉漏洞的特征信息。但动态挖掘伴有覆盖率低和资源消耗高等缺点。动静结合方法,主要是借助动态分析的状态来校对静态分析阶段的结果,不仅可以降低静态分析阶段的高误报率和漏报率,还可以提升动态分析阶段的代码覆盖率,虽然结合了静态及动态挖掘方法的优点,但同时也会局限于这两种方法的缺陷。

2、静态挖掘方法通常与人工智能结合,从而避免人工专家定义漏洞规则成本高的问题,如何将代码转为人工智能的输入并且保存其中的信息成了关键。2019年,yongjun lee等人提出了一种挖掘汇编代码漏洞的方法,通过将汇编语料库训练word2vec,直接将代码转化为向量。该方法直接将代码当作原始数据,一方面训练量巨大,另一方面无法获得代码完整的语义和语法信息。

3、为获得代码的特征,研究者通常将源代码或选取代码的一个或某个属性进行研究。直接使用源代码提取特征效果较差,使用图特征检测由于包含的特征有限实际应用效果差。

4、2021年由zhen li等人提出了一种基于深度学习的挖掘软件漏洞的框架,其通过抽象语法树提取语法信息,再通过切片等操作将语法信息转化为语义信息,最终编码成向量。该方法只依赖于抽象语法树,会导致代码语义信息丢失,只能得到漏洞语法方面的特征。

5、2022年wenbo guo等人将代码属性图、抽象语法树、数据流图、代码标记通过提取特征的方法获取特征向量。虽然这些图形结构可以捕获代码的某些方面,但在提取特征时会丢失一些细节信息。特别是对于复杂的代码结构,简单地提取特征可能无法完全反映其含义。

6、为获得代码的特征,研究者通常将源代码或选取代码的一个或某个属性进行研究。直接使用源代码提取特征效果较差,使用图特征检测由于包含的特征有限实际应用效果差。

7、因此,如何避免提取特征时信息丢失是本专利技术想要解决的技术问题。


技术实现思路

1、本专利技术的目的在于提供一种基于bert的混合特征漏洞挖掘方法,以解决上述
技术介绍
中提出的问题。

2、本专利技术目的是这样实现的:一种基于bert的混合特征漏洞挖掘方法,其特征在于:该方法包括以下步骤:

3、步骤s1:收集数据集,并对数据集进行预处理;

4、步骤s2:提取代码属性图水平cpg的特征,得到cpg水平特征向量n1;

5、步骤s3:提取源代码水平的特征,得到源代码水平特征向量n2;

6、步骤s4:提取token水平的特征,得到token水平特征向量n3;

7、步骤s5:将得到的数据进行加权拼接,得到混合特征向量n;

8、步骤s6:构建bert分类模型并进行训练,得到训练后bert分类模型,采用测试数据集行测试。

9、优选的,所述步骤s1中收集数据集,并对数据集进行预处理,具体操作为:

10、步骤s1-1:从nvd和sard漏洞数据库收集漏洞数据,通过爬虫从公开数据集收集数据;

11、步骤s1-2:对收集来的数据进行预处理,将包含漏洞的函数标记为1,并将其对应的补丁标记为0;

12、步骤s1-3:将收集来的数据分为训练数据集和测试数据集,训练数据集和测试数据集相互独立,不能存在交集。

13、优选的,所述步骤s2中提取代码属性图水平cpg的特征,得到cpg水平特征向量n1,具体操作为:

14、步骤s2-1:确定危险函数,进行程序切片找出所有相关联的代码行,通过对代码块添加“{”和“}”重建程序结构;

15、步骤s2-2:通过joern生成对应函数的cpg;

16、步骤s2-3:将cpg进行节点嵌入,得到的cpg的向量表示;

17、步骤s2-4:通过门控循环单元gru对得到的节点向量进行特征提取,得到cpg水平的特征向量n1。

18、优选的,所述步骤s2-3中将cpg进行节点嵌入,得到的cpg的向量表示,具体为:

19、将提取cpg的dot形式文件通过pydot解析库进行解析得到networkx图,再将networkx图通过图神经网络dgl图对象转化为dgl图,通过dgl完成节点嵌入,得到图的向量表示。

20、优选的,所述步骤s3中提取源代码水平的特征,得到源代码水平特征向量n2,具体操作为:

21、步骤s3-1:源代码预处理,删除和程序无关的注释;

22、步骤s3-2:将语料库通过预训练后的word2vec转化为源代码特征向量,得到特征向量n2。

23、优选的,所述步骤s4中提取token水平的特征,得到token水平特征向量n3,具体操作为:

24、步骤s4-1:通过污点分析提取污点传播链,将受污染的同一传播链的变量放入队列中;

25、步骤s4-2:将记录污点传播链的队列通过预训练后的word2vec转化为对应向量;

26、步骤s4-3:使用bilstm进行对向量进行特征提取,得到token水平的特征向量n3。

27、优选的,所述步骤s6中构建bert分类模型并进行训练,具体为:

28、所述bert分类模型包括:embeddings模块、encoder模块以及pooler模块,embeddings模块即为对应词嵌入,

29、对应词嵌入在特征提取部分完成,因此只用到bert分类模型的encoder模块和pooler模块两部分;

30、所述encoder模块由若干个相同bertlayer模块串联组成,bertlayer模块包括bertattention、bertintermediate、bertoutput三个步骤;

31、所述bertattention包括一个线性变换和非线性激活;bertoutput包括一个线性变换和dropout,残差连接后进行层归一化;

32、所述pooler模块取隐藏状态hidden_states的第一个时间步,经过输出维度同为hidden_size的线性变换,经tanh非线性激活函数后输出。

33、优选的,所述步骤s6中采用测试数据集行测试,具体为:

34、所述bert分类模型采用传统的文本分类性能评价指标,即精确率precision、召回率recall和综合评价指标f1;

35、精确率precision为:

36、

37、召回率recall为:

38、

...

【技术保护点】

1.一种基于Bert的混合特征漏洞挖掘方法,其特征在于:该方法包括以下步骤:

2.根据权利要求1所述的一种基于Bert的混合特征漏洞挖掘方法,其特征在于:所述步骤S1中收集数据集,并对数据集进行预处理,具体操作为:

3.根据权利要求1所述的一种基于Bert的混合特征漏洞挖掘方法,其特征在于:所述步骤S2中提取代码属性图水平CPG的特征,得到CPG水平特征向量n1,具体操作为:

4.根据权利要求1所述的一种基于Bert的混合特征漏洞挖掘方法,其特征在于:所述步骤S2-3中将CPG进行节点嵌入,得到的CPG的向量表示,具体为:

5.根据权利要求1所述的一种基于Bert的混合特征漏洞挖掘方法,其特征在于:所述步骤S3中提取源代码水平的特征,得到源代码水平特征向量n2,具体操作为:

6.根据权利要求1所述的一种基于Bert的混合特征漏洞挖掘方法,其特征在于:所述步骤S4中提取Token水平的特征,得到Token水平特征向量n3,具体操作为:

7.根据权利要求1所述的一种基于Bert的混合特征漏洞挖掘方法,其特征在于:所述步骤S6中构建Bert分类模型并进行训练,具体为:

8.根据权利要求1所述的一种基于Bert的混合特征漏洞挖掘方法,其特征在于:所述步骤S6中采用测试数据集行测试,具体为:

...

【技术特征摘要】

1.一种基于bert的混合特征漏洞挖掘方法,其特征在于:该方法包括以下步骤:

2.根据权利要求1所述的一种基于bert的混合特征漏洞挖掘方法,其特征在于:所述步骤s1中收集数据集,并对数据集进行预处理,具体操作为:

3.根据权利要求1所述的一种基于bert的混合特征漏洞挖掘方法,其特征在于:所述步骤s2中提取代码属性图水平cpg的特征,得到cpg水平特征向量n1,具体操作为:

4.根据权利要求1所述的一种基于bert的混合特征漏洞挖掘方法,其特征在于:所述步骤s2-3中将cpg进行节点嵌入,得到的cpg的向量表示,具体为:

5.根据权利要...

【专利技术属性】
技术研发人员:季一木张欣同苗春雨范渊李玲娟刘尚东杜宏煜韩红新
申请(专利权)人:南京邮电大学
类型:发明
国别省市:

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

1