jubnzv/multifuzz
GitHub: jubnzv/multifuzz
Rust 多引擎模糊测试编排器,可并行运行 AFL++、honggfuzz 和 libFuzzer 并自动同步语料库与收集崩溃。
Stars: 0 | Forks: 0
# multifuzz
Rust 的多引擎 Fuzzing 编排器。并行运行 AFL++、honggfuzz 和 libfuzzer,具备自动语料库同步和崩溃收集功能。

## 用法
使用 `fuzz!` 宏编写 Fuzz harness:
```
use multifuzz::fuzz;
fn main() {
fuzz!(|data: &[u8]| {
// test your code here
});
}
```
也支持通过 `Arbitrary` 实现结构化输入:
```
fuzz!(|data: MyStruct| {
// data is deserialized automatically
});
```
## 前置条件
安装 fuzzing 工具链:
```
cargo install cargo-afl
cargo install honggfuzz
```
## 安装
```
cargo install --path path/to/multifuzz
```
## 配置
活动 (Campaign) 通过 TOML 文件进行配置(默认为 `multifuzz.toml`,或通过 `--config ` 指定)。请参阅 `multifuzz.toml.example` 获取完整参考。
```
[fuzz]
target = "my_target"
jobs = 4
corpus = "./corpus"
output = "./output"
timeout = 10
strategy = "parallel" # "parallel", "afl-only", "hongg-only", "libfuzzer-only"
sync_interval = 60
dictionaries = ["./dict.dict"]
[fuzz.web]
enabled = true
# Per-worker AFL++ env 覆盖。
# Keys: "all", "even", "odd", "workerN"。
[fuzz.afl.all.env]
AFL_SKIP_CPUFREQ = "1"
[fuzz.afl.worker2.env]
AFL_CUSTOM_MUTATOR_LIBRARY = "/path/to/mutator.so"
```
## CLI
```
# 构建所有 fuzzer 二进制文件 (AFL++, honggfuzz, libfuzzer)
multifuzz build
# 运行 campaign (从 cwd 读取 multifuzz.toml,或传递 --config )
multifuzz fuzz
# 重放 crash 或输入目录
multifuzz run my_target -i output/my_target/crashes/ -r
# 将外部输入添加到正在运行的 fuzzing 会话
multifuzz add-corpus my_target -i interesting_inputs/ -r
```
## Web 仪表板
可选的轻量级 Web UI(`[fuzz.web] enabled = true`)为正在运行的活动提供实时监控、暂停/恢复控制以及 Worker 扩缩容功能。
## 工作原理
任务会自动分配到各引擎。语料库文件通过基于哈希的去重机制在引擎间定期同步。来自所有引擎的崩溃信息会被收集到统一的 `crashes/` 目录中。
## 许可证
Apache-2.0
标签:AFL++, Fuzzing, Honggfuzz, libFuzzer, Python安全, Rust, TLS抓取, Web仪表盘, 可视化界面, 多引擎编排, 安全测试, 并行计算, 攻击性安全, 文档安全, 测试框架, 网络流量审计, 语料库同步, 软件安全, 软件开发工具包, 通知系统