zzuf logo

zzuf - multi-purpose fuzzer

zzuf is a transparent application input fuzzer. Its purpose is to find bugs in applications by corrupting their user-contributed data (which more than often comes from untrusted sources on the Internet). It works by intercepting file and network operations and changing random bits in the program’s input. zzuf’s behaviour is deterministic, making it easier to reproduce bugs. Its main areas of use are:

  • quality assurance: use zzuf to test existing software, or integrate it into your own software’s testsuite
  • security: very often, segmentation faults or memory corruption issues mean a potential security hole, zzuf helps exposing some of them
  • code coverage analysis: use zzuf to maximise code coverage

zzuf’s primary target is media players, image viewers and web browsers, because the data they process is inherently insecure, but it was also successfully used to find bugs in system utilities such as objdump.

zzuf is not rocket science: the idea of fuzzing input data is barely new, but zzuf’s main purpose is to make things easier and automated. You can see an old, impressive list of bugs found with zzuf.

Support

Fully supported: Linux (glibc), FreeBSD, OpenBSD, Mac OS X and OpenSolaris

Almost working: NetBSD

Not ready: Windows

Downloads

Downloads happen on Github: https://github.com/samhocevar/zzuf/releases

Documentation

The zzuf tutorial is a hands-on guide to the most important zzuf features. It starts with the working principles but goes on with very advanced uses of the tool.

Warning: this tutorial requires zzuf version 0.11 or later.

  1. Basic zzuf usage
    1.1. Launching zzuf
    1.2. Invoking different programs
    1.3. The fuzzing ratio
    1.4. The random seed
    1.5. Creating fuzzed files
  2. zzuf as a batch testing tool
    2.1. Debug mode
    2.2. Include and exclude patterns
    2.3. Seed ranges
    2.4. Ratio ranges
  3. WORK IN PROGRESS

Presentations

Sam gave a few talks about zzuf. The slides contain information you may find useful:

Internals documentation

zzuf is full of black magic and can be pretty difficult to hack with. The internals documentation tries to shed light on the global architecture and some specific tricks.

Development

Development happens on GitHub:

If you want to discuss zzuf or report bugs, you can use the GitHub issue tracker, or write to sam@hocevar.net, or even join #libcaca on irc.freenode.net.

They use zzuf

Last modified 9 years ago Last modified on 06/09/2015 01:35:23 PM

Attachments (10)