Skip to main content
QUICK REVIEW

[论文解读] Matryoshka: Fuzzing Deeply Nested Branches

Peng Chen, Jianzhong Liu|arXiv (Cornell University)|May 29, 2019
Software Testing and Debugging Techniques参考文献 38被引用 12
一句话总结

该论文提出 Matryoshka,一种灰盒模糊测试工具,通过分析控制流和污点传播依赖关系,高效探索深层嵌套的条件分支。它采用三种策略——可达性优先、可满足性优先和联合优化——以解决复杂的路径约束,显著提升了代码覆盖率,并在13个开源程序中发现41个新漏洞,其中12个获得CVE编号。

ABSTRACT

Greybox fuzzing has made impressive progress in recent years, evolving from heuristics-based random mutation to approaches for solving individual path constraints. However, they have difficulty solving path constraints that involve deeply nested conditional statements, which are common in image and video decoders, network packet analyzers, and checksum tools. We propose an approach for addressing this problem. First, we identify all the control flow-dependent conditional statements of the target conditional statement. Next, we select the data flow-dependent conditional statements. Finally, we use three strategies to find an input that satisfies all conditional statements simultaneously. We implemented this approach in a tool called Matryoshka and compared its effectiveness on 13 open source programs against other state-of-the-art fuzzers. Matryoshka found significantly more unique crashes than AFL, QSYM, and Angora. We manually classified those crashes into 41 unique new bugs, and obtained 12 CVEs. Our evaluation also uncovered the key technique contributing to Matryoshka's impressive performance: it collects only the nesting constraints that may cause the target conditional statements unreachable, which greatly simplifies the constraints that it has to solve.

研究动机与目标

  • 解决基于覆盖率的灰盒模糊测试工具在实际软件中难以触及深层嵌套条件分支的挑战。
  • 识别并解决涉及多个嵌套条件的路径约束,而传统模糊测试工具无法解决此类问题。
  • 通过仅关注那些会使目标分支不可达的条件,减少搜索空间。
  • 提升模糊测试工具在图像/视频解码器、网络解析器和校验和工具中发现漏洞的有效性。
  • 设计一个统一框架,整合可达性、可满足性和联合优化策略,用于约束求解。

提出的方法

  • 识别必须满足的控制流依赖条件,以确保目标分支可达。
  • 应用污点分析,仅选择流入相关条件的输入字节,从而减少搜索空间。
  • 基于可达性优先进行变异:聚焦于若不满足将阻断目标路径的条件。
  • 使用可满足性优先策略,引导变异优先满足最严格的谓词。
  • 采用联合优化策略,通过分析共享输入依赖关系,同时满足多个相互依赖的条件。
  • 集成动态污点跟踪(DTA++),在最小化过度污点传播的同时避免污点传播不足。

实验结果

研究问题

  • RQ1模糊测试工具能否有效探索因先前控制依赖而不可达的深层嵌套条件分支?
  • RQ2如何联合建模污点与控制流依赖关系,以降低路径约束求解的复杂度?
  • RQ3在嵌套条件中,解决相互依赖的路径约束时,哪种变异策略最有效?
  • RQ4可达性与可满足性优先策略在多大程度上能提升实际程序的代码覆盖率?
  • RQ5结合可达性、可满足性和联合优化的统一策略,是否能在漏洞发现方面超越现有模糊测试工具?

主要发现

  • 在13个开源程序中,Matryoshka 的累积行覆盖率和分支覆盖率显著高于 AFL、QSYM 和 Angora。
  • 该工具发现了41个独特的新型漏洞,其中12个已获得CVE标识符。
  • Angora 中超过90%未解决的约束源于嵌套条件,凸显了该问题的普遍性。
  • 三种核心策略——可达性、可满足性和联合优化——具有互补性,三者协同作用比单一策略更有效地解决约束。
  • 采用 DTA++ 的动态污点跟踪实现了精确的输入字节选择,减少了不必要的变异,提升了效率。
  • 该方法能有效处理复杂的实际程序,如图像解码器和网络数据包分析器,这些程序普遍存在嵌套条件。

更好的研究,从现在开始

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

无需绑定信用卡

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