Fuzzing(TODO)

本来我是不太喜欢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)

算法

PREPROCESS(预处理)

SCHEDULING()

INPUT GENERATION(INPUT生成)

INPUT EVALUATION(INPUT评估)

Bug Oracles

Execution Optimizations

Triage

CONFIGURATION UUPDATING