一句话:提出反馈驱动的生成式模糊测试技术 BeDivFuzz,通过区分保持/改变结构的变异并偏向有效性与行为多样性,提升分支执行分布的均匀性。
传统模糊测试常以分支覆盖率评价性能,但仅追求覆盖分支数量(丰富性)不足:多数被覆盖分支可能只执行一次,难以体现可靠性。本文认为还需考虑分支执行频次分布(均匀性),只有用多样输入既触发大量分支又使其被均匀触发,才具行为多样性。为此提出 BeDivFuzz,一种面向生成式模糊测试的反馈驱动技术。它在语法有效输入空间中区分保持结构与改变结构的变异,并依据程序反馈将变异策略偏向有效性与行为多样性。作者在 Ant、Maven、Rhino、Closure、Nashorn 和 Tomcat 上评估,结果显示 BeDivFuzz 在生态学常用 Hill numbers 指标下取得优于现有技术的行为多样性。
A popular metric to evaluate the performance of fuzzers is branch coverage. However, we argue that focusing solely on covering many different branches (i.e., the richness) is not sufficient since the majority of the covered branches may have been exercised only once, which does not inspire a high confidence in the reliability of the covered code. Instead, the distribution of the executed branches (i.e., the evenness) should also be considered. That is, behavioral diversity is only given if the generated inputs not only trigger many different branches, but also trigger them evenly often with diverse inputs. We introduce BEDIVFUZZ, a feedback-driven fuzzing technique for generator-based fuzzers. BEDIVFUZZ distinguishes between structure-preserving and structure-changing mutations in the space of syntactically valid inputs, and biases its mutation strategy towards validity and behavioral diversity based on the received program feedback. We have evaluated BEDIVFUZZ on Ant, Maven, Rhino, Closure, Nashorn, and Tomcat. The results show that BE-DIVFUZZ achieves better behavioral diversity than the state of the art, measured by established biodiversity metrics, namely the Hill numbers, from the field of ecology.