文章目录
Code-Coverage-guided Fuzzing
其他三种 fuzzing
-
random fuzzing
-
mutation-based fuzzing
-
generation-based fuzzing
-
上述三种 fuzzing 都存在同样的缺点:它们用于为被测程序生成输入的策略没有反馈循环(the strategy that they use to generate inputs for the program under test has no feedback loop)。
-
这些方法中的每一种都会为被测程序生成输入,但通常 对程序正在执行什么操作是盲目或不知情的。
-
因此,到目前为止我们所学习的 这三种技术都被称为黑盒技术,因为它们完全无视被测程序(尽管可能对其输入格式有一定了解,但并不了解该程序的代码)。
-
在本章中,我们将介绍 code-coverage-based 及其在流行通用模糊器American Fuzzy Lop (AFL)中的体现。
Code coverage guided Fuzzing
- 回想一下前一章节中的以下程序,以及到达第7行(模拟故障发生的位置)的困难。要做到这一点,需要能够生成与字符串“bad!”对应的确切四个字节:在大约43亿种可能性中选择一个。
- 我们可以克服黑盒模糊测试技术的局限性的一种方法是 允许模糊器监控被测试程序的执行,并 利用这些信息来指导其关于下一个要生成的输入的决策。
- 一种流行的技术是 监控每个输入所达到的代码覆盖率。这种技术被称为 覆盖引导模糊测试。它也被称为 灰盒模糊测试技术,因为与黑盒技术不同,它在部分了解被测试程序方面运作,具体而言就是能够观察每个输入所覆盖(即执行)的程序部分。
- 美国Fuzzy Lop(AFL)工具推广了覆盖引导模糊测试,并自2013年发布