赞
踩
近年来安全漏洞数量逐年攀升,源代码静态分析被广泛应用于软件中的漏洞检测,但纯粹的静态数据分析耗时且费力,而利用深度学习的方法自动检测出源代码中的漏洞的方法则逐渐凸显优势。使用的源代码漏洞数据均为C/C++源程序,利用joern针对某些与漏洞相关的API库函数为关注点提取切片,并根据源程序漏洞记录文件对提取的切片做有无漏洞的标签记录。对切片做预处理生成向量之后输入到神经网络中训练并预测漏洞位置。
1979年,美国Mark Weise首次在他的博士论文中提出了程序切片思想。程序切片是一种分解程序的程序分析技术,原理是根据某个关注点删除源程序中与该关注点无关的指令,保留含有数据依赖和控制依赖关系的指令。切片与源程序在一定切片准则下的语义是一致的。利用工具joern针对源程序中某些可能与漏洞相关的API库函数、表达式、指针、数组为关注点前向后向提取相关代码语句组成切片。
程序切片的类别根据概念分为可执行切片与不可执行切片,根据切片准则可分为静态切片、动态切片和有条件切片,根据关注点在切片中的位置可分为前向切片和后向切片,前向切片是提取出程序中关注点之后与关注点相关的语句,后向切片是提取出程序中关注点之前与关注点相关的语句。
1、漏洞数据源
NVD和SARD,其中NVD包括软件产品中的漏洞,SARD包括production, synthetic和academic security的漏洞程序,对于NVD中的每个漏洞程序,可以根据diff文件获取漏洞程序及相应的修补程序,文件中包含漏洞程序与修补程序的差异。对于SARD中的源程序,包括无漏洞的程序、有漏洞的程序以及有漏洞的程序和其修补版本的混合程序。数据集中总共包含368个与CVE相关的开源程序,14000个SARD程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。