cargo-fuzz
用于 Rust 项目结合 Cargo 和 libFuzzer 的标准模糊测试工具。自动化测试套件设置、内存消毒器集成及覆盖率分析。
简介
cargo-fuzz 是 Rust 生态系统中实施模糊测试 (fuzzing) 的首选工具。它以 libFuzzer 作为后端引擎,并与 Cargo 构建系统无缝集成,确保 Rust 开发者无需处理复杂的工具链配置即可进行漏洞研究。通过自动化编译标志并提供生成模糊测试目标的结构化方法,它能够快速识别安全与非安全 Rust 代码中的崩溃、恐慌 (panic) 以及内存安全违规。
-
通过专用的 CLI 子命令简化了模糊测试套件 (harness) 的创建,自动处理样板代码与项目结构初始化。
-
支持 AddressSanitizer (ASan) 及其他基于 LLVM 的消毒器,能高精度地检测内存损坏、缓冲区溢出与释放后使用 (use-after-free) 等错误。
-
通过与 arbitrary crate 的深度集成实现结构感知模糊测试,允许产生符合定义数据结构的复杂输入,而非仅仅是原始字节流。
-
提供覆盖率引导分析的内置支持,开发者可使用 llvm-tools-preview 生成报告,可视化模糊测试期间代码库的路径执行情况。
-
提供灵活的执行模式,包括用于引导模糊测试器的字典支持、用于维护输入状态的语料库 (corpus) 管理,以及针对崩溃分类的特定产出物重现执行。
-
专为使用 Cargo 构建系统与 Nightly 工具链的 Rust 项目设计,Nightly 版本对于特定编译器插装功能至关重要。
-
适用于安全性审计、回归测试,以及识别库与二进制包 (crate) 中的边缘情况失败。
-
建议用户将代码结构化为库 crate,以最大化可测试函数的粒度。
-
性能注意事项:消毒器会增加额外负担;对于性能敏感场景或纯安全 Rust 代码,可禁用消毒器以显著提升测试速度。
-
输入要求包含使用 fuzz_target! 宏的有效 harness 函数;工具负责管理语料库目录与产出物存储,以确保错误报告的可重现性。
仓库统计
- Star 数
- 4,856
- Fork 数
- 421
- Open Issue 数
- 29
- 主要语言
- Python
- 默认分支
- main
- 同步状态
- 空闲
- 最近同步时间
- 2026年4月28日 11:52