Fuzz Everything, Everywhere, All at Once

Advanced QEMU-based fuzzing

domenukk, van Hauser, Dongjia Zhang, andreafioraldi and Addison Crump

Playlists: '37c3' videos starting here / audio

The maintainers of the AFLplusplus open-source project show crazy new ways to (ab)use QEMU to explore difficult, binary-only targets through fuzzing.

We present a proof of concept using AFL++ and QEMU to find command and SQL-injections, going beyond the classic fuzzing for memory corruption.

We also present a scalable approach to fuzzing binary-only code with LibAFL and QEMU, showcasing how to build a custom fuzzer to test Android libraries without using a phone.

In this talk, the maintainers of the AFLplusplus organization present the QEMU-based instrumentation engines developed as part of AFL++ and LibAFL to fuzz advanced binary-only targets. We discuss our extensions to QEMU, the well-known emulator, to allow high-performance, cross-architecture fuzzing and target instrumentation. Finally, we demo a proof of concept using AFL++ to find injection vulnerabilities in the binaries, going beyond the typical fuzzing for memory corruptions.

We then present LibAFL QEMU, a library that offers convenient APIs to hook the target using Rust. Unlike other public fuzzers, tools built with LibAFL can scale over cores and machines to find vulnerabilities faster and at a large scale. We also showcase how we built a custom fuzzer for a binary-only Android library using this new emulator API for fuzzing that scales to 96 cores almost linearly, reaching a whopping number of executions per second!


These files contain multiple languages.

This Talk was translated into multiple languages. The files available for download contain all languages as separate audio-tracks. Most desktop video players allow you to choose between them.

Please look for "audio tracks" in your desktop video player.