论文阅读:EnFuzz: Ensemble Fuzzing with Seed Synchronization among Diverse Fuzzers
### 题目:
EnFuzz: Ensemble Fuzzing with Seed Synchronization among Diverse Fuzzers
###概述:
本文基于一个观察:不同的fuzzer有不同特点,适合不同的程序,也就是说fuzzer具有多样性。Fuzzer的多样性体现在三个方面:一是测试用例生成方法的多样性,有基于生成的方法,有基于变异的方法;二是覆盖率的粒度,有边覆盖,有基本块覆盖;三是种子选择和变异策略(有很多不同的种子优先级排序方法)。
作者认为,很难有一种方法对所有类型程序的效果都很好。这样一来,不如用多种不同类型的fuzzer对同一个程序进行测试,互相取长补短,从而达到一个较好的效果。
这就涉及到多个fuzzer之间协同的问题,作者是用种子和覆盖率进行协同的,这很好理解,也很自然。每个fuzzer当发现一个新的seed时会与其他种子进行共享,通过一个种子同步机制就可以实现,作者使用文件系统进行同步,这也说明本文并非一个分布式fuzzing系统。这里的问题是覆盖率的同步,因为不同类型fuzzer的覆盖率格式是不同的,全局覆盖率采用何种格式并没有讲。
###问题:
1. 不同Fuzz的Coverage Information格式或者粒度(边覆盖/路径覆盖)可能是不同的,怎么整合?
2. Global seeds和Global Coverage Information是怎么存储的?
3. 怎么理解全局同步和本地异步? global asynchronous, local synchronous (GALS)
4. 怎么保证实验的公平性,对比实验是否使用了相同的计算资源?
###改进空间:
EnFuzz是一个多核并行的Fuzz系统,使用文件系统共享种子;并不是一个分布式并行的系统,不能利用海量计算资源来加速fuzz性能。