Fuzz testing, or fuzzing, has become one of the de facto standard techniques for bug finding in the software industry. In general, fuzzing provides various inputs to the target program to discover unhandled exceptions and crashes. In business sectors where the time budget is limited, software vendors often launch many fuzzing instances in parallel as common means of increasing code coverage. However, most of the popular fuzzing tools in their parallel mode-naively run multiple instances concurrently, without elaborate distribution of workload. This can lead different instances to explore overlapped code regions, eventually reducing the benefits of concurrency. In this paper, we propose a general model to describe parallel fuzzing. This model distributes mutually-exclusive but similarly-weighted tasks to different instances, facilitating concurrency and also fairness across instances. Following this model, we develop a solution, called AFL-EDGE, to improve the parallel mode of AFL, considering a round of mutations to a unique seed as a task and adopting edge coverage to define the uniqueness of a seed. We have implemented AFL-EDGE on top of AFL and evaluated the implementation with AFL on 9 widely used benchmark programs. It shows that AFL-EDGE can benefit the edge coverage of AFL. In a 24-hour test, the increase of edge coverage brought by AFL-EDGE to AFL ranges from 9.49% to 10.20%, depending on the number of instances. As a side benefit, we discovered 14 previously unknown bugs.
翻译:Fuzz测试或fuzz测试已成为软件行业中查找错误的事实上的标准技术之一。一般而言,模糊为目标程序提供了各种投入,以发现未处理的例外和碰撞。在预算有限的商业部门,软件供应商往往同时推出许多模糊事件,作为增加代码覆盖的共同手段。然而,大多数流行的模糊工具在平行模式上同时运行多个实例,而没有详细的工作量分配。这可能导致探索重叠代码区域的不同实例,最终降低调值的效益。在本文中,我们提出了一个描述平行模糊现象的一般模式。这一模式将相互排斥但同样加权的任务传播到不同的事例,促进调值和公平性。遵循这一模式,我们开发了一个解决方案,称为AFL-EDGE, 来改善平行的FLF模式,把一轮突变到独特的种子,采用边缘覆盖来确定种子的独特性。我们已经在AL-EGEGE顶端实施了AFL-ED-EDGE, 将A-FL-FL-GA-%的覆盖率提高到9小时。它显示A-FL-GEA-CFLA-CA-S-Serreal 的测试范围,将A-SLA-li-li-IFLA-IDA-ILA-IDA-ILA-S-S-S-S-S-S-S-ILA-S-S-SLA-S-S-SLA_BLA-S-S-S-S-SLA_Bassal 的效益提高到上。它比值增加。