
libFuzzer によるカバレッジ誘導型 Rust ファジングのための Cargo サブコマンド: ファズターゲットの作成と実行、失敗とコーパスの最小化、カバレッジのレポート。
cargo fuzzlibFuzzer を使ったファジングのための cargo サブコマンド!簡単に使えます!
$ cargo install cargo-fuzz
注意:libFuzzer は LLVM サニタイザーのサポートを必要とするため、x86-64 と Aarch64 でのみ動作し、Unix 系オペレーティングシステムでのみ動作します(Windows は不可)。また、いくつかの不安定なコマンドラインフラグを使用するため、nightly コンパイラが必要です。さらに、C++11 をサポートする C++ コンパイラも必要です。
cargo fuzz initあなたのクレート用に cargo fuzz プロジェクトを初期化します!
Cargo.tomlworkspace.membersfuzzfuzz ディレクトリは、既存のワークスペースの一部(デフォルト)にすることも、独立したワークスペースを使用することもできます。後者を希望する場合は、cargo fuzz init --fuzzing-workspace=true を使用できます。
cargo fuzz add <target>新しいファズターゲットを作成します!
cargo fuzz run <target>ファズターゲットを実行してバグを見つけます!
cargo fuzz fmt <target> <input>テストケースの std::fmt::Debug 出力を表示します。ファズターゲットが Arbitrary 入力を取る場合に便利です!
cargo fuzz tmin <target> <input>失敗する入力を発見しましたか?デバッグを容易にするために、その失敗を引き起こす最小の入力に縮小します!
cargo fuzz cmin <target>入力ファイルのコーパスを縮小します!
cargo fuzz coverage <target>ファズされたプログラムのカバレッジ情報を生成します!
ドキュメントは Rust Fuzz Book にあります。
また、--help を使用すると、利用可能なすべてのコマンドラインオプションをいつでも確認できます:
$ cargo fuzz --help
トロフィーケース には、cargo fuzz(およびその他のツール)によって発見されたバグのリストがあります。cargo fuzz と libFuzzer がバグを発見しましたか?トロフィーケースに追加しましょう!
cargo-fuzz は、MIT ライセンスと Apache License(Version 2.0)の両方の条件の下で配布されています。
詳細は LICENSE-APACHE と LICENSE-MIT を参照してください。