目录
挑战1 :Usability Issues of Existing Fuzzers.
挑战2:Lack of Pragmatic(实用的) Real-World Benchmark Programs.
挑战3:Lack of Proper and Comprehensive Performance Metrics.
4.Evaluations of the State-of-the-art Fuzzers
摘要:
本文介绍了一个名为UNI FUZZ的开源平台,用于全面、定量地评估软件漏洞检测工具(模糊测试)(fuzzer)。该平台整合了35个可用的fuzzer、20个真实世界程序的基准测试和六类性能指标。作者通过对现有fuzzer的系统研究,发现并修复了一些缺陷,并将它们整合到UNI FUZZ中。作者提出了一组实用的性能指标,从六个互补的角度评估fuzzer的性能。作者使用UNI FUZZ对几个著名的fuzzer进行了深入评估,发现没有一个fuzzer在所有目标程序上表现最佳。作者还发现了一些之前被忽视的因素,如仪器方法和崩溃分析工具,它们对fuzzer的性能评估至关重要。作者希望这些发现能够为可靠的fuzzer评估提供启示,以便未来能够发现有前途的fuzzer原语,有效地促进fuzzer设计。
1 Introduction
现有的Fuzzing技术存在一些问题,如缺乏可靠的实验结果、缺乏统一的基准测试程序和不完整的性能指标等。为了解决这些问题,作者设计并实现了一个名为“UNI FUZZ”的开源、综合和实用的度量驱动平台,用于评估Fuzzing技术。该平台具有高可用性、实用性和综合性能指标,可以帮助用户更好地评估Fuzzing技术。
主要贡献:
- 设计并实现了开源的UNI FUZZ平台,用于综合、量化地评估35种流行的fuzzer性能,并提供了易于安装和部署的Dockerfile。同时,UNI FUZZ还提供了20个真实世界程序的基准测试套件和6类性能指标,以及用于崩溃分析的工具。
- 利用UNI FUZZ进行了8种基于覆盖率的fuzzer的广泛评估,发现没有一种fuzzer在所有测试基准程序上表现最好,这揭示了以往fuzzer评估中可能存在的主观性和偏见。
- 从评估中获得了对未来fuzzer研究的重要见解和发现,例如发现了一些之前未考虑的因素会显著影响fuzzer的性能,需要更加严格和精确地进行fuzzer实验。
2 Motivation of UNI FUZZ
对模糊器进行如此全面的评估存在许多挑战,如下所示:
挑战1 :Usability Issues of Existing Fuzzers.
现有的模糊测试工具存在可用性问题,有些难以直接使用,有些实现存在缺陷。因此需要对现有工具进行测试,努力提高工具的可用性。同时,需要进行深入比较研究,以指导新工具的设计。
挑战2:Lack of Pragmatic(实用的) Real-World Benchmark Programs.
缺乏实用的现实世界基准程序。
好的基准程序应具备以下特点:
首先,它们应具有与现实世界程序相似的特征,包括编码风格、大小和漏洞。这样,模糊测试器在这些基准程序上的性能才能更具指示性。其次,为了提供全面的评估,基准程序应展示多样的功能、大小和漏洞类型等。第三,从发现漏洞的实际评估角度来看,每个基准程序应至少包含一个在合理时间内可以发现的漏洞,这意味着实用基准的两个重要属性。(1)该程序应至少包含一个漏洞。否则,它无法有效区分模糊测试器在发现漏洞方面的能力。(2)发现漏洞的难度应该是合理的。否则,可能会导致无法承受的评估开销。
现有的模糊测试基准程序可以分为两类:合成程序和现实世界程序。
无论是合成的还是现实的,都不令人满意。
现有的合成基准通常规模较小,人为注入的漏洞是根据一些相对简单的机制设计和注入的。因此,模糊测试器的开发者可以通过了解注入模式和机制来提高其性能,评估结果可能会有偏差。因此,在这些合成基准程序上表现良好的模糊测试器可能在现实世界程序上效果不佳。
现有的真实世界基准程序存在以下问题:缺乏标准和充足的真实世界基准程