如何识别高质量的模糊测试研究:关键指标与评估指南

本文探讨模糊测试研究中常见的基准不一致问题,提供10项评估准则,包括工具对比、输出可读性、启发式差异处理、数据集选择、配置一致性等,帮助读者科学评判模糊测试论文质量。

如何识别高质量的模糊测试研究

在过去三年发表的近200篇软件模糊测试论文中,大多数——甚至包括一些来自高影响力会议的论文——都只是学术喧嚣。模糊测试研究存在基准不一致和主观性强的问题,使这一强大领域处于发展停滞状态。本文旨在解释这一现象的原因,并为如何阅读模糊测试出版物提供指导。

研究背景与挑战

研究人员在构建下一代模糊测试工具时进行着高风险的博弈。重大突破可能使现有技术过时,没有人愿意使用世界第二的模糊测试工具。因此,研究人员必须证明他们的工作在发现漏洞方面如何超越现有技术。

核心问题在于如何客观测试模糊测试器的效能。目前缺乏一套统计严谨、可靠且可复现的通用基准。文献中持续存在不一致的模糊测试度量,阻碍了有意义的元分析。这正是Andrew Ruef在2018年多伦多SIGSAC计算机与通信安全会议上发表的论文《评估模糊测试》的研究动机。

评估模糊测试的关键准则

1. 与主流基线工具对比

将新研究与主流基线工具进行对比,如american fuzzy lop (AFL)、Basic Fuzzing Framework (BFF)、libfuzzer、Radamsa和Zzuf。作者指出:“确实需要一个坚实、独立定义的基准套件,例如模糊测试的DaCapo或SPEC10。”

2. 输出结果易于阅读和比较

评估者需要能够轻松解读模糊测试器的结果。正如Ruef及其同事所言:“清晰了解基本事实可以避免对对应同一漏洞的输入进行重复计数,并允许评估工具的误报和漏报。”

3. 考虑启发式差异

启发式方法影响模糊测试器如何开始和执行代码路径搜索。如果两个模糊测试器的启发式方法导致它们瞄准不同目标,就会产生不同结果。评估者必须考虑这种影响才能进行公平比较。

4. 使用代表性数据集

目标数据集应包含可区分漏洞,如Cyber Grand Challenge二进制文件、LAVA-M、Google的模糊测试套件以及nm、objdump、cxxfilt、gif2png和FFmpeg等本地程序。缺乏通用基准套件时,评估者应寻找使用上述数据集的研究。

5. 配置初始状态一致性

如果两个模糊测试器的配置参数反映不同优先级,将产生不同结果。虽然不能期望所有研究人员使用相同配置参数,但要求在研究报告中明确这些参数是合理的。

6. 超时值至少24小时

在作者评审的32篇论文中,11篇将超时限制在"少于5或6小时"。他们对AFL和AFLFast的测试结果显示:使用非空种子集时,AFL在6小时内表现优于AFLFast,但24小时后趋势逆转。

7. 统一定义独特崩溃

由于行业对如何分类独特崩溃和漏洞存在分歧,评估者需要了解研究人员的定义方法。作者警告:“我们的实验显示,去重或分类崩溃的启发式方法可能严重高估漏洞数量,甚至可能通过错误分组崩溃输入来抑制漏洞。”

8. 一致的输入种子文件

作者发现模糊测试器的"性能可能因使用的种子而有显著差异。特别是,两个不同的非空输入不一定产生相似性能,空种子的效果可能比预期更好。“令人惊讶的是,许多被评估的论文没有仔细考虑种子选择对算法改进的影响。

9. 每次配置至少30次运行并测量方差

通过多次运行,可以忽略异常值。不要比较单次运行的结果,而应寻找不仅进行多次运行,还使用统计测试来解释性能差异的研究。

10. 优先考虑发现的漏洞而非代码覆盖率

虽然代码覆盖率是选择模糊测试器的重要标准,但最终目标是发现和修复漏洞。模糊测试研究的评估者应首先根据已知漏洞来衡量性能。

研究现状与展望

尽管这些建议看似明显或简单,但作者评审的32篇高质量模糊测试出版物中,没有一篇符合全部10项标准。通过以AFLFast和AFL为案例研究,他们展示了严谨客观实验结果的确定性:“最终,虽然AFLFast发现的’独特’崩溃输入比AFL多得多,但在给定运行中发现更多独特漏洞的可能性仅略高。”

作者的结果和结论明确表明,为了推进软件模糊测试科学,研究人员必须追求严格的统计测量和更好的实证测量。我们相信这篇论文将通过为计算机科学家提供优秀的标准集来设计、评估和报告软件模糊测试实验,开启模糊测试研究的新篇章。

同时,如果您正在为工作评估模糊测试器,请谨慎行事并参考此清单。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计