Effective Seed Scheduling for Fuzzing with Graph Centrality Analysis

03/22/2022
by   Dongdong She, et al.
0

Seed scheduling, the order in which seeds are selected, can greatly affect the performance of a fuzzer. Existing approaches schedule seeds based on their historical mutation data, but ignore the structure of the underlying Control Flow Graph (CFG). Examining the CFG can help seed scheduling by revealing the potential edge coverage gain from mutating a seed. An ideal strategy will schedule seeds based on a count of all reachable and feasible edges from a seed through mutations, but computing feasibility along all edges is prohibitively expensive. Therefore, a seed scheduling strategy must approximate this count. We observe that an approximate count should have 3 properties – (i) it should increase if there are more edges reachable from a seed; (ii) it should decrease if mutation history information suggests an edge is hard to reach or is located far away from currently visited edges; and (iii) it should be efficient to compute over large CFGs. We observe that centrality measures from graph analysis naturally provide these three properties and therefore can efficiently approximate the likelihood of reaching unvisited edges by mutating a seed. We therefore build a graph called the edge horizon graph that connects seeds to their closest unvisited nodes and compute the seed node's centrality to measure the potential edge coverage gain from mutating a seed. We implement our approach in K-scheduler and compare with many popular seed scheduling strategies. We find that K-scheduler increases feature coverage by 25.89 compared to Entropic and edge coverage by 4.21 AFL-based seed scheduler, in arithmetic mean on 12 Google FuzzBench programs. It also finds 3 more previously-unknown bugs than the next-best AFL-based seed scheduler.

READ FULL TEXT
research
02/20/2020

MEUZZ: Smart Seed Scheduling for Hybrid Fuzzing

Seed scheduling is a prominent factor in determining the yields of hybri...
research
10/01/2018

On the discovery of the seed in uniform attachment trees

We investigate the size of vertex confidence sets for including part of ...
research
10/21/2022

DARWIN: Survival of the Fittest Fuzzing Mutators

Fuzzing is an automated software testing technique broadly adopted by th...
research
10/07/2020

Fuzzing Based on Function Importance by Attributed Call Graph

Fuzzing has become one of the important methods for vulnerability detect...
research
01/03/2021

A Marching Cube Algorithm Based on Edge Growth

Marching Cube algorithm is currently one of the most popular 3D reconstr...
research
05/30/2019

MoonLight: Effective Fuzzing with Near-Optimal Corpus Distillation

Mutation-based fuzzing typically uses an initial set of valid seed input...
research
11/15/2022

Improving AFL++ CmpLog: Tackling the bottlenecks

The performance of the AFL++ CmpLog feature varies considerably for spec...

Please sign up or login with your details

Forgot password? Click here to reset