Directed greybox fuzzing is a popular technique for targeted software testing that seeks to find inputs that reach a set of target sites in a program. Most existing directed greybox fuzzers do not provide any theoretical analysis of their performance or optimality. In this paper, we introduce a complexity-theoretic framework to pose directed greybox fuzzing as a oracle-guided search problem where some feedback about the input space (e.g., how close an input is to the target sites) is received by querying an oracle. Our framework assumes that each oracle query can return arbitrary content with a large but constant amount of information. Therefore, we use the number of oracle queries required by a fuzzing algorithm to find a target-reaching input as the performance metric. Using our framework, we design a randomized directed greybox fuzzing algorithm that makes a logarithmic (wrt. the number of all possible inputs) number of queries in expectation to find a target-reaching input. We further prove that the number of oracle queries required by our algorithm is optimal, i.e., no fuzzing algorithm can improve (i.e., minimize) the query count by more than a constant factor. We implement our approach in MC$^2$ and outperform state-of-the-art directed greybox fuzzers on challenging benchmarks (Magma and Fuzzer Test Suite) by up to two orders of magnitude (i.e., $134\times$) on average. MC$^2$ also found 15 previously undiscovered bugs that other state-of-the-art directed greybox fuzzers failed to find.
翻译:直接的灰色信箱 fluzz 是一种常见的定向软件测试技术, 旨在寻找在程序内达到一组目标网站的投入。 大多数现有的定向灰色信箱 furzzers 都不提供对其性能或最佳性能的任何理论分析。 在本文中, 我们引入了一个复杂理论框架, 将直接的灰色信箱 furzz 作为一种神器引导的搜索问题, 因为通过查询可以收到关于输入空间( 例如, 输入与目标网站的距离有多近) 的反馈 。 我们的框架假设, 每一个星标查询可以以大量但不变的信息返回任意的内容。 因此, 我们使用模糊算法所要求的星标数来寻找一个具有目标性或最佳性的投入 。 我们使用随机的灰色信箱 fluzz furzz 框架, 我们设计一个随机化的灰色信箱 furzz 模糊算法, 也就是以更具有挑战性的方式计算出其它值 $( MAL ) 。 我们进一步证明, 州算找到的灰质查询是最佳的, 也就是, 没有模糊信箱算法 15- breal- ballal- trackal- trackeral- track 方法可以改进( 方向, 我们算算算出一个更具有挑战性的方法)。