paperbot · PL 论文追踪

全部论文 待读 收藏

P2 An Empirical Examination of Fuzzer Mutator Performance

模糊测试器变异算子性能的实证考察
ISSTA Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis2024匹配度 1/10 · 该论文研究模糊测试变异算子的性能评估,属于动态测试/软件测试领域,与用户核心关注的静态分析、LLM/Agent 结合、浮点程序分析及贝叶斯程序分析均无直接关联;论文未涉及 LLM 或静态分析/形式化验证,因此匹配度很低。引用 5 inbox
James Kukucka, Luís Pina, Paul Ammann, Jonathan Bell
crossref: 2026-09-12

AI 速览

一句话:基于超过12.5 CPU年实验评估AFL++变异算子,发现禁用某些变异算子可提升覆盖多样性与找bug速度。

灰盒模糊测试器通过变异输入并依据覆盖率保留有趣输入来演化语料库,但其变异设计决策对性能的影响往往难以预测,部分配置还硬编码在实现中。本文对流行的 AFL++ 模糊测试器所使用的变异算子集合开展超过 12.5 CPU 年的大规模实证评估,涵盖 havoc 阶段、splicing 以及若干未暴露配置。作者提出一种使用严谨统计方法衡量不同模糊测试器在分支覆盖与缺陷检测方面行为多样性的方法论。关键发现是:在多个目标程序上,禁用某些变异算子会产生覆盖不同代码行、暴露不同缺陷的输入;令人意外的是,禁用某些变异器还能带来更多样的覆盖,并使模糊测试器更快发现更多缺陷。作者呼吁更深入地研究模糊测试器中看似简单的设计决策,并鼓励开发者向用户暴露更多相关配置参数。

问题
现代灰盒模糊测试器的变异设计决策众多且影响难预测,其中一些未暴露或硬编码,缺少系统实证来理解不同变异算子对覆盖与缺陷检测的作用。
方法
对 AFL++ 的 havoc、splicing 等变异算子进行超过 12.5 CPU 年的大规模实验,并提出用严谨统计方法度量不同变异配置在分支覆盖和缺陷检测上的行为多样性。
评估
在多个目标程序上比较启用或禁用特定变异算子的效果,观察到禁用某些变异算子会覆盖不同代码、暴露不同缺陷,甚至实现更多样覆盖和更快发现更多 bug。
原文摘要(Abstract)

Over the past decade, hundreds of fuzzers have been published in top-tier security and software engineering conferences. Fuzzers are used to automatically test programs, ideally creating high-coverage input corpora and finding bugs. Modern “greybox” fuzzers evolve a corpus of inputs by applying mutations to inputs and then executing those new inputs while collecting coverage. New inputs that are “interesting” (e.g. reveal new coverage) are saved to the corpus. Given their non-deterministic nature, the impact of each design decision on the fuzzer’s performance can be difficult to predict. Some design decisions (e.g., ” Should the fuzzer perform deterministic mutations of inputs? ”) are exposed to end-users as configuration flags, but others (e.g., ” What kinds of random mutations to apply to inputs?”) are typically baked into the fuzzer code itself. This paper describes our over 12.5-CPU-year evaluation of the set of mutation operators employed by the popular AFL++ fuzzer, including the havoc phase, splicing, and, exploring the impact of adjusting some of those unexposed configurations. In this experience paper, we propose a methodology for determining different fuzzers’ behavioral diversity with respect to branch coverage and bug detection using rigorous statistical methods. Our key finding is that, across a range of targets, disabling certain mutation operators (some of which were previously “baked-in” to the fuzzer) resulted in inputs that cover different lines of code and reveal different bugs. A surprising result is disabling certain mutators leads to more diverse coverage and allows the fuzzer to find more bugs faster. We call for researchers to investigate seemingly simple design decisions in fuzzers more thoroughly and encourage fuzzer developers to expose more configuration parameters pertaining to these design decisions to end users.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot8453,
  title = {An Empirical Examination of Fuzzer Mutator Performance},
  author = {James Kukucka and Luís Pina and Paul Ammann and Jonathan Bell},
  booktitle = {ISSTA},
  year = {2024},
  doi = {10.1145/3650212.3680387}
}