37 个版本
0.12.0 | 2024 年 2 月 20 日 |
---|---|
0.11.2 | 2023 年 2 月 13 日 |
0.11.1 | 2022 年 10 月 25 日 |
0.11.0 | 2021 年 9 月 27 日 |
0.4.0 | 2017 年 3 月 30 日 |
#43 在 测试
57,952 每月下载量
用于 text_manipulation_rs
64KB
1.5K SLoC
cargofuzz
一个用于与 libFuzzer
进行模糊测试的 cargo
子命令!易于使用!
安装
$ cargo install cargo-fuzz
注意:由于 libFuzzer
需要 LLVM 检查器支持,因此目前仅在 x86-64 Linux、x86-64 macOS 和 Apple-Silicon (aarch64) macOS 上有效。您还需要一个支持 C++11 的 C++ 编译器。
如果您有旧的 cargo fuzz
版本,可以使用以下命令升级
$ cargo install -f cargo-fuzz
用法
cargofuzz init
为您的 crate 初始化一个 cargo fuzz
项目!
如果您的 crate 使用 cargo 工作区,请将 fuzz
目录添加到根 Cargo.toml
中的 workspace.members
fuzz
目录可以是现有工作区的一部分(默认)或使用独立工作区。如果希望使用独立工作区,可以使用 cargo fuzz init --fuzzing-workspace=true
。
cargofuzz add<目标>
创建一个新的模糊测试目标!
cargofuzz run<目标>
运行模糊测试目标并查找错误!
cargofuzz fmt<目标> <输入>
打印测试用例的 std::fmt::Debug
输出。当你的模糊测试目标接收 Arbitrary
输入时非常有用!
cargofuzz tmin<目标> <输入>
找到一个失败的输入?将其最小化到导致失败的最小输入,以便更容易调试!
cargofuzz cmin<目标>
最小化输入文件库!
cargofuzz coverage<目标>
为模糊测试程序生成覆盖率信息!
文档
文档可以在 Rust Fuzz 书籍 中找到。
您还可以通过 --help
获取所有可用的完整命令行选项。
$ cargo fuzz --help
奖杯案例
奖杯案例 包含了通过 cargo fuzz
(以及其他工具)找到的漏洞列表。您的 cargo fuzz
和 libFuzzer 找到漏洞了吗?将它添加到奖杯案例中!
许可证
cargo-fuzz
在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
依赖关系
~4–13MB
~165K SLoC