源代码漏洞分析数据处理

本文探讨了利用源代码静态分析和深度学习自动检测安全漏洞的方法。通过程序切片技术和word2vec模型,将源代码转换为向量进行训练,以识别潜在的漏洞。数据源包括NVD和SARD,涉及多种CWE-id类型的漏洞。
摘要由CSDN通过智能技术生成

介绍

近年来安全漏洞数量逐年攀升,源代码静态分析被广泛应用于软件中的漏洞检测,但纯粹的静态数据分析耗时且费力,而利用深度学习的方法自动检测出源代码中的漏洞的方法则逐渐凸显优势。使用的源代码漏洞数据均为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程

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值