Skip to main content
QUICK REVIEW

[论文解读] EnFuzz: Ensemble Fuzzing with Seed Synchronization among Diverse Fuzzers

Yuanliang Chen, Yu Jiang|arXiv (Cornell University)|Jun 30, 2018
Software Testing and Debugging Techniques参考文献 18被引用 22
一句话总结

EnFuzz 提出了一种集成模糊测试框架,通过使用全局异步、局部同步(GALS)的种子同步机制,将多种基于变异和基于生成的模糊测试工具组合起来,以提升漏洞检测效果。通过在基础模糊测试工具之间同步具有新路径覆盖或崩溃触发的‘有趣’种子,EnFuzz 在真实应用程序中实现的唯一未知漏洞检测率比单个工具高出 71.4% 至 114%,并在 24 小时内发现了 60 个新的 CVE。

ABSTRACT

Fuzzing is widely used for software vulnerability detection. There are various kinds of fuzzers with different fuzzing strategies, and most of them perform well on their targets. However, in industry practice and empirical study, the performance and generalization ability of those well-designed fuzzing strategies are challenged by the complexity and diversity of real-world applications. In this paper, inspired by the idea of ensemble learning, we first propose an ensemble fuzzing approach EnFuzz, that integrates multiple fuzzing strategies to obtain better performance and generalization ability than that of any constituent fuzzer alone. First, we define the diversity of the base fuzzers and choose those most recent and well-designed fuzzers as base fuzzers. Then, EnFuzz ensembles those base fuzzers with seed synchronization and result integration mechanisms. For evaluation, we implement EnFuzz , a prototype basing on four strong open-source fuzzers (AFL, AFLFast, AFLGo, FairFuzz), and test them on Google's fuzzing test suite, which consists of widely used real-world applications. The 24-hour experiment indicates that, with the same resources usage, these four base fuzzers perform variously on different applications, while EnFuzz shows better generalization ability and always outperforms others in terms of path coverage, branch coverage and crash discovery. Even compared with the best cases of AFL, AFLFast, AFLGo and FairFuzz, EnFuzz discovers 26.8%, 117%, 38.8% and 39.5% more unique crashes, executes 9.16%, 39.2%, 19.9% and 20.0% more paths and covers 5.96%, 12.0%, 21.4% and 11.1% more branches respectively.

研究动机与目标

  • 通过将多种多样化的模糊测试工具整合为单一集成系统,提升模糊测试的有效性。
  • 解决单个模糊测试工具因启发式偏差而难以探测深层或罕见代码路径的局限性。
  • 设计一种种子同步机制,实现在异构模糊测试工具之间及时共享‘有趣’输入。
  • 在真实世界中已充分模糊测试的软件上评估集成方法,证明其在漏洞发现方面超越单个工具的优越性。

提出的方法

  • 基于三种多样性启发式方法选择基础模糊测试工具:种子变异/选择策略、覆盖粒度(如边 vs. 块)以及输入生成策略(变异 vs. 生成)。
  • 实现一种全局异步、局部同步(GALS)的种子同步机制,使每个模糊测试工具独立运行,但可将‘有趣’种子共享至全局池。
  • 维护一个全局种子池和全局覆盖图,用于检测新路径和崩溃,去重结果,并对唯一漏洞进行分类。
  • 使用监控器收集并分发新的崩溃或高覆盖种子至所有基础模糊测试工具,增强跨工具协作。
  • 将崩溃报告和覆盖报告整合为统一输出,用于最终漏洞分析。
  • 根据实时覆盖反馈动态选择基础模糊测试工具,以适应目标应用程序的特性。

实验结果

研究问题

  • RQ1通过种子同步整合多样化模糊测试工具,能否显著提升在真实世界软件中检测先前未知漏洞的能力?
  • RQ2基于 GALS 的种子同步机制如何增强具有不同变异和覆盖策略的异构模糊测试工具之间的协作?
  • RQ3EnFuzz 在发现唯一漏洞和 CVE 方面,相较于 AFL、AFLFast、FairFuzz、LibFuzzer 和 QSYM 等单个工具,其表现超出多少?
  • RQ4该集成方法是否在已由多个工具充分测试的项目中保持或提升性能?
  • RQ5基于变异策略、覆盖粒度和输入生成方式的模糊测试工具多样性,对整体集成效果的影响如何?

主要发现

  • EnFuzz 在 24 小时内于真实世界应用程序中检测到 60 个唯一且此前未知的漏洞,显著优于单个工具。
  • 与 AFL 相比,EnFuzz 发现了 71.4% 更多的唯一漏洞;与 AFLFast、FairFuzz、LibFuzzer 和 QSYM 相比,分别多发现了 114%、93.5%、76.4% 和 87.5% 的唯一漏洞。
  • 在已充分模糊测试的 libpng 库中,EnFuzz 发现了三个新漏洞,其中包括两个被分配 CVE 的漏洞(CVE-2018-14047 和 CVE-2018-14550),而这些漏洞在任何单个模糊测试工具中均未被检测到。
  • 该集成方法在 libwav 和 libpng 中额外检测到 13 个真实漏洞,其中 7 个被分配 CVE。
  • 在 libpng 中随时间推移的性能表现显示,EnFuzz 始终优于所有基础模糊测试工具,包括 AFLFast 和 FairFuzz 等优化变体,而这些优化变体的表现反而低于原始 AFL。
  • GALS 同步机制实现了有效的跨模糊测试工具协作,使 EnFuzz 能够触发需要 6 次函数调用和 11 次比较的复杂漏洞,而单个工具无法触及。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。