In this course, I will first select a popular Rust library and identify the most interesting methods to fuzz. Then, I’ll explains how to use cargo-fuzz (libfuzzer) to generate fuzzing targets and how to customize them. Finally, I’ll show how to run the fuzzer and explain some particularity of cargo-fuzz.
I’m showing some good examples of Rust fuzzing harnesses that can be a good source of inspiration for you if you want to write better Rust fuzzing targets. I’m quickly copying part of this project and start fuzzing one Rust crate (dns_parser) using honggfuzz-rs.
In this video, we are testing cargo-libafl, the new LibAFL-based fuzzer for Rust fuzzing. This new cargo utility is a replacement for (and a fork of) cargo-fuzz to use a LibAFL-based fuzzer instead of libfuzzer. Let’s see how it performs compare to libfuzzer.