
Cargo-Subbefehl für coverage-gesteuertes Rust-Fuzzing mit libFuzzer: Fuzz-Ziele erstellen und ausführen, Fehlschläge und Korpora minimieren sowie Abdeckung berichten.
cargo fuzzEin cargo-Unterbefehl zum Fuzzing mit libFuzzer! Einfach zu bedienen!
$ cargo install cargo-fuzz
Hinweis: libFuzzer benötigt LLVM-Sanitizer-Unterstützung, funktioniert also nur auf x86-64 und Aarch64,
und nur auf Unix-ähnlichen Betriebssystemen (nicht Windows). Außerdem wird ein Nightly-Compiler benötigt, da einige
instabile Befehlszeilen-Flags verwendet werden. Sie benötigen außerdem einen C++-Compiler mit C++11-Unterstützung.
cargo fuzz initInitialisieren Sie ein cargo fuzz-Projekt für Ihre Crate!
fuzz-Verzeichnis zu workspace.members in der Cargo.toml im Wurzelverzeichnis hinzuDas fuzz-Verzeichnis kann entweder Teil eines bestehenden Workspaces sein (Standard)
oder einen unabhängigen Workspace verwenden. Wenn Letzteres gewünscht ist, können Sie
cargo fuzz init --fuzzing-workspace=true verwenden.
cargo fuzz add <target>Erstellen Sie ein neues Fuzzing-Target!
cargo fuzz run <target>Führen Sie ein Fuzzing-Target aus und finden Sie Bugs!
cargo fuzz fmt <target> <input>Geben Sie die std::fmt::Debug-Ausgabe für einen Testfall aus. Nützlich, wenn Ihr Fuzzing-Target
eine Arbitrary-Eingabe annimmt!
cargo fuzz tmin <target> <input>Eine fehlschlagende Eingabe gefunden? Verkleinern Sie sie auf die kleinste Eingabe, die diesen Fehler verursacht, für einfacheres Debuggen!
cargo fuzz cmin <target>Verkleinern Sie Ihr Korpus an Eingabedateien!
cargo fuzz coverage <target>Erzeugen Sie Coverage-Informationen für das gefuzzte Programm!
Die Dokumentation finden Sie im Rust Fuzz Book.
Die vollständigen Befehlszeilenoptionen finden Sie außerdem jederzeit mit
--help:
$ cargo fuzz --help
Die Trophäensammlung enthält eine Liste von Bugs,
die von cargo fuzz (und anderen) gefunden wurden. Haben cargo fuzz und libFuzzer einen Bug
für Sie gefunden? Fügen Sie ihn der Trophäensammlung hinzu!
cargo-fuzz wird unter den Bedingungen sowohl der MIT-Lizenz als auch der
Apache License (Version 2.0) vertrieben.
Einzelheiten finden Sie in LICENSE-APACHE und LICENSE-MIT.