The bibliographic entry was discovered and compiled by a machine, and published without a person checking it against the publication. The publication itself is the authors' own work — this badge says nothing about it.

Full-Speed Fuzzing: Reducing Fuzzing Overhead through Coverage-Guided Tracing

The work

AuthorsStefan Nagy; Matthew Hicks
Editors
Typemisc
Year2019
Citekeynagy2019fullspeed

Where it appeared

Published inProceedings - IEEE Symposium on Security and Privacy/Proceedings of the ... IEEE Symposium on Security and Privacy
PublisherIEEE Computer Society
Pages787--802

Identifiers

DOI10.1109/sp.2019.00069
OpenAlexW2906875436

From OpenAlex, which stores abstracts as an index of words and their positions: what is shown is rebuilt from that, and reads fluently whether or not it is what the author wrote.

Abstract

Coverage-guided fuzzing is one of the most successful approaches for discovering software bugs and security vulnerabilities. Of its three main components: (1) test case generation, (2) code coverage tracing, and (3) crash triage, code coverage tracing is a dominant source of overhead. Coverage-guided fuzzers trace every test case's code coverage through either static or dynamic binary instrumentation, or more recently, using hardware support. Unfortunately, tracing all test cases incurs significant performance penalties--even when the overwhelming majority of test cases and their coverage information are discarded because they do not increase code coverage. To eliminate needless tracing by coverage-guided fuzzers, we introduce the notion of coverage-guided tracing. Coverage-guided tracing leverages two observations: (1) only a fraction of generated test cases increase coverage, and thus require tracing; and (2) coverage-increasing test cases become less frequent over time. Coverage-guided tracing encodes the current frontier of coverage in the target binary so that it self-reports when a test case produces new coverage--without tracing. This acts as a filter for tracing; restricting the expense of tracing to only coverage-increasing test cases. Thus, coverage-guided tracing trades increased time handling coverage-increasing test cases for decreased time handling non-coverage-increasing test cases. To show the potential of coverage-guided tracing, we create an implementation based on the static binary instrumentor Dyninst called UnTracer. We evaluate UnTracer using eight real-world binaries commonly used by the fuzzing community. Experiments show that after only an hour of fuzzing, UnTracer's average overhead is below 1%, and after 24-hours of fuzzing, UnTracer approaches 0% overhead, while tracing every test case with popular white- and black-box-binary tracers AFL-Clang, AFL-QEMU, and AFL-Dyninst incurs overheads of 36%, 612%, and 518%, respectively. We further integrate UnTracer with the state-of-the-art hybrid fuzzer QSYM and show that in 24-hours of fuzzing, QSYM-UnTracer executes 79% and 616% more test cases than QSYM-Clang and QSYM-QEMU, respectively.

How it got here

How it got hereagent via openalex
Added2026-10-24 21:59 UTC
Not denied bya person 2026-10-29 17:12 UTC

Cite it as

@misc{nagy2019fullspeed,
  title        = {Full-Speed Fuzzing: Reducing Fuzzing Overhead through Coverage-Guided Tracing},
  author       = {Stefan Nagy and Matthew Hicks},
  year         = {2019},
  journal      = {Proceedings - IEEE Symposium on Security and Privacy/Proceedings of the ... IEEE Symposium on Security and Privacy},
  publisher    = {IEEE Computer Society},
  pages        = {787--802},
  doi          = {10.1109/sp.2019.00069},
}

This record lives at https://refs.drheap.org/nagy2019fullspeed/ and will keep doing so.