[论文解读] Evaluating Fuzz Testing
本文评估了模糊测试研究的实验严谨性,揭示了32篇近期论文中广泛存在的方法论缺陷。通过大量实验表明,单次运行、短超时、种子选择不当以及启发式崩溃去重等不当使用,会导致对模糊测试工具性能的误导性结论。本文主张采用多样化基准和真实漏洞数量的标准化、统计上可靠的评估方法。
Fuzz testing has enjoyed great success at discovering security critical bugs in real software. Recently, researchers have devoted significant effort to devising new fuzzing techniques, strategies, and algorithms. Such new ideas are primarily evaluated experimentally so an important question is: What experimental setup is needed to produce trustworthy results? We surveyed the recent research literature and assessed the experimental evaluations carried out by 32 fuzzing papers. We found problems in every evaluation we considered. We then performed our own extensive experimental evaluation using an existing fuzzer. Our results showed that the general problems we found in existing experimental evaluations can indeed translate to actual wrong or misleading assessments. We conclude with some guidelines that we hope will help improve experimental evaluations of fuzz testing algorithms, making reported results more robust.
研究动机与目标
- 评估近期模糊测试研究中实验评估的质量与可靠性。
- 识别新模糊测试算法评估中常见的方法论缺陷,例如单次运行、短超时和启发式崩溃去重。
- 通过实证实验表明, flawed 的评估实践可能导致对模糊测试工具优越性的错误或误导性结论。
- 提出一套模糊测试算法评估的最佳实践,包括多次试验、统计测试、多样化种子、长超时和真实漏洞数量测量。
- 倡导创建标准化、设计良好的基准套件,其中包含已知漏洞,以实现模糊测试工具之间公平且可复现的比较。
提出的方法
- 在五个真实程序(nm、objdump、cxxfilt、gif2png、FFmpeg)上,进行了超过50,000 CPU小时的实验,比较AFL与AFLFast的性能。
- 对每种配置执行多次独立运行(最多30次),以捕捉模糊测试的随机性,并应用统计检验评估结果的显著性。
- 改变关键实验参数:超时时间(从6小时到24小时)、种子输入(空与非空),并使用崩溃计数和覆盖率指标作为衡量结果的指标。
- 使用程序已知脆弱版本中的真实漏洞数量作为主要性能指标,避免依赖AFL的覆盖率或栈哈希启发式方法。
- 通过与实际发现的独立漏洞数量对比,评估崩溃去重启发式方法的影响。
- 分析随时间推移的性能趋势,以评估短超时对评估有效性的负面影响。
实验结果
研究问题
- RQ1当前模糊测试算法的实验评估在多大程度上存在方法论缺陷?
- RQ2种子选择、超时时间长度以及运行间的随机性变化,如何影响模糊测试工具性能比较的可靠性?
- RQ3启发式崩溃去重方法(如AFL的覆盖率或栈哈希)在测量真实漏洞发现方面有多准确?它们是否扭曲了性能评估结果?
- RQ4同一模糊测试工具(AFLFast)是否可能在原始评估中表现更优,但在采用多样化种子和更长超时的更严格实验中不再表现出优势?
- RQ5一个可信、可复现且统计上可靠的模糊测试算法评估框架的关键组成部分是什么?
主要发现
- 在调查的32篇论文中,近3/5依赖单次运行,未能捕捉模糊测试结果的高方差,导致可能产生误导性结论。
- 统计检验显示,AFL与AFLFast之间看似显著的性能差异,在原始论文中虽被报告为显著,但实际并不总是具有统计显著性。
- 种子选择对性能影响极大:使用一个非空种子时,AFLFast在nm程序中仅发现24个崩溃,与AFL的23个相比在统计上无显著差异,尽管原始评估声称AFLFast更优。
- 短超时(如6小时)常无法捕捉长期性能趋势;例如,在nm程序上,AFL在6小时内表现优于AFLFast,但在24小时后趋势反转。
- 启发式崩溃去重方法(如AFL的覆盖率配置文件)会高估漏洞数量,有时甚至会抑制真实独立崩溃的发现,从而使基于此类指标的性能声明无效。
- 当采用严格标准(多次运行、长超时、多样化种子、真实漏洞数量测量)进行评估时,AFLFast在部分基准上对AFL的优势显著减弱甚至消失,表明原始结论被夸大。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。