论文标题
$ mc^2 $:严格有效的定向灰盒模糊
$MC^2$: Rigorous and Efficient Directed Greybox Fuzzing
论文作者
论文摘要
定向Greybox Fuzzing是针对目标软件测试的一种流行技术,该技术旨在寻找能够到达程序中一组目标站点的输入。大多数现有的定向灰盒烟雾不提供对其性能或最优性的任何理论分析。 在本文中,我们介绍了一个复杂性理论框架,以构成定向的灰色盒子,以作为Oracle指导的搜索问题,其中通过查询Oracle收到了有关输入空间的一些反馈(例如,输入与目标站点的距离)。我们的框架假定每个Oracle查询都可以使用大量但恒定的信息返回任意内容。因此,我们使用模糊算法所需的oracle查询数量来找到目标输入作为性能指标。使用我们的框架,我们设计了一种随机定向的灰盒模糊算法,该算法使对数(wrt。所有可能输入的数量)的查询数量预期,以找到目标接触输入。我们进一步证明,我们算法所需的甲骨文查询数量是最佳的,即,没有模糊算法可以改善(即最小化查询计数)的查询计数超过一个恒定因素。 我们在MC $^2 $中实施了我们的方法,并且在具有挑战性的基准(岩浆和Fuzzer Test Suite)上跑出了最先进的灰色指示器fuzzer,最多可以平均两个数量级(即$ 134 \ times $ $)。 MC $^2 $还发现了15个以前未被发现的错误,其他最先进的Greybox Fuzzers未能找到。
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.