TL;DR
コードのどの部分が実行されたかを監視し、新しい動作や条件(コードパス)を見つけるように入力データをランダムに変化させながら、試行を繰り返すテスト。ファズテストを効率よく行う方法である。
仕組み
libFuzzer の場合、テスト対象のコードを LLVM の SanitizerCoverage で計装し、実行時のカバレッジを取る。最初に与えたサンプル(コーパス)の入力を変化させ、新しいコードを通った入力をコーパスに加えていく。これを繰り返すことで、まだ試していない経路を優先して探索できる。
例
以前は American fuzzy lop(AFL)が主流だった。近年は、LLVM のツールチェーンに追加された libFuzzer もよく使われる。