论文部分内容阅读
模糊测试(Fuzz Testing)是在2000年之后才逐步兴起的一种非常重要的漏洞挖掘技术。它基于目标软件对输入验证的不完整性假设,通过向目标软件提供非预期的输入并监视异常结果来发现软件漏洞。由于被测目标的输入状态空间巨大,加之方法的随机本质,模糊测试的漏洞挖掘效果很大程度上依赖于测试集的规模和有效性。传统单机模糊测试普遍存在时间开销大、异常触发率低的问题。因此,针对模糊测试并行化技术进行研究具有重要的意义。 本文围绕模糊测试并行化问题,深入分析了云环境下模糊测试并行化的挑战和模糊测试常见变异策略的可并行性,对如何有效利用大量测试资源提高测试用例的生成效率和如何在并行化过程中减少冗余测试提高测试集的有效性这两个问题开展了研究。本文主要贡献如下: 1、提出面向并行化的模糊测试资源感知技术。本文针对测试环境在大规模和多场景两个维度快速搭建的需求,提出一种基于云平台的动态构建方法,并深入分析了云环境下模糊测试并行化面临的挑战,提出了面向并行化的模糊测试资源感知技术,从节点资源的合理配置和节点内部的并行扩展两个层面,提高测试资源的利用率。 2、提出面向并行化的模糊测试变异技术。本文对常见的模糊测试变异策略进行研究,按照并行有效性将其划分为有序变异策略和随机变异策略两类。针对有序变异策略,采用单机连续变异的方式,确保其变异深度,避免并行所造成的冗余测试和资源浪费。针对随机变异策略,通过多机并行提高变异覆盖面,通过权重计算实现对空闲资源的再分配,使测试集中在更有效的漏洞挖掘过程上。 3、设计实现了并行模糊测试系统pFuzz@VARAS。该系统基于四级流水线并行处理结构,支持对大规模测试任务的高效并行处理。针对并行模糊测试场景中常见的节点无法连通、进程执行出错等异常,实现了基于优先级的系统容错。并且该系统支持千级并发度的模糊测试,能实现对不同测试对象的模糊测试,具有良好的扩展性和通用性。