1.3 指南

cargo-fuzz 命令与配置

译文 · 基于 Rust Fuzz Book

指南

原文链接: https://rust-fuzz.github.io/book/cargo-fuzz/guide.html

cargo-fuzz 所有可用命令:

1
cargo fuzz --help

运行某个目标:

1
cargo fuzz run <fuzz target name>

Cargo 特性

可使用命令行选项 --features、--no-default-features 和 --all-features 对启用不同 Cargo 特性配置的 crate 进行模糊测试。注意这些选项控制的是 fuzz_targets crate;你需要将它们转发到被模糊测试的 crate,例如在 fuzz_targets/Cargo.toml 中添加:

1
2
[features]
unsafe = ["project/unsafe"]

#[cfg(fuzzing)]

每个为模糊测试插桩的 crate——fuzz_targets crate、项目 crate 及其整个依赖树——都会以 --cfg fuzzing 选项编译。这样可以用简单的 #[cfg(not(fuzzing))] 禁用会妨碍模糊测试的代码路径(例如加密签名验证),而无需在每个依赖中维护外部可见的 Cargo 特性。

libFuzzer 配置选项

查看所有 libFuzzer 选项:

1
cargo fuzz run <fuzz target name> -- -help=1

例如,仅生成 ASCII 输入:

1
cargo fuzz run <fuzz target name> -- -only_ascii=1
最后修改 August 23, 2026: 更新 (499855b16)