🤖 AI Summary
Existing parallel fuzzing approaches typically treat individual seeds as task units, ignoring program call-graph structure—leading to redundant task allocation and inefficient exploration. This paper proposes DynamiQ, the first framework to define call-graph nodes as fundamental task units, integrating runtime coverage feedback with dynamic load balancing to enable structure-aware, adaptive task partitioning and scheduling. Built upon the LibAFL framework, DynamiQ incorporates static call-graph analysis and task-aware fuzzing techniques. We evaluate it across 12 real-world programs over 25,000 CPU hours. Results demonstrate that DynamiQ significantly reduces redundant exploration, achieves an average 18.7% improvement in code coverage, increases vulnerability discovery by 32%, and discloses nine previously unknown CVEs.
📝 Abstract
We present DynamiQ, a full-fledged and optimized successor to AFLTeam that supports dynamic and adaptive parallel fuzzing. Unlike most existing approaches that treat individual seeds as tasks, DynamiQ leverages structural information from the program's call graph to define tasks and continuously refines task allocation using runtime feedback. This design significantly reduces redundant exploration and enhances fuzzing efficiency at scale. Built on top of the state-of-the-art LibAFL framework, DynamiQ incorporates several practical optimizations in both task allocation and task-aware fuzzing. Evaluated on 12 real-world targets from OSS-Fuzz and FuzzBench over 25,000 CPU hours, DynamiQ outperforms state-of-the-art parallel fuzzers in both code coverage and vulnerability discovery, uncovering 9 previously unknown bugs in widely used and extensively fuzzed open-source software.