当前位置: 首页 > 专利查询>南京大学专利>正文

一种面向代码漏洞智能检测的数据收集方法技术

技术编号:31157891 阅读:13 留言:0更新日期:2021-12-04 09:55
一种面向代码漏洞智能检测的数据收集方法构建初始的代码漏洞数据集,再利用经过训练的机器学习模型处理未经标注的代码,根据模型标注和人工标注的结果对数据集进行扩充。其中初始数据集的构建是由代码漏洞检测工具的结果结合测试人员的判断得到,机器模型的训练是利用初始数据集,对于未经标注的代码则结合机器学习模型的判定和测试人员的判断结果确定是否发生误报,并据此扩充数据集。并据此扩充数据集。并据此扩充数据集。

【技术实现步骤摘要】
一种面向代码漏洞智能检测的数据收集方法


[0001]本专利技术属于软件工程领域,尤其是代码漏洞误报检测和机器学习方法在软件工程领域的应用,用于构建并收集代码漏洞数据集。

技术介绍

[0002]由于现代的软件产品规模越来越复杂,使用人工测试的方法已经不足以快速地完成对软件漏洞的检查。目前传统的漏洞发掘技术理论已经比较成熟,能够通过模型检测、模糊测试、符号执行、二进制比对等方式从代码中挖掘漏洞。这些成熟的技术已经基本实现了自动化,可以在很少的人工干预的情况下,扫描等待测试的软件代码,寻找特定类型的漏洞。但是,自动化的代码漏洞检测工具的使用也面临着一些问题,例如:
[0003]1)代码漏洞检测工具必须在检测效率和准确度之间做出权衡。不管是对语法语义进行分析,还是对代码的执行路径进行分析,都需要构造复杂的分析模型,容易出现求解规模过大或者路径爆炸的问题。受漏洞检测技术的限制,准确的分析需要相当长的分析时间,而这在实际应用中是不允许的。
[0004]2)代码漏洞检测工具依赖于人类专家预先制定好的规则,因此检测出的漏洞往往局限于某些特定的类型。人工定义的漏洞规则带有强烈的主观性,也很难全面考虑所有情况,规则的不完善会带来漏报误报的问题。
[0005]3)代码漏洞检测工具的检测能力固定不变,对于安全水平较低的程序而言,检测出的漏洞大部分都是真正的漏洞。但是随着漏洞的修复,程序的安全性在不断提高,此时误报的比例也会随之上升。如果代码漏洞检测工具的能力不随之提升,开发人员的绝大部分时间就会被浪费在人工检查和标记无效的漏洞上。
[0006]综上所述,在自动化检测工具的使用过程中,漏报和误报的情况十分常见。其中误报过多的问题是可以通过对模型进行改进的方法得到解决的。随着机器学习与深度学习技术不断取得新的突破,可以利用机器学习技术帮助代码漏洞检测工具提升检测的准确度,降低误报的比例。但是,机器学习模型的准确度又十分依赖于数据集的大小,训练过程中提供的数据不足时,会出现过拟合的情况。
[0007]现有的代码漏洞数据集构建和收集技术存在着以下问题:
[0008]1)漏洞数据的收集方式和质量参差不齐,数据集的格式也不一致。目前缺少一个通用、高效的数据集,因此只能在研究过程中采用网络爬虫爬取的方式自行构建数据集。
[0009]2)没能考虑到使用过程中代码漏洞的不断增加,无法对数据集进行更新,也就使得检测模型得不到有效的改进。

技术实现思路

[0010]鉴于现有技术的缺陷,本专利技术所要解决的技术问题是:代码漏洞智能检测中原始数据集无法扩充,从而影响漏洞误报检测的准确性。
[0011]为了解决上述问题,本专利技术采用的技术方案为:一种代码漏洞智能检测中的数据
集扩增方法,包括以下步骤:
[0012]1)将原始代码送入自动化漏洞检测工具检测;
[0013]2)将原始代码交由测试人员进行漏洞标注;
[0014]3)比较检测结果与标记,确定属于误报的漏洞,构建初始的代码漏洞数据集;
[0015]4)利用机器学习模型学习漏洞代码与是否发生误报之间的关系;
[0016]5)利用训练完毕的机器学习模型处理未经标注的代码;
[0017]6)将被模型识别为误报的漏洞代码交由测试人员审核;
[0018]7)将漏洞与审核结果加入之前构建的代码漏洞数据集;
[0019]借由上述技术方案,本专利技术提供了一种代码漏洞数据集的扩充方法,能够在误报检测模型的使用过程中不断对原始数据集进行扩充,进而可以对误报检测模型进行迭代式的训练,在以后的检测过程中获得更高的准确度。
附图说明
[0020]图1为本专利技术整体流程图。
具体实施方式
[0021]为了详细说明本专利技术的
技术实现思路
、所实现的目的以及最后的效果,下面将更加详细地描述具体的实施方式:
[0022]1)使用代码漏洞检测工具进行自动化检测,从检测报告中获取漏洞类型与漏洞位置。
[0023]2)获取可能包含漏洞的代码片段,并由测试人员判断是否含有漏洞。
[0024]3)比较工具检测的结果和测试人员识别的结果,如果结果一致则认为检测正确,如果工具检测出的漏洞没有被测试人员标记为漏洞,则认为这属于一个发生误报的漏洞。由此可以将漏洞源代码片段和是否为误报的判断结果组合起来,构建出初始的代码漏洞误报数据集。
[0025]4)通过机器学习算法根据该数据集进行训练,学习漏洞源代码文本与是否会发生误报之间的关系,得到一个训练好的模型。
[0026]5)当使用代码漏洞检测工具检测了其他代码中的漏洞之后,再使用训练好的模型处理检测报告中指出的漏洞代码。如果一段代码被模型识别为发生误报的漏洞代码,则再交给测试人员判断,如果判断并没有包含漏洞,则标记为发生了误报并加入数据库。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向代码漏洞智能检测的数据收集方法,其特征在于首先结合代码漏洞检测工具的结果与测试人员的判断构建初始的代码漏洞数据集,然后据此训练用于误报判断的机器学习模型,最终可以结合机器学习模型的判定和测试人员的判断结果确定发生误报的漏洞,并将其加入代码漏洞数据集。2.根据权利要求1所描述的一种面向代码漏洞智能检测的数据收集方法,其特征是结合代码漏洞检测工具的结果与测试人员的判断;首先综合几种不同的代码漏洞检测工具的检测报告作为工具检测的最终结果;然后由测试人员对工具检测出的漏洞进行判断,如果判断不是漏洞则记作时一个误报结果;数据集的具体数据项包括:漏洞代码片段、漏洞类型、是否为误报。3.根据权利...

【专利技术属性】
技术研发人员:房春荣钱美缘葛修婷王旭曹振飞李彤宇
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1