A program's bugs live in the dark corners â the branches nobody thought to test, the deeply nested if that only fires when a malformed header byte collides with a rare flag. Manual testing never reaches them. Random input generation rarely does either.
Coverage-guided fuzzing changes the strategy. Instead of throwing inputs at a program blindly, it watches which lines of code each input actually executes. When a mutated input reaches a new branch â code the fuzzer has never seen before â it saves that input as a "seed" and mutates it further. Inputs that cover only already-seen code are quietly discarded.
The result is a feedback loop: the fuzzer climbs the code like a mountain, constantly pressing forward into territory it has not yet explored. Bugs, crashes, and undefined behavior tend to cluster precisely in those unexplored regions.
This idea, popularized by AFL (American Fuzzy Lop) around 2013â2014 and formalized in tools like libFuzzer and Honggfuzz, has since found thousands of real security vulnerabilities in browsers, operating systems, image decoders, and cryptographic libraries â often in code that had been "tested" for years.
Comments
Loading comments...