rust-fuzz/cargo-fuzz

GitHub: rust-fuzz/cargo-fuzz

一个基于 libFuzzer 的 Cargo 子命令,为 Rust 项目提供简单易用的模糊测试能力。

Stars: 1764 | Forks: 125

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` 项目! ### 如果你的 crate 使用 cargo workspaces,请将 `fuzz` 目录添加到根 `Cargo.toml` 的 `workspace.members` 中 `fuzz` 目录既可以是现有 workspace 的一部分(默认), 也可以使用独立的 workspace。如果需要后者,可以使用 `cargo fuzz init --fuzzing-workspace=true`。 ### cargo fuzz add 创建一个新的模糊测试目标! ### cargo fuzz run 运行模糊测试目标并查找 bug! ### cargo fuzz fmt 打印测试用例的 `std::fmt::Debug` 输出。当你的模糊测试目标 接受 `Arbitrary` 输入时非常有用! ### cargo fuzz tmin 发现了一个失败输入?将其最小化为导致该失败的最小输入, 以便于调试! ### cargo fuzz cmin 最小化你的输入文件语料库! ### cargo fuzz coverage 生成模糊测试程序的覆盖率信息! ## 文档 文档可在 [Rust Fuzz Book](https://rust-fuzz.github.io/book/cargo-fuzz.html) 中找到。 你也可以随时使用 `--help` 查看所有可用的完整命令行选项: ``` $ cargo fuzz --help ``` ## 荣誉展示 [荣誉展示](https://github.com/rust-fuzz/trophy-case) 列出了由 `cargo fuzz`(及其他工具)发现的 bug 列表。 `cargo fuzz` 和 libFuzzer 是否为你发现了一个 bug?请将其添加到荣誉展示中! ## 许可证 `cargo-fuzz` 根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行分发。 有关详细信息,请参阅 [LICENSE-APACHE](./LICENSE-APACHE) 和 [LICENSE-MIT](./LICENSE-MIT)。
标签:Cargo, Fuzzing, LibFuzzer, LLVM, Nightly Rust, Rust, TLS抓取, Unix-like, 代码覆盖率, 单元测试, 可视化界面, 威胁情报, 安全测试, 开发者工具, 攻击性安全, 测试用例最小化, 网络流量审计, 语料库管理, 软件安全, 通知系统, 通知系统