论文标题

达尔文:最优美的模糊突变器的生存

DARWIN: Survival of the Fittest Fuzzing Mutators

论文作者

Jauernig, Patrick, Jakobovic, Domagoj, Picek, Stjepan, Stapf, Emmanuel, Sadeghi, Ahmad-Reza

论文摘要

Fuzzing是该行业广泛采用的一种自动软件测试技术。一个流行的变体是基于突变的模糊,它在实践中发现了许多错误。尽管研究界多年来一直研究了基于突变的模糊性,但算法在模糊器中的相互作用非常复杂,并且可以在fuzzer的每种情况下随机性,从而导致无法预测的效果。改善这种脆弱互动的大多数努力都集中在优化种子调度上​​。但是,诸如Google的Fuzzbench之类的现实世界结果强调,这些方法在实践中并没有始终如一地显示出改进。另一种改善模糊过程算法的方法是优化突变计划。不幸的是,由于缺少现实世界的改进或太多用户控制的参数,其配置需要有关目标程序的专家知识,因此现有的突变调度方法也无法说服。这留下了巧妙地处理测试案例并实现无法解决的可衡量改进的挑战性问题。 我们介绍了Darwin,这是一种新颖的突变调度程序,也是第一个在现实情况下展示模糊改进的情况,而无需引入其他用户可配置参数,从而向广泛的模糊社区打开了这种方法。达尔文使用进化策略来系统地优化和适应模糊过程中突变算子的概率分布。我们基于流行的通用绒毛AFL实施了原型。达尔文在我们自己的覆盖范围实验中,在fuzzbench中的最新突变调度程序和AFL基线极大地胜过,通过在岩浆基准中找到21个虫子中的15个中的15个。最后,达尔文在广泛使用的现实世界应用中发现了20个独特的错误(包括一个新的错误),比AFL高出66%。

Fuzzing is an automated software testing technique broadly adopted by the industry. A popular variant is mutation-based fuzzing, which discovers a large number of bugs in practice. While the research community has studied mutation-based fuzzing for years now, the algorithms' interactions within the fuzzer are highly complex and can, together with the randomness in every instance of a fuzzer, lead to unpredictable effects. Most efforts to improve this fragile interaction focused on optimizing seed scheduling. However, real-world results like Google's FuzzBench highlight that these approaches do not consistently show improvements in practice. Another approach to improve the fuzzing process algorithmically is optimizing mutation scheduling. Unfortunately, existing mutation scheduling approaches also failed to convince because of missing real-world improvements or too many user-controlled parameters whose configuration requires expert knowledge about the target program. This leaves the challenging problem of cleverly processing test cases and achieving a measurable improvement unsolved. We present DARWIN, a novel mutation scheduler and the first to show fuzzing improvements in a realistic scenario without the need to introduce additional user-configurable parameters, opening this approach to the broad fuzzing community. DARWIN uses an Evolution Strategy to systematically optimize and adapt the probability distribution of the mutation operators during fuzzing. We implemented a prototype based on the popular general-purpose fuzzer AFL. DARWIN significantly outperforms the state-of-the-art mutation scheduler and the AFL baseline in our own coverage experiment, in FuzzBench, and by finding 15 out of 21 bugs the fastest in the MAGMA benchmark. Finally, DARWIN found 20 unique bugs (including one novel bug), 66% more than AFL, in widely-used real-world applications.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源