#模糊测试 #cargo #输入 #cargo 子命令 #lib-fuzzer #目标 #目录

app cargo-fuzz

一个用于与 libFuzzer 进行模糊测试的 cargo 子命令!易于使用!

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测试

Download history 8668/week @ 2024-03-14 7781/week @ 2024-03-21 7898/week @ 2024-03-28 8751/week @ 2024-04-04 8643/week @ 2024-04-11 8265/week @ 2024-04-18 11102/week @ 2024-04-25 11193/week @ 2024-05-02 10232/week @ 2024-05-09 11558/week @ 2024-05-16 11380/week @ 2024-05-23 13174/week @ 2024-05-30 9801/week @ 2024-06-06 14900/week @ 2024-06-13 16581/week @ 2024-06-20 14010/week @ 2024-06-27

57,952 每月下载量
用于 text_manipulation_rs

MIT/Apache

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-APACHELICENSE-MIT

依赖关系

~4–13MB
~165K SLoC