K-Schedular: Effective Seed Scheduling for Fuzzing with Graph Centrality Analysis (SP 2022)
种子调度(Seed Scheduling)指Fuzzer选择种子的顺序,会极大地影响到一个Fuzzer的性能。现有的方法都基于历史变异数据(Historical Mutation Data)来调度种子,而忽视了控制流图(Control Flow Graph)结构对其的影响。控制流图能够帮助变异种子以覆盖到潜在的边覆盖率(Potential Edge Coverage)。
一个理想的种子调度策略应该对所有可达边(Edge)进行计数(Count),而对所有的可达边进行计数会带来巨大的开销。所以其应该估计出一个大致计数(Approximate Count),并满足以下3点要求:
- 如果更多的边可达,计数增加;
- 如果变异历史信息提示某些边难以遍历,计数减少;
- 对于大型的控制流图应当有较高的效率。
本文提出了K-Schedular,一种基于图分析(Graph Analysis)技术的种子调度策略。基于K-Schedular的Fuzzer工作流程如下图所示。