摘要:
尽管许多真实世界的项目都附带配置启用/禁用功能,fuzz大多被用于测试单配置这些项目。在这项工作中,我们首先进行实证研究,以了解程序配置影响起毛性能。我们发现限制竞选一个配置会导致未能覆盖大量的代码。我们还观察到不同的项目配置贡献不同的大量的代码覆盖率,挑战,每一个可以单独有效地晕。出于这两个观测结果,我们建议ConfigFuzz,模糊配置以及正常输入。ConfigFuzz转换目标程序编码其程序选项内fuzzable输入的一部分,所以可以重用现有fuzz的变异算子模糊程序配置。我们实例化ConfigFuzz六个可配置的,常见的模糊目标,并集成在FuzzBench处决。在我们的评估中,ConfigFuzz优于两个基线fuzz四目标,而结果混杂在其他目标由于程序大小和配置空间。我们也分析了期权晕ConfigFuzz以及它们是如何影响性能。
1 介绍
问题:
大多数模糊器(及其科学评估)集中在给定单个固定程序配置(例如,引用[16,19]),因此可能无法正确测试程序功能的重要部分。因此,潜在的罕见缺陷可能会逃过检测,对模糊化性能的科学评估可能无法说明全貌。
现状
对此问题的简单补救方法是模糊所有有效的程序配置。然而,现实世界的程序的配置空间通常很大,这使得彻底模糊所有配置是不可行的。软件测试文献对这个问题进行了广泛的研究。一个广泛采用的解决方案是组合测试[17,18],其提出测试覆盖配置空间的某些属性的配置样本(例如,所有选项对出现在样本中的一些配置中)。此外,已经开发了基于字典或语法的方法来模糊程序配置[27,29].由这些技术生成的程序配置可以用作输入来模糊程序的输入文件。
然而,由于缺乏进一步的预先了解,现有技术将在每个配置上花费相同的时间&#