AFL++ vs cargo-fuzz
AFL++
github.comcargo-fuzz
github.comSide by side
| Figure | AFL++ | cargo-fuzz |
|---|---|---|
| Price from | €1,666.67/mo | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Android | Yes | — |
| Self-hosted | Yes | — |
| Plans published | 2 | 1 |
| Spec score · Fuzz Testing Software | 8.9 (#1) | 8.5 (#5) |
| Purpose | AFL++ is a coverage-guided fuzzer that mutates input and checks whether it reaches a new path in the target binary. | cargo-fuzz is a cargo subcommand for fuzzing with libFuzzer. |
Plans
In their own words
AFL++
AFL++ is a coverage-guided fuzzer that changes input and checks whether a target binary reaches a new execution path. Its afl-cc compiler supports LTO, LLVM and GCC_PLUGIN instrumentation. The project also lists collision-free coverage, AFLfast++ power schedules, MOpt mutators, laf-intel and redqueen. Documentation covers source-available software, binary-only targets, network services and GUI programs, with build options for source-only, binary-only or combined distributions. A Docker image supports x86_64 and arm64; its example mounts target source at /src. On Linux, the installation guide recommends LLVM 18 or newer and gives LLVM 14 as the minimum. macOS build guidance covers x86_64 and arm64, but afl-clang-lto, afl-gcc-fast and qemu_mode do not work there. Fuzzing can strain hardware, consume substantial memory or disk, and create heavy filesystem activity. AFL++ is available free under AGPL terms; modified versions offered as network services must provide users the corresponding source. A commercial license is listed at €20,000 a year.
cargo-fuzz
cargo-fuzz is a Cargo subcommand for fuzzing Rust code. It invokes libFuzzer through the libfuzzer-sys crate rather than acting as a fuzzer itself. Start a crate with `cargo fuzz init`, add a target with `cargo fuzz add `, then use `cargo fuzz run ` to search for bugs. The tool can reduce a failing input with `cargo fuzz tmin` or trim a corpus with `cargo fuzz cmin`; `cargo fuzz coverage` generates source-based coverage information in version 0.10.0 or newer. Documentation also covers structure-aware fuzzing and Cargo feature options, plus a GitHub Actions workflow for building and running targets in CI. It supports Linux, macOS and Windows, with documented systems including x86-64 Linux, x86-64 and Apple-Silicon macOS, and Windows with LLVM sanitizer support. Windows programs can also be fuzzed with MSVC AddressSanitizer. Installation is documented as `cargo install cargo-fuzz`. It requires nightly Rust and a C++11-capable compiler. The project is free and distributed under the MIT and Apache License 2.0.