论文部分内容阅读
模糊测试是漏洞挖掘领域一种重要的方法,它在十分轻量级的同时而且效率非常高,许多威胁性很高的漏洞都是由模糊测试工具发现的。模糊测试主要可以分为白盒、黑盒以及灰盒模糊测试,其中灰盒模糊测试是受到关注最多、研究最为广泛的一种方法,有名的American Fuzzy Lop(AFL)便是一种灰盒模糊测试方法。虽然灰盒模糊测试技术应用十分广泛,能高效地挖掘漏洞,但是现存的灰盒模糊测试方法存在一些问题。首先,大多数方法没有考虑种子文件的优先选择顺序,导致在有限的测试周期内,能够触发程序崩溃的种子文件没有被执行,大大削弱了模糊测试的性能。其次,普通的灰盒模糊测试方法没有充分地考虑种子变异策略问题,会产生某些路径被覆盖了很多次而另外的路径几乎没有被覆盖的现象(高频、低频路径)。另外,很多灰盒模糊测试方法采用的程序反馈手段都存在问题,例如编译时插桩依赖源代码、动态二进制插桩速度过慢等,急需一种先进的程序反馈方式来改进现有的灰盒模糊测试技术。在本论文中,针对灰盒模糊测试中存在的上述三个问题,我们提出了三种方法以及构建了相应的模型,有效地解决了现存的主要问题。对于种子选择问题,我们将测试用例优先技术与灰盒模糊测试相结合,能够通过排序将种子队列中更有用的种子优先选择并执行,极大地提高了对目标程序的测试效率。其次,我们改进了现有的种子变异策略,通过收集与利用种子历史执行信息,让所有测试用例更均匀地覆盖路径,尽量避免产生高频、低频路径的现象,使灰盒模糊测试的过程更加完备。针对程序反馈方式,我们使用了英特尔Processor Trace技术来获取目标程序执行过程中的反馈信息,该方法不依赖源代码而且运行速度很快。此外,我们还实现了基于上述三种方法的原型系统并进行了相关对比实验,实验结果表明我们提出的三种灰盒模糊测试优化方法在规定的实验指标中,相比于以前的方法都有明显的性能提升。