一种基于变异策略的并行模糊测试调度方法及装置制造方法及图纸

技术编号:21913817 阅读:17 留言:0更新日期:2019-08-21 12:23
本发明专利技术公开了一种基于变异策略的并行模糊测试调度方法及装置。本方法为:1)对模糊测试器中用于生成测试用例数据的变异策略进行静态分配,为并行的不同测试实例分配不同的变异策略;2)各测试实例根据分配的变异策略生成测试样本对设定目标程序进行模糊测试过程中,收集不同变异策略对该目标程序作用时产生的异常数目和测试覆盖率信息;3)根据各变异策略对应的异常数目和测试覆盖率信息,计算各变异策略对该目标程序的优势权重;4)根据变异策略的优势权重建立并行调度模型,动态优化并行模糊测试调度方案。本发明专利技术利用优势变异策略来优化不同目标程序的并行模糊测试执行效果,具有普遍适用性。

A Parallel Fuzzy Test Scheduling Method and Device Based on Variation Strategy

【技术实现步骤摘要】
一种基于变异策略的并行模糊测试调度方法及装置
本专利技术涉及并行模糊测试领域的调度技术,主要是结合模糊测试中变异策略(MutatorStrategy)对目标程序的作用效果进行动态并行调度,提高并行模糊测试执行效率。
技术介绍
模糊测试作为一项重要的漏洞挖掘技术,由于其对程序源代码依赖程度低,从发现漏洞到复现漏洞容易等特点,被广泛的应用到了数据库应用程序、安全产品(如防火墙等)、操作系统、WEB应用、应用程序、网络设备(交换机等)等目标的漏洞挖掘过程中。例如,微软在将其产品推向市场之前大约有20%到25%的漏洞都是通过模糊测试发现的。但是,由于在模糊测试的黑盒特性,在生成测试用例过程中所使用到的变异方法是随机的,随机的变异方法容易产生冗余用例,从而严重的影响到了模糊测试的效率。因此,如何避免模糊测试应用过程中的冗余测试,提高模糊测试路径覆盖率和异常触发率便成为了安全领域研究人员研究热点。模糊测试作为一种随机自动化测试技术需要消耗大量的计算资源,随着云计算应用的普及,各大厂商和机构均利用并行化方法提高模糊测试效率。如谷歌的并行化模糊测试系统ClusterFuzz利用数百台虚拟机器进行并行测试;微软推出的ProjectSpringField项目利用基于云的并行系统为软件开发者提供软件安全检测服务。可见,并行模糊测试已成为工业界的通用测试方法,并行模糊测试方法能够有效缓解模糊测试随机性和盲目性导致的测试效率低等问题。但是现有的并行模糊测试方法由于缺少实例间协同机制,单纯的利用计算资源进行多实例并行方法不能有效缓解模糊测试的高冗余、低覆盖率等问题。在现有的基于变异的模糊测试方法中,模糊测试器会对输入样本进行两个阶段的处理,第一阶段是对输入样本进行确定性的有序变异,即对样本完整的进行逐位翻转等有序变异,第二阶段是对输入样本进行随机变异,在随机变异阶段,模糊器随机选取一种变异策略对样本随机位置进行变异,并通过重复执行该过程实现对输入样本的变异。由于这种变异方法产生的输入用例具有很大的随机性,在多实例上对一个测试目标的模糊测试在一定程度上增加了模糊测试覆盖到更多程序路径以及触发更多异常的概率。但是直接以多实例并行的方法进行模糊测试规模化应用存在如下问题:(1)由于模糊测试本身的随机性、盲目性的限制,在多实例上直接使用并行模糊测试会造成大量的冗余,不能充分提高并行模糊测试的效率。(2)虽然随机变异阶段产生变异的位置不是确定的,但是针对不同的被测程序,可能会有不同的优势变异策略集合(优势变异策略是指应用其所产生的输入用例相对于其他变异策略来说可以触发更多的新路径),因此在多实例中直接使用传统的变异方式进行并行模糊测试难以充分发挥优势策略的变异优势,不能充分提高并行模糊测试的效率。综合上述并行模糊测试和基于变异模糊测试方法的背景,为了提高并行模糊测试中的测试综合覆盖率和漏洞挖掘效果,本专利技术提出了一种基于变异策略并行的模糊测试调度方法及装置。
技术实现思路
并行模糊测试可以利用大规模的计算资源作为测试实例并行的进行模糊测试,每个测试实例都可以对相同的被测程序进行模糊测试,大规模并行模糊测试可以有效的提高模糊测试的效率。但是如果在每个测试实例对相同的被测试程序都使用相同的变异策略集合随机进行组合应用来生成测试用例,容易出现大量的冗余,从而影响并行模糊测试的效率。因此如何在大规模的并行模糊测试的测试实例中优化变异策略的调度,以实现在限定时间内挖掘出尽可能多的安全漏洞是一个值得研究的问题。为了克服现有并行模糊测试技术的不足,本专利技术提出了基于变异策略的并行模糊测试调度方法,利用确定性变异和基于优势变异策略的随机变异结合的方式,提高并行模糊测试的效率。本专利技术的技术方案为:一种基于变异策略的并行模糊测试调度方法,其步骤包括:1)对模糊测试器中用于生成测试用例数据的变异策略进行静态分配,为并行的不同测试实例分配不同的变异策略;2)各测试实例根据分配的变异策略生成测试样本对设定目标程序进行模糊测试过程中,收集不同变异策略对该目标程序作用时产生的异常数目和测试覆盖率信息;3)根据各变异策略对应的异常数目和测试覆盖率信息,计算各变异策略对该目标程序的优势权重;4)根据变异策略的优势权重建立并行调度模型,动态优化并行模糊测试调度方案。进一步的,计算变异策略的优势权重的方法为:21)基于测试实例i所分配的变异策略i对初始输入种子测试用例进行变异,生成多个待测试样本;22)执行该目标程序并使用插桩工具对该目标程序进行插桩;23)调度测试实例对步骤11)中生成的测试样本进行逐一的测试并对该目标程序进行实时监控,以获取程序异常数Mbug;24)对该目标程序运行过程中插桩获取的信息进行统计,更新该目标程序的测试覆盖率信息Ccov;25)判断步骤24)中收集到的测试覆盖率信息是否覆盖到了该目标程序的新路径,如果是则记录该测试样本为有效测试用例;26)分别统计所有测试样本对应的程序异常数和测试覆盖率信息,并进行归一化处理,得到该变异策略i的归一化异常率crashmutator和归一化测试覆盖率coveragemutator;27)根据该变异策略i的异常率crashmutator和测试覆盖率coveragemutator计算该变异策略i的优势权重。进一步的,使用公式scoremutator=α*crashmutator+β*coveragemutator计算出每个变异策略对应的优势权重scoremutator;其中,α、β表示两个因素的影响系数,α、β取值在0至1之间,且α+β=1。进一步的,根据变异策略优势权重建立并行调度模型,动态优化并行模糊测试调度方案的方法为:41)选取优势权重靠前的K个变异策略作为该目标程序的优势变异策略,记为MRK;然后更新每个测试实例上采用的变异策略集合;其中,测试实例i初始静态分配的变异策略集合为MRi,更新后的变异策略集合MRi’=MRiUMRK,每个变异策略被调度到的概率为scorem表示测试实例i中变异策略m的优势权重,表示测试实例i中所有变异策略MRi’的优势权重之和;42)测试实例i基于变异策略集合MRi’生成该目标程序的测试样本,对该目标程序进行测试;43)测试实例i运行时间T后,将保留的有效测试用例发送给其他测试用例;并接收其他测试实例发送过来的有效测试用例;其中,测试实例i生成的测试样本a对该目标程序进行测试的测试覆盖率信息覆盖到了该目标程序的新路径,则该测试样本a为有效测试用例;44)测试实例i将其他实例同步过来的有效测试用例作为种子用例继续进行生成该目标程序的测试样本,对该目标程序进行测试。进一步的,采用四元组(目标程序,变异策略,异常数,路径覆盖率)记录变异策略对应的异常数目和测试覆盖率信息。一种基于变异策略的并行模糊测试调度装置,其特征在于,包括静态分配模块、信息采集模块、优势权重计算模块、优化调度模块和多个测试实例;其中,静态分配模块,用于对模糊测试器中用于生成测试用例数据的变异策略进行静态分配,为并行的不同测试实例分配不同的变异策略;测试实例,用于根据分配的变异策略生成测试样本对设定目标程序进行模糊测试;信息采集模块,用于收集模糊测试过程中,不同变异策略对该目标程序作用时产生的异常数目和测试覆盖率本文档来自技高网
...

【技术保护点】
1.一种基于变异策略的并行模糊测试调度方法,其步骤包括:1)对模糊测试器中用于生成测试用例数据的变异策略进行静态分配,为并行的不同测试实例分配不同的变异策略;2)各测试实例根据分配的变异策略生成测试样本对设定目标程序进行模糊测试过程中,收集不同变异策略对该目标程序作用时产生的异常数目和测试覆盖率信息;3)根据各变异策略对应的异常数目和测试覆盖率信息,计算各变异策略对该目标程序的优势权重;4)根据变异策略的优势权重建立并行调度模型,动态优化并行模糊测试调度方案。

【技术特征摘要】
1.一种基于变异策略的并行模糊测试调度方法,其步骤包括:1)对模糊测试器中用于生成测试用例数据的变异策略进行静态分配,为并行的不同测试实例分配不同的变异策略;2)各测试实例根据分配的变异策略生成测试样本对设定目标程序进行模糊测试过程中,收集不同变异策略对该目标程序作用时产生的异常数目和测试覆盖率信息;3)根据各变异策略对应的异常数目和测试覆盖率信息,计算各变异策略对该目标程序的优势权重;4)根据变异策略的优势权重建立并行调度模型,动态优化并行模糊测试调度方案。2.如权利要求1所述的方法,其特征在于,计算变异策略的优势权重的方法为:21)基于测试实例i所分配的变异策略i对初始输入种子测试用例进行变异,生成多个待测试样本;22)执行该目标程序并使用插桩工具对该目标程序进行插桩;23)调度测试实例对步骤11)中生成的测试样本进行逐一的测试并对该目标程序进行实时监控,以获取程序异常数Mbug;24)对该目标程序运行过程中插桩获取的信息进行统计,更新该目标程序的测试覆盖率信息Ccov;25)判断步骤24)中收集到的测试覆盖率信息是否覆盖到了该目标程序的新路径,如果是则记录该测试样本为有效测试用例;26)分别统计所有测试样本对应的程序异常数和测试覆盖率信息,并进行归一化处理,得到该变异策略i的归一化异常率crashmutator和归一化测试覆盖率coveragemutator;27)根据该变异策略i的异常率crashmutator和测试覆盖率coveragemutator计算该变异策略i的优势权重。3.如权利要求2所述的方法,其特征在于,使用公式scoremutator=α*crashmutator+β*coveragemutator计算出每个变异策略对应的优势权重scoremutator;其中,α、β表示两个因素的影响系数,α、β取值在0至1之间,且α+β=1。4.如权利要求1所述的方法,其特征在于,根据变异策略优势权重建立并行调度模型,动态优化并行模糊测试调度方案的方法为:41)选取优势权重靠前的K个变异策略作为该目标程序的优势变异策略,记为MRK;然后更新每个测试实例上采用的变异策略集合;其中,测试实例i初始静态分配的变异策略集合为MRi,更新后的变异策略集合MRi’=MRiUMRK,每个变异策略被调度到的概率为scorem表示测试实例i中变异策略m的优势权重,表示测试实例i中所有变异策略MRi’的优势权重之和;42)测试实例i基于变异策略集合MRi’生成该目标程序的测试样本,对该目标程序进行测试;43)测试实例i运行时间T后,将保留的有效测试用例发送给其他测试用例;并接收其他测试实例发送过来的有效测试用例;其中,测试实例i生成的测试样本a对该目标程序进行测试的测试覆盖率信息覆盖到了该目标程序的新路径,则该测试样本a为有效测试用例;44)测试实例i将其他实例同步过来的有效测试用例作为种子用例继续进行生成该目标程序的测试样本,对该目标程序进行测试。5.如权利要求1所述的方法,其特征在于,采用四元组(目标程序,变异策略,异常数,路径覆盖率)记录变异策略对应的异常数目和测试覆盖率信息。6.一种基于变异策...

【专利技术属性】
技术研发人员:邹燕燕尹嘉伟霍玮朴爱花李丰刘宝旭邹维
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1