Coverage-guided gray-box fuzzing (CGF) is an efficient software testing technique. There are usually multiple objectives to optimize in CGF. However, existing CGF meth- ods cannot successfully find the optimal values for multiple objectives simultaneously. In this paper, we propose a gray-box fuzzer for multi-objective optimization (MOO) called MobFuzz. We model the multi-objective optimization process as a multi- player multi-armed bandit (MPMAB). First, it adaptively selects the objective combination that contains the most appropriate objectives for the current situation. Second, our model deals with the power schedule, which adaptively allocates energy to the seeds under the chosen objective combination. In MobFuzz, we propose an evolutionary algorithm called NIC to optimize our chosen objectives simultaneously without incurring additional performance overhead. To prove the effectiveness of MobFuzz, we conduct experiments on 12 real-world programs and the MAGMA data set. Experiment results show that multi-objective optimization in MobFuzz outperforms single-objective fuzzing in the baseline fuzzers. In contrast to them, MobFuzz can select the optimal objective combination and increase the values of multiple objectives up to 107%, with at most a 55% reduction in the energy consumption. Moreover, MobFuzz has up to 6% more program coverage and finds 3x more unique bugs than the baseline fuzzers. The NIC algorithm has at least a 2x improvement with a performance overhead of approximately 3%.
翻译:覆盖引导的灰盒模糊测试(CGF)是一种高效的软件测试技术。在CGF中通常存在多个需要优化的目标。然而,现有CGF方法无法同时成功找到多个目标的最优值。本文提出了一种面向多目标优化(MOO)的灰盒模糊器MobFuzz。我们将多目标优化过程建模为多人多臂赌博机(MPMAB)问题。首先,它自适应地选择包含最适应当前态势的目标组合。其次,我们的模型处理能量调度问题,即在所选目标组合下自适应地为种子分配能量。在MobFuzz中,我们提出了一种名为NIC的进化算法,能够在不产生额外性能开销的情况下同时优化所选目标。为验证MobFuzz的有效性,我们在12个真实程序及MAGMA数据集上进行了实验。实验结果表明,MobFuzz中的多目标优化性能优于基线模糊器的单目标模糊方法。相比之下,MobFuzz能选择最优目标组合,多目标值最高提升107%,同时能耗最多降低55%。此外,MobFuzz的程序覆盖率比基线模糊器高出6%,发现的独特缺陷数量为其3倍以上。NIC算法性能提升至少2倍,性能开销约为3%。