45 个版本 (4 个稳定版本)
| 1.1.0 | 2024 年 5 月 22 日 |
|---|---|
| 1.0.0 | 2024 年 2 月 5 日 |
| 0.8.3 | 2024 年 1 月 18 日 |
| 0.8.2 | 2023 年 11 月 20 日 |
| 0.1.0 | 2022 年 6 月 13 日 |
#75 在 Cargo 插件 中排名
每月 123 次下载
77KB
1.5K SLoC
ziggy
ziggy 是一个 Rust 项目模糊测试管理器,旨在
- 并行运行不同的模糊测试并使用共享语料库
- 创建和监控连续模糊测试管道
功能集
- 🤹 并行处理不同的模糊测试进程(honggfuzz,AFL++)
- 🗃️ 为所有模糊测试提供一个共享语料库
- 🤏 无需努力即可最小化语料库
- 📊 有洞察力的监控
- 🎯 易于生成覆盖率报告
- 😶🌫️ 支持任意特质
还包括以下功能
- 🐇 LibAFL 集成
- 📨 通过 bash 钩子通知新的崩溃
使用示例
首先,通过运行以下命令安装 ziggy 及其依赖项:
cargo install --force ziggy cargo-afl honggfuzz grcov
以下是工具帮助输出的示例
$ cargo ziggy
A multi-fuzzer management utility for all of your Rust fuzzing needs 🧑🎤
Usage: cargo ziggy <COMMAND>
Commands:
build Build the fuzzer and the runner binaries
fuzz Fuzz targets using different fuzzers in parallel
run Run a specific input or a directory of inputs to analyze backtrace
minimize Minimize the input corpus using the given fuzzing target
cover Generate code coverage information using the existing corpus
plot Plot AFL++ data using afl-plot
add-seeds Add seeds to the running AFL++ fuzzers
triage Triage crashes found with casr - currently only works for AFL++
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
要创建模糊测试,只需将 ziggy 添加为依赖项。
[dependencies]
ziggy = { version = "1.1.0", default-features = false }
然后在您的 main 中使用 fuzz! 宏创建一个 harness。
fn main() {
ziggy::fuzz!(|data: &[u8]| {
println!("{data:?}");
});
}
有关文档齐全的模糊测试示例,请参阅 url 示例。
output 目录
在您启动模糊测试后,您将在 output 目录中找到几个项目:
- 包含完整语料库的
corpus目录 - 包含模糊测试检测到的任何崩溃的
crashes目录 - 包含模糊测试日志文件的
logs目录 - 包含 AFL++ 输出的
afl目录 - 包含 Honggfuzz 输出的
honggfuzz目录 - 用于 ziggy 将 AFL++ 中的项目传递给 Honggfuzz 的
queue目录
关于覆盖率的说明
默认情况下,cargo cover 命令不会为模糊测试项目的依赖项生成覆盖率。
如果您想更改此设置,可以使用以下技巧
CARGO_HOME=.cargo cargo ziggy cover
这将把每个依赖项克隆到一个 .cargo 目录中,并且该目录将被包含在生成的覆盖率中。
ziggy 日志
如果您想查看 ziggy 的内部日志,可以将 RUST_LOG=INFO 设置。
依赖项
~0–16MB
~320K SLoC