本来我是不太喜欢Fuzzing的,觉得太暴力了,没有静态分析优雅(不是)。 但是现在想想这种想法有够无聊,能挖到洞就是好方法。
本文是介绍一篇2019年的综述:
文章可以在arxiv上找到。
本文首先在high-level上对Fuzzing下定义:
fuzzing refers to a process of repeatedly running a program with generated inputs that may be syntactically or semantically malformed.
就是生成一堆语法
和语义
上的畸形数据。
fuzz来自于1990年Miller et al.的工作。fuzz起初指的是generates a stream of random characters to be consumed by a target program
。
Fuzzing & Fuzz Testing
这里给出一些Fuzz的基本概念。
Definition 1 (Fuzzing). Fuzzing 执行PUT Definition 2 (Fuzz Testing). Definition 3 (Fuzzer) Definition 4 (Fuzz Campaign) Definition 5 (Bug Oracle) Definition 6 (Fuzz Configuration)