一种基于生成对抗网络的AFL种子优化方法及系统与流程

文档序号:32350929发布日期:2022-11-26 13:04阅读:143来源:国知局
一种基于生成对抗网络的AFL种子优化方法及系统与流程
一种基于生成对抗网络的afl种子优化方法及系统
技术领域
1.本发明属于信息安全技术领域,具体涉及一种基于生成对抗网络的afl种子优化方法及系统。


背景技术:

2.据国家互联网应急中心发布的网络安全报告显示,软件代码漏洞数量近年来呈逐年上涨趋势。软件漏洞可造成直接危害安全的软件脆弱性问题,是很多恶意软件渗透的技术基础,攻击者通过对漏洞利用进行攻击,给网络空间安全造成了一定的威胁。因此,如何在漏洞造成损失之前发现并进行修复成为了需要思考的问题。
3.近年来,众多研究学者基于对软件代码自身的逻辑、模式、漏洞机理的研究,提出了许多漏洞挖掘和分析的方法,主要可以分为静态分析和动态分析两种。静态分析是在源代码、中间代码表示或二进制代码上,通过模式匹配发现代码中存在的漏洞,通过应用控制流分析,定位检测模型中的高危函数调用,典型代表有敏感控制流分析、符号执行、相似性分析等;动态分析则以模糊测试为主流,使用自动或半自动化的方式生成数据并输入到目标程序中,监测目标程序运行时是否发生异常,通过分析输入测试用例的执行过程来找出目标程序的缺陷。其中模糊测试技术由于方便易用、高效、且能发现测试开发人员思维定式外的软件漏洞的优势,成为目前使用最广泛的漏洞挖掘技术之一。
4.afl(american fuzzy lop)是第一个引入边覆盖信息的模糊测试工具,其采用编译插桩的方式,通过记录输入样本的代码覆盖率,从而调整输入样本以测试更多的代码分支,能有效增加发现漏洞的概率。该方法根据用户提供的一组输入,通过位翻转、字典、数学运算、特殊值替换、随机、拼接等方式进行变异从而生成新的测试用例,如果触发了被测试目标程序中的新执行路径,则将该测试用例加入到有效的种子队列中,否则丢弃。从上述过程可以发现,初始的测试用例输入对变异生成的种子有效性会造成一定的影响,在原始的afl中是按照固定顺序从优先种子集中进行选择,但是在执行一轮循环后,被选择的种子可能没有覆盖到所有的边,所以如何提高变异生成的种子有效性是需要思考的问题。


技术实现要素:

5.(一)要解决的技术问题
6.本发明要解决的技术问题是:在不更改变异策略的情况下,如何对初始测试用例进行优化,从而提高新生成的测试用例的有效性,降低afl的时间成本,增强漏洞挖掘的效率。
7.(二)技术方案
8.为了解决上述技术问题,本发明提供了一种基于生成对抗网络的afl种子优化方法,包括以下步骤:
9.s1、择优提供一个有效的初始种子作为生成对抗网络模型的输入;
10.s2、使用所述生成对抗网络模型生成接近有效初始种子的测试用例;
11.s3、利用afl变异策略对接近有效初始种子的测试用例或优化的种子进行变异,得到变异的n个测试用例;
12.s4、使用变异的n个测试用例对目标程序进行测试;
13.s5、测试完成后,分别监测变异后的n个测试用例是否能够触发新路径,如果有新路径产生,则将对应的测试用例标记为有效的测试用例,并加入种子队列,如果没有触发新路径,则丢弃该测试用例;
14.s6、收集所有的测试用例的覆盖率指标信息并进行处理后反馈给生成对抗网络模型;
15.s7、生成对抗网络模型依据反馈的覆盖率指标信息进行对抗训练,生成优化的种子,即优化的测试用例;
16.s8、循环重复步骤s3至s7,直到生成对抗网络模型达到纳什平衡状态后停止测试,得到最终的种子队列。
17.优选地,步骤s1包括:从优先种子集合中随机选择若干有效的测试用例,横向比较这些测试用例的覆盖率指标、有效性、稳定性,然后选择出其中最优的作为初始种子,并输入到生成对抗网络模型中。
18.优选地,生成对抗网络模型由生成器和判别器组成,步骤s2中,使用生成器生成接近有效初始种子的生成种子,使用判别器计算生成种子与有效初始种子之间的损失,然后反馈给生成器,通过生成器和判别器之间的对抗博弈训练,最后得到接近有效初始种子的测试用例。
19.优选地,步骤s3包括:在afl的确定性变异阶段采用比特翻转、字节翻转、简单运算、特殊值替换这些变异策略,在随机性变异阶段采用随机、拼接、插入、复制、删除请求信息这些变异策略,对测试用例进行变异,从而得到变异的n个测试用例。
20.优选地,步骤s5、s6的顺序互换,或同时执行。
21.优选地,步骤s6包括:使用有效的测试用例作为被测试目标程序的输入,然后记录该测试用例的分支覆盖率和路径覆盖率指标信息,并对其进行归一化,得到归一化后的一维特征向量,同时反馈给生成对抗网络模型;所述测试用例的分支覆盖率是指测试用例在目标程序中触发的分支数占该程序总分支数的比例;所述测试用例的路径覆盖率是指能够触发新路径的测试用例数占变异的测试用例总数的比例。
22.优选地,步骤s6中,对覆盖率指标信息归一化后得到一维特征向量反馈给生成对抗网络模型,具体的求解方式为:
23.设变异后的测试用例为测试用例1、测试用例2、

、测试用例n,测试用例i的分支覆盖率为x(i),能够触发新执行路径的测试用例数为n,则由覆盖率指标信息组成的一维特征向量为:y=[x(1),x(2),

,x(n),n/n],然后采用最大最小归一化方法进行归一化,从而得到覆盖率指标信息的归一化后的一维特征向量;
[0024]
其中,所述最大最小归一化方法的算术表达式为:
[0025][0026]
其中,xi为由覆盖率指标信息组成的一维特征向量y中第i个元素值,minvalue为y中的最小元素值,maxvalue为y中的最大元素值。
[0027]
最后所得覆盖率指标信息的归一化后的一维特征向量为:c=[y1,y2,

,yn,y
n+1
]。
[0028]
优选地,步骤s7包括:将步骤s6得到的归一化后的覆盖率指标信息添加在生成对抗网络模型的外部,作为约束条件,使得生成对抗网络模型朝着提高生成种子的覆盖率指标信息的方向进行训练,得到优化的种子。
[0029]
本发明还提供了一种用于实现所述方法的基于生成对抗网络的afl种子优化系统,包括测试用例生成模块、测试用例变异模块、有效测试用例确定模块、迭代优化模块;
[0030]
所述测试用例生成模块由生成对抗网络模型进行种子的生成,具体来说,首先从优先种子集中择优选择一个有效的初始种子,然后输入到生成对抗网络模型中,由生成对抗网络模型生成接近该种子的初始测试用例;
[0031]
所述测试用例变异模块用于对测试用例进行变异生成新的测试用例,具体来说,在afl的确定性变异阶段,对测试用例的一个比特位或字节位进行突变、或者进行特殊值的替换操作,得到新的测试用例;在afl的随机性变异阶段采用随机变异方法,得到新的测试用例;
[0032]
所述有效测试用例确定模块用于监测变异的测试用例是否能触发新的执行路径,并记录变异的测试用例的分支覆盖率和路径覆盖率信息,具体来说,使用变异的测试用例对待测目标程序进行测试,如果一个测试用例触发了新的执行路径,则将该测试用例视作有效的,并加入到种子队列中,如果没有触发新的执行路径,则丢弃该测试用例;同时记录所有变异测试用例的分支覆盖率和路径覆盖率信息,即单个测试用例在目标程序中触发的分支数占该程序总分支数的比例,以及能够触发新路径的测试用例数占变异的测试用例总数的比例。
[0033]
所述迭代优化模块用于对生成对抗网络模型进行训练的迭代优化,从而达到提高生成种子的有效性和稳定性的效果。
[0034]
本发明还提供了一种所述的方法或所述系统在信息安全技术领域中的应用。
[0035]
(三)有益效果
[0036]
本发明提供的基于生成对抗网络的afl种子优化方法及系统,利用了生成对抗网络模型对抗博弈训练的思想,通过不断地循环迭代,达到对初始测试用例优化的效果,一方面有利于提供更多的初始测试用例,为模糊测试提供了更多的数据支撑,另一方面,有利于对初始测试用例进行不断地优化,增强种子的有效性,触发更多的新执行路径,为提高afl漏洞挖掘的效率和成功率提供了新的解决方案和研究思路。
附图说明
[0037]
图1为本发明提供的基于生成对抗网络的afl种子优化方法流程图;
[0038]
图2为本发明提供的生成对抗网络模型的结构图。
具体实施方式
[0039]
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
[0040]
本发明提供了一种基于生成对抗网络的afl种子优化方法及系统,旨在研究初始测试用例输入对afl有效路径覆盖率的影响,通过使用生成对抗网络模型对种子进行生成,
然后利用该模型对抗博弈的思想,依据新测试用例的指标反馈信息不断进行迭代优化,最终使得生成的种子能达到提高afl有效路径覆盖率的最优效果,从而对afl的效率起到增强效果,提高模糊测试漏洞挖掘的效率。
[0041]
其基本思想是:首先从优先种子集中择优选择一个有效的初始种子作为生成对抗网络模型的输入,并依据生成对抗网络模型对抗博弈的思想,生成接近有效初始种子的测试用例,然后使用比特翻转、数学运算、特殊值替换、拼接等变异策略生成多个新的测试用例,对目标程序进行测试,把能够触发新路径的测试用例加入有效种子队列,同时记录所有测试用例的分支覆盖率和路径覆盖率信息,对其进行向量归一化后反馈给生成对抗网络模型,继而对生成的种子进一步优化,通过多次循环迭代操作,能够使得生成种子的有效性得到逐步的提升,有利于增加afl的路径覆盖率,提高漏洞挖掘的效率。
[0042]
本发明提供的一种基于生成对抗网络的afl种子优化方法包括以下步骤:
[0043]
s1、择优提供一个有效的初始种子作为生成对抗网络模型的输入;本发明中,种子即为测试用例;
[0044]
s2、使用所述生成对抗网络模型生成接近有效初始种子的测试用例;
[0045]
s3、利用afl变异策略对接近有效初始种子的测试用例或优化的种子进行变异,得到变异的n个测试用例,即测试用例1、测试用例2、

、测试用例n;
[0046]
s4、使用变异的n个测试用例对目标程序进行测试;
[0047]
s5、测试完成后,分别监测变异后的n个测试用例是否能够触发新路径,如果有新路径产生,则将对应的测试用例标记为有效的测试用例,并加入种子队列,如果没有触发新路径,则丢弃该测试用例;
[0048]
s6、收集所有的测试用例的覆盖率指标信息并进行处理后反馈给生成对抗网络模型;
[0049]
s7、生成对抗网络模型依据反馈的覆盖率指标信息进行对抗训练,生成优化的种子,即优化的测试用例;
[0050]
s8、循环重复步骤s3、s4、s5、s6、s7,直到生成对抗网络模型达到纳什平衡状态后停止测试,得到最终的种子队列。通过多次循环迭代操作,使得生成对抗网络模型的生成效果不断优化,从而提高生成种子的有效性,当生成对抗网络模型达到纳什平衡状态时,生成种子的优化效果接近最优。
[0051]
以上步骤s5、s6的顺序可以互换,也可以同时执行。
[0052]
步骤s1包括:从优先种子集合中随机选择若干有效的测试用例,横向比较这些测试用例的覆盖率指标、有效性、稳定性等,然后选择出其中最优的作为初始种子,并输入到生成对抗网络模型中;
[0053]
生成对抗网络模型由生成器和判别器组成,步骤s2中,使用生成器生成接近有效初始种子的生成种子,使用判别器计算生成种子与有效初始种子之间的损失,然后反馈给生成器,通过生成器和判别器之间的对抗博弈训练,最后得到接近有效初始种子的测试用例;
[0054]
步骤s3包括:在afl的确定性变异阶段采用比特翻转、字节翻转、简单运算、特殊值替换等变异策略,在随机性变异阶段采用随机、拼接、插入、复制、删除请求信息等变异策略,根据以上变异策略对测试用例进行变异,从而得到变异的n个测试用例;
[0055]
步骤s6包括:使用有效的测试用例作为被测试目标程序的输入,然后记录该测试用例的分支覆盖率和路径覆盖率指标信息,并对其进行归一化,得到归一化后的一维特征向量,同时反馈给生成对抗网络模型;
[0056]
所述测试用例的分支覆盖率是指测试用例在目标程序中触发的分支数占该程序总分支数的比例;
[0057]
所述测试用例的路径覆盖率是指能够触发新路径的测试用例数占变异的测试用例总数的比例;
[0058]
步骤s6中,对覆盖率指标信息归一化后得到一维特征向量,具体的求解方式为:
[0059]
设变异后的测试用例为测试用例1、测试用例2、

、测试用例n,测试用例i的分支覆盖率为x(i),能够触发新执行路径的测试用例数为n,则由覆盖率指标信息组成的一维特征向量为:y=[x(1),x(2),

,x(n),n/n],然后采用最大最小归一化方法进行归一化,从而得到覆盖率指标信息的归一化后的一维特征向量。
[0060]
其中,所述最大最小归一化方法的算术表达式为:
[0061][0062]
其中,xi为由覆盖率指标信息组成的一维特征向量y中第i个元素值,minvalue为y中的最小元素值,maxvalue为y中的最大元素值。
[0063]
最后所得覆盖率指标信息的归一化后的一维特征向量为:c=[y1,y2,

,yn,y
n+1
]。
[0064]
步骤s7包括:将步骤s6得到的归一化后的覆盖率指标信息添加在生成对抗网络模型的外部,作为约束条件,使得生成对抗网络模型朝着提高生成种子的覆盖率指标信息的方向进行训练,得到优化的种子;
[0065]
本发明提供的一种基于生成对抗网络的afl种子优化系统,包括测试用例生成模块、测试用例变异模块、有效测试用例确定模块、迭代优化模块。下面对每个模块的功能进行详细描述。
[0066]
(1)测试用例生成模块
[0067]
测试用例生成模块主要是由生成对抗网络模型进行种子的生成,具体来说,首先从优先种子集中择优选择一个有效的初始种子,然后输入到生成对抗网络模型中,由生成对抗网络模型生成接近该种子的初始测试用例。
[0068]
(2)测试用例变异模块
[0069]
测试用例变异模块主要是对测试用例进行变异生成新的测试用例,具体来说,在afl的确定性变异阶段,对测试用例的某个比特位或字节位进行突变、或者进行特殊值的替换操作,得到新的测试用例;在afl的随机性变异阶段采用随机变异方法,比如对初始测试用例的字节位进行随机突变、重排序、替换或删除子序列信息等,得到新的测试用例。
[0070]
(3)有效测试用例确定模块
[0071]
有效测试用例确定模块用于监测变异的测试用例是否能触发新的执行路径,并记录变异的测试用例的分支覆盖率和路径覆盖率信息,具体来说,使用变异的测试用例对待测目标程序进行测试,如果某个测试用例触发了新的执行路径,则将该测试用例视作有效的,并加入到种子队列中,如果没有触发新的执行路径,则丢弃该测试用例;同时记录所有变异测试用例的分支覆盖率和路径覆盖率信息,即单个测试用例在目标程序中触发的分支
数占该程序总分支数的比例,以及能够触发新路径的测试用例数占变异的测试用例总数的比例。
[0072]
(4)迭代优化模块
[0073]
迭代优化模块主要用于对生成对抗网络模型进行训练的迭代优化,从而达到提高生成种子的有效性和稳定性的效果。
[0074]
作为一种示例,生成对抗网络模型的架构如图2所示,整个模型由生成器和判别器组成,并在模型的外部添加了对覆盖率指标信息归一化后得到的一维特征向量作为约束条件来控制整个模型的优化生成方向。其中,生成器的输入为随机变量,输出为接近有效初始种子的生成种子,判别器的输入为有效初始种子和生成种子,输出为有效初始种子和生成种子之间的损失,然后反馈给生成器,通过生成器和判别器之间的对抗博弈训练,最终使得生成对抗网络模型达到纳什平衡状态。
[0075]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1