
用于配合 libFuzzer 进行覆盖率引导的 Rust 模糊测试的 Cargo 子命令:创建并运行模糊测试目标、最小化故障与语料库,并报告覆盖率。
cargo fuzz一个用于通过 libFuzzer 进行模糊测试的 cargo 子命令!易于使用!
$ cargo install cargo-fuzz
注意:libFuzzer 需要 LLVM sanitizer(消毒器)支持,因此仅适用于 x86-64 和 Aarch64 架构,并且仅适用于类 Unix 操作系统(不适用于 Windows)。此外,由于使用了一些不稳定的命令行标志,它还需要 nightly 版本编译器。你还需要一个支持 C++11 的 C++ 编译器。
cargo fuzz init为你的 crate 初始化一个 cargo fuzz 项目!
Cargo.toml 中将 fuzz 目录添加到 workspace.membersfuzz 目录既可以是现有工作区的一部分(默认),也可以使用独立的工作区。如果需要后者,可以使用 cargo fuzz init --fuzzing-workspace=true。
cargo fuzz add <target>创建一个新的模糊测试目标!
cargo fuzz run <target>运行模糊测试目标并找出 Bug!
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(及其他工具)发现的 Bug。cargo fuzz 和 libFuzzer 是否为你找到了 Bug?把它添加到获奖案例中吧!
cargo-fuzz 根据 MIT 许可证和 Apache 许可证(2.0 版)的条款分发。
详情请参阅 LICENSE-APACHE 和 LICENSE-MIT。