论文部分内容阅读
模糊测试已经被证明是进行软件漏洞挖掘的最有效手段,其中AFL(American Fuzz Lop)是目前最前沿、最先进的模糊测试工具之一,也是模糊测试研究领域的热点。AFL优点突出但仍然存在一些缺陷,首先是变异策略存在局限性,不能快速覆盖包含常量比较的路径;其次是并行运行速度不理想,多进程测试中各进程不能及时交互,而且会传递大量重复测试用例。针对AFL存在的这两个缺陷,提出了两种优化方法,一是改进AFL的变异策略,增加String Match变异策略;String Match变异策略核心思想是遍历被测程序,提取全部字符串常量和数值常量,然后将常量作为测试用例发送给AFL执行。String Match变异策略主要包括字符串常量和数值常量提取的方法,以及String Match变异策略的执行时机。二是使用并发无锁技术提高多进程并行模糊测试速度。并发无锁技术相对锁可以减少开销,通过提升AFL多进程间的交互能力,整体上提高了模糊测试的速度。AFL并行系统包括快速判断测试用例是否唯一的无锁数据结构,测试用例同步的方法等。根据提出的优化方法,对原有的开源AFL系统进行改进,设计并实现了String Match变异策略和AFL并行系统。通过实验证明,String Match策略对于包含较长常量的命令解析类程序效果明显,在单位时间内发现的路径数量增加了14%;在多主机环境下,并行优化系统单位时间内发现的路径数量增加了9.42%,两种优化方法在相同时间提高了模糊测试的覆盖率。