一种通过GAN解决AFL测试模型数据不平衡的方法及装置制造方法及图纸

技术编号:27581558 阅读:34 留言:0更新日期:2021-03-09 22:36
本发明专利技术提供的通过GAN解决AFL测试模型数据不平衡的方法及装置,涉及漏洞挖掘技术领域;其方法包括如下步骤:1)收集AFL根据随机突变算法迭代生成的若干测试用例构成测试集;2)对测试集的测试用例数据进行预处理,并使用GAN对测试集进行数据扩增;3)选择分类模型,对测试集进行训练获得测试模型;4)根据测试模型对AFL新生成的测试用例进行预测,判断新生成的输入是否增加新的代码覆盖范围;5)根据程序运行结果计算测试模型的误判率,当测试模型的误报率不小于预设模型误报率阈值时,更新预测模型。本发明专利技术通过预测新生成的测试用例的可用性的方法提高模糊测试的效率,增大代码覆盖范围。围。围。

【技术实现步骤摘要】
一种通过GAN解决AFL测试模型数据不平衡的方法及装置


[0001]本专利技术涉及漏洞挖掘
,具体涉及一种通过GAN解决AFL测试模型数据不平衡的方法及装置。

技术介绍

[0002]随着互联网的飞速发展,软件安全已经逐渐成为人们比较关心的问题,而模糊测试是对软件安全进行检测的最重要的工具之一。模糊测试通过输入一组测试输入,并期望这些输入可以最大化给定程序中的代码覆盖范围,并希望这样做可以发现程序中存在的错误,崩溃或其他潜在漏洞。模糊测试有可以分为白盒模糊测试、灰盒模糊测试和黑盒模糊测试。黑盒模糊测试是一种软件测试技术,无需了解目标程序的内部体系结构。它仅检查系统的基本方面,将软件视为黑匣子。白盒模糊测试知道程序内部结构,并验证内部每条通路是否能正常工作。白盒模糊测试是基于对系统实现方式的了解而执行的。灰盒模糊测试介于白盒和黑盒之间的测试,在对应用程序结构的知识有限的情况下进行测试程序,综合了黑盒和白盒模糊测试技术的优势。
[0003]American Fuzzy Lop(AFL)是灰盒突变模糊测试器中是最成功的工具之一。工作方式是:通过用户给定的一组输入,这些输入可以覆盖程序代码中的不同位置,并且通过使用一组随机突变算法(比如,位翻转,删除,插入,havoc等)来迭代地对这些输入进行变异,以生成新的测试用例。如果新生成的测试用例覆盖到了从前从未观察到的程序路径,即覆盖到了新的代码位置,记为可用的测试用例,则会将其添加到队列中。否则,记为无用的测试用例,将其丢弃。但不幸的是,丢弃投入物是有代价的,而且丢弃的数量占据相当大的一部分。在典型的模糊测试中,大约有数十亿的新输入生成,但其中只有很少的一部分新输入覆盖到了新的代码空间。但是,对于生成的每一个测试用例都要放到程序中执行,每次执行都需要时间,从几纳秒到一秒以上不等,具体取决于程序本身,复杂的程序需要的时间会更长,这整个过程中将会浪费几百分钟的运行时间,影响模糊测试器的效率。

技术实现思路

[0004]本专利技术目的在于提供一种通过GAN解决AFL测试模型数据不平衡的方法及装置,通过预测新的测试用例的可用性,来减少AFL运行时间的方法。
[0005]为达成上述目的,本专利技术提出如下技术方案,一种通过GAN解决AFL测试模型数据不平衡的方法,包括如下步骤:
[0006](1)获取测试集:收集AFL根据随机突变算法迭代生成的若干测试用例,所述测试用例包括无用测试用例和可用测试用例,所述若干测试用例构成测试集;
[0007](2)测试集预处理:对测试用例的数据进行预处理,并使用GAN对测试集进行数据扩增;
[0008](3)建立测试模型:选择分类模型,对测试集进行训练,获得测试模型;
[0009](4)模型预测:根据训练好的测试模型对AFL新生成的测试用例进行预测,判断新
生成的输入是否增加新的代码覆盖范围;若判断结果为是,对应的新生成的测试用例记为可用测试用例,添加到程序运行的队列中,并记录程序运行结果;若判断结果为否,对应的新生成的测试用例记为无用测试用例,不经过程序运行直接丢弃;
[0010](5)根据程序运行结果计算测试模型的误判率,当测试模型的误报率不小于预设模型误报率阈值时,更新预测模型。
[0011]进一步的,所述步骤(2)中对测试集进行预处理的具体过程为:
[0012]对测试集中的所有测试用例进行打标签操作,其中,无用测试用例标签为0,可用测试用例标签为1;
[0013]以二进制的方式读取测试集中的所有测试用例的内容,并将任一测试用例的每个字节内容以八位二进制方式存储;
[0014]根据预设文件阈值,对测试集中所有测试用例进行筛选,保留测试用例文件大小不超过预设文件阈值的测试用例;
[0015]选择GAN对测试集进行数据扩增,平衡测试集中无用测试用例和可用测试用例的数量差异。
[0016]进一步的,所述步骤(3)中分类模型为卷积神经网络CNN、循环神经网络RNN或长短期记忆网络LSTM。
[0017]进一步的,所述步骤(4)中根据测试模型对AFL新生成的测试用例进行预测的具体过程为:
[0018]查看测试用例文件的大小;
[0019]当测试用例文件大小超过预设文件阈值,该测试用例直接添加到程序运行的队列,执行程序;
[0020]当测试用例文件大小不超过预设文件阈值区间右端值,该测试用例通过测试模型进行预测,给出预测值;测试用例预测值为0,表明该测试用例为无用测试用例,跳过执行直接丢弃;测试用例预测值为1,表明该测试用例为可用测试用例,该测试用例添加到程序运行的队列,执行程序,并观察其是否增加新的代码覆盖范围。
[0021]进一步的,所述误报率的计算公式如下:
[0022][0023]其中,M为测试模型生成的所有可用测试用例的数量,m为测试模型生成的经程序运行后未增加代码覆盖范围的可用测试用例的数量。
[0024]进一步的,所述预设文件阈值为2KB。
[0025]进一步的,所述预设模型误报率阈值为1%。
[0026]本专利技术提供一种通过GAN解决AFL测试模型数据不平衡的装置,包括:处理器,所述处理器用于执行存储在存储器中的以下程序模块;
[0027]获取模块,用于获取AFL运行时根据随机突变算法迭代生成的若干测试用例构成测试集,所述测试用例包括无用测试用例和可用测试用例;
[0028]预处理模块,用于对测试集中测试用例的数据进行预处理,并使用GAN对测试集进行数据扩增;
[0029]模型建立模块,用于选择分类模型,分类模型对测试集进行训练,获得测试模型;
[0030]预测判断模块,用于根据测试模型对AFL新生成的测试用例进行预测,判断新生成的输入是否增加新的代码覆盖范围;若判断结果为是,对应的新生成的测试用例记为可用测试用例,添加到程序运行的队列中,并记录程序运行结果;若判断结果为否,对应的新生成的测试用例记为无用测试用例,不经过程序运行直接丢弃;
[0031]计算模块,用于根据可用测试用例程序运行结果计算预测模型的误判率,误判率为测试模型生成的经程序运行后未增加代码覆盖范围的可用测试用例的数量在测试模型生成的所有可用测试用例中的占比;
[0032]更新模块,用于当计算模块计算的预测模型的误判率不小于预设模型误报率阈值时,更新预测模型。
[0033]进一步的,所述预处理模块包括:
[0034]标签录入单元,用于对测试集中的所有测试用例进行打标签操作,其中,无用测试用例标签为0,可用测试用例标签为1;
[0035]读取存储单元,用于以二进制的方式读取测试集中的所有测试用例的内容,并将任一测试用例的每个字节内容以八位二进制方式存储;
[0036]筛选单元,用于根据预设文件阈值,对测试集中所有测试用例进行筛选,保留测试用例文件大小不超过预设文件阈值的所有测试用例;
[0037]数据扩增单元,用于根据GAN对测试集进行数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种通过GAN解决AFL测试模型数据不平衡的方法,其特征在于,包括如下步骤:(1)获取测试集:收集AFL根据随机突变算法迭代生成的若干测试用例,所述测试用例包括无用测试用例和可用测试用例,所述若干测试用例构成测试集;(2)测试集预处理:对测试用例的数据进行预处理,并使用GAN对测试集进行数据扩增;(3)建立测试模型:选择分类模型,对测试集进行训练,获得测试模型;(4)模型预测:根据训练好的测试模型对AFL新生成的测试用例进行预测,判断新生成的输入是否增加新的代码覆盖范围;若判断结果为是,对应的新生成的测试用例记为可用测试用例,添加到程序运行的队列中,并记录程序运行结果;若判断结果为否,对应的新生成的测试用例记为无用测试用例,不经过程序运行直接丢弃;(5)根据程序运行结果计算测试模型的误判率,当测试模型的误报率不小于预设模型误报率阈值时,更新预测模型。2.根据权利要求1所述的通过GAN解决AFL测试模型数据不平衡的方法,其特征在于,所述步骤(2)中对测试集进行预处理的具体过程为:对测试集中的所有测试用例进行打标签操作,其中,无用测试用例标签为0,可用测试用例标签为1;以二进制的方式读取测试集中的所有测试用例的内容,并将任一测试用例的每个字节内容以八位二进制方式存储;根据预设文件阈值,对测试集中所有测试用例进行筛选,保留测试用例文件大小不超过预设文件阈值的测试用例;选择GAN对测试集进行数据扩增,平衡测试集中无用测试用例和可用测试用例的数量差异。3.根据权利要求1所述的通过GAN解决AFL测试模型数据不平衡的方法,其特征在于,所述步骤(3)中分类模型为卷积神经网络CNN、循环神经网络RNN或长短期记忆网络LSTM。4.根据权利要求2所述的通过GAN解决AFL测试模型数据不平衡的方法,其特征在于,所述步骤(4)中根据测试模型对AFL新生成的测试用例进行预测的具体过程为:查看测试用例文件的大小:当测试用例文件大小超过预设文件阈值,该测试用例直接添加到程序运行的队列,执行程序;当测试用例文件大小不超过预设文件阈值区间右端值,该测试用例通过测试模型进行预测,给出预测值;测试用例预测值为0,表明该测试用例为无用测试用例,跳过执行直接丢弃;测试用例预测值为1,表明该测试用例为可用测试用例,该测试用例添加到程序运行的队列,执行程序,并观察其是否增加新的代码覆盖范围。5.根据权利要求4所述的通过GAN解决AFL测试模型数据不平衡的方法,其特征在于,所述...

【专利技术属性】
技术研发人员:吴宣够张丽卫琳娜郑啸
申请(专利权)人:安徽工业大学
类型:发明
国别省市:

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

1