Skip to content
STIMSMITH

Coverage-Guided Fuzzing

Technique WIKI v7 · 7/4/2026

Coverage-guided fuzzing (CGF) is a feedback-driven testing technique that uses execution feedback, most commonly code coverage, to steer input mutation toward unexplored program behavior. Public research describes CGF as effective at finding many bugs, while cautioning that higher coverage does not necessarily imply better fault detection because triggering a bug may require reaching a relevant program state in addition to exercising a path. The technique has been applied to software, hardware/processor verification (e.g., RFUZZ, DifuzzRTL, TheHuzz, ChatFuzz, FuSS, GoldenFuzz, ReFuzz, Fuzzilicon), and LLM-based multi-agent systems (FLARE), with active research on alternative feedback signals (e.g., mutation scores, microcode-level feedback, contextual-bandit-driven seed reuse) to escape coverage plateaus.

Overview

Coverage-guided fuzzing (CGF) is a testing technique that uses execution feedback, commonly code coverage, to guide input mutation toward inputs that explore more program behavior. Public research describes CGF as an effective technique that has detected many bugs across software applications and as a technique that focuses on maximizing code coverage during fuzzing. However, the same research cautions that higher coverage does not necessarily imply better fault detection: triggering a bug can require both exercising a particular path and reaching an interesting program state on that path. [CGF definition and coverage caveat]

Feedback signals

The central idea in CGF is to reward inputs that improve the feedback metric used by the fuzzer. The most common framing in the supplied public context is code-coverage maximization, but research also investigates alternative or additional feedback. One mutation-testing study proposes using mutation scores as feedback to guide fuzzing toward bug detection rather than only toward code coverage; in its evaluation on five benchmarks, the modified Zest-based techniques improved both code coverage and bug detection. [Mutation-score feedback]

In the hardware-processor fuzzing literature, traditional processor fuzzers such as DifuzzRTL and TheHuzz use code coverage and control-register coverage as feedback to guide the mutation process, generating seeds through random instruction generation and then mutating instructions in the current input. Hybrid hardware fuzzers such as HyPFuzz and PSOFuzz combine fuzzers with formal tools and optimization algorithms but reuse the seed-generation and mutation engines of traditional processor fuzzers and lack a well-defined feedback signal for producing meaningful instruction sequences that reach deep design regions. [Processor-fuzzer feedback] [Hybrid fuzzers feedback gap]

LLM-based processor fuzzers such as ChatFuzz extend CGF with an LLM-driven input generator that is steered by coverage metrics to produce interdependent, data/control-flow entangled instruction sequences, rather than relying solely on bit/byte-level mutation of existing seeds. ChatFuzz reports reaching 74.96% condition coverage in less than an hour, and finds discrepancies such as attempted writes to the R0 register that violate the RISC-V specification's requirement that R0 remain zero. [ChatFuzz LLM feedback] [ChatFuzz R0 finding]

Reusing historic tests and post-silicon feedback

Recent NDSS 2026 work broadens the feedback space beyond single-run coverage metrics by learning from prior runs and from below-ISA execution. ReFuzz selects and mutates highly effective tests from historic processor designs using contextual bandits to improve vulnerability detection and coverage efficiency on new target processors. Fuzzilicon performs post-silicon fuzzing on x86 CPUs with deep microcode-level instrumentation, extracting feedback directly from the processor's internal microcode execution and combining it with coverage-guided fuzzing to uncover subtle microarchitectural vulnerabilities that are invisible to traditional black-box fuzzing. [ReFuzz contextual-bandit seed reuse] [Fuzzilicon microcode-level feedback]

Golden-reference and two-stage strategies

GoldenFuzz introduces a two-stage fuzzing strategy that decouples test refinement from vulnerability exploration using a fast golden-reference model of the device, enabling efficient and semantically aware hardware fuzzing that achieves high coverage and discovers new high-severity vulnerabilities across RISC-V processors. [GoldenFuzz two-stage strategy]

Coverage plateau and extensions

A recurring challenge for CGF is the coverage plateau: the fuzzer repeatedly generates inputs that fail to reach unexplored areas of the state space, limiting the discovery of bugs and corner cases. This problem is especially pronounced in hardware fuzzing, where stateful behavior, deeply nested conditions, and long execution traces make exploration harder. [Coverage plateau]

Reported behavior from the FuSS evaluation on the RISC-V CVA6 SoC illustrates the plateau: random testing does not improve branch coverage beyond 60%, traditional fuzzing plateaus around 85% after roughly 150 minutes, and fuzzing augmented with property checking plateaus near 88% after roughly 230 minutes due to state-space explosion. The coverage plateau persists across SoC designs: across PicoSoC, UeRVSoC, VeeRwolf, and CVA6, traditional fuzzing plateaus around 80% branch coverage, while fuzzing with property checking still plateaus lower than FuSS due to state-space explosion. State-of-the-art hardware fuzzing solutions reach at most about 70% toggle coverage on the same benchmarks. [CVA6 plateau example] [Multi-SoC plateau] [Toggle coverage ceiling]

To overcome this plateau, hybrid approaches combine CGF with formal techniques. The FuSS framework integrates coverage-guided fuzzing with selective symbolic execution: when a coverage plateau is detected, the framework uses the existing fuzzing trajectory to perform selective symbolic execution and produce a minimal input sequence for hard-to-activate regions, avoiding the large state space that property-checking-based fuzzing must explore from the start state. FuSS evaluates four RISC-V-based SoC designs and reports branch coverage close to 100% in under 10 hours, where traditional fuzzing plateaus around 80%. [FuSS hybrid approach] [FuSS SoC results]

Use in processor/hardware verification

Hardware verification is a major application area for CGF. DifuzzRTL applies coverage-guided fuzzing to differential RTL testing, TheHuzz applies it to instruction fuzzing of processors using golden-reference models, and RFUZZ applies coverage-directed fuzz testing of RTL on FPGAs. [DifuzzRTL processor fuzzing] [TheHuzz processor fuzzing] [RFUZZ RTL fuzzing]

DifuzzRTL in particular introduces a register-coverage metric that is designed to comprehensively capture RTL design states and guide input generation; it automatically instruments this register-coverage into target RTL designs, and pairs it with differential testing against an ISA simulator, random instruction generation, and instruction mutation. [DifuzzRTL register-coverage]

Within a hardware CGF framework such as FuSS, design instrumentation is performed by instantiating the hardware description in a testbench that controls clock and reset, and providing the input instruction sequence as an external byte array with internal segments separating individual instructions. The instrumented hardware description together with the testbench is then converted into a software model, so that software verification tools (both the fuzzer and the symbolic execution engine) can be used on the hardware implementation with minimum modifications. Both engines share the same test-vector corpus. This enables both the fuzzer and a symbolic execution engine to share the same test-vector corpus. [Design instrumentation] [Software model conversion]

CGF-based verification of instruction set simulators themselves has also been investigated, treating the ISS as the target under test. [ISS verification via CGF]

Coverage-plateau detection

Detecting the plateau is non-trivial because coverage may fluctuate around a value rather than monotonically stall. The FuSS framework defines a threshold function P(t) over cumulative code coverage C(t) to decide when to invoke the symbolic execution engine, so that symbolic execution is triggered only when needed. [Plateau detection threshold]

Use beyond conventional software

CGF is also being adapted beyond conventional software targets. The FLARE preprint applies coverage-guided fuzzing to LLM-based multi-agent systems by extracting specifications and behavioral spaces from agent definitions, building test oracles, and fuzzing to expose failures. Its evaluation on 16 open-source applications reports 96.9% inter-agent coverage, 91.1% intra-agent coverage, and 56 previously unknown failures. [FLARE MAS fuzzing]

Limitations

The supplied evidence supports several qualifications. First, the broader CGF literature warns that coverage is not the same as fault-detection capability, because faults can depend on program state as well as path reachability. Second, hardware CGF encounters coverage plateaus that property checking only partially alleviates before also plateauing because of state-space explosion. Third, the coverage plateau varies by metric: even strong CGF runs may leave functional or toggle metrics well below 100% (e.g., toggle coverage capped near 70% in one study, or specific functional-coverage metrics below 100% in the prior ISS evaluation). [CGF definition and coverage caveat] [Toggle coverage ceiling]

LINKED ENTITIES

1 links

CITATIONS

7 sources
7 citations
[1] CGF is described as effective at detecting many bugs while cautioning that higher coverage does not necessarily imply better fault detection, because triggering a bug may require both exercising a specific path and reaching an interesting program state on that path. Investigating Coverage Guided Fuzzing with Mutation Testing
[2] FLARE applies coverage-guided fuzzing to LLM-based multi-agent systems by extracting specifications and behavioral spaces from agent definitions, building test oracles, and fuzzing to expose failures, reporting 96.9% inter-agent coverage, 91.1% intra-agent coverage, and 56 previously unknown failures on 16 open-source applications. FLARE: Agentic Coverage-Guided Fuzzing for LLM-Based Multi-Agent Systems
[3] Verifying instruction set simulators using coverage-guided fuzzing has been investigated, treating the ISS as the target under test. A RISC-V Test Sequences Generation Method Based on Instruction ...
[4] DifuzzRTL is a differential fuzz testing framework for CPU verification that introduces a register-coverage metric to comprehensively capture RTL design states and guide input generation, cross-checks RTL simulation results against an ISA simulator, and automatically instruments register-coverage into target RTL designs. DifuzzRTL — CPU RTL Differential Fuzzer | Open Awesome
[5] ReFuzz selects and mutates highly effective tests from historic processor designs using contextual bandits to improve vulnerability detection and coverage efficiency on new target processors. NDSS 2026 hardware security research announcement (ReFuzz)
[6] Fuzzilicon is the first framework to perform post-silicon fuzzing on x86 CPUs with deep microcode-level instrumentation, extracting feedback directly from the processor's internal microcode execution and combining it with coverage-guided fuzzing to uncover subtle microarchitectural vulnerabilities. NDSS 2026 hardware security research announcement (Fuzzilicon)
[7] GoldenFuzz introduces a two-stage fuzzing strategy that decouples test refinement from vulnerability exploration using a fast golden-reference model of the device, achieving high coverage and discovering new high-severity vulnerabilities across RISC-V processors. NDSS 2026 hardware security research announcement (GoldenFuzz)

VERSION HISTORY

v7 · 7/4/2026 · minimax/minimax-m3 (current)
v6 · 6/25/2026 · minimax/minimax-m3
v5 · 6/24/2026 · minimax/minimax-m3
v4 · 6/24/2026 · minimax/minimax-m3
v3 · 5/29/2026 · gpt-5.5
v2 · 5/28/2026 · gpt-5.5
v1 · 5/25/2026 · gpt-5.5