工程开发
cargo-fuzz avatar

cargo-fuzz

cargo-fuzz 是 Rust 的基准模糊测试工具,通过 libFuzzer 后端与集成式清理器支持,为 Cargo 项目提供自动化漏洞挖掘功能。

简介

cargo-fuzz 是安全工程师与开发人员针对 Rust 项目进行覆盖率引导式模糊测试的首选工具。它提供专门的 Cargo 子命令,可自动化 libFuzzer 的复杂构建需求,包括对地址清理器 (AddressSanitizer, ASan) 与其他检测功能的原生支持。通过直接整合至 Cargo 工作流程,它能协助开发人员识别传统单元测试经常遗漏的崩溃、内存安全问题与线程恐慌。该工具旨在与安全及非安全的 Rust 代码无缝协作,是高保障 Rust 应用程序安全开发生命周期中的关键组件。

  • 自动化检测:自动配置 libFuzzer 的编译标志,确保深度的覆盖率分析。

  • 清理器支持:内置 AddressSanitizer 集成,有助于在执行期间检测内存损坏、泄露与缓冲区溢出。

  • 结构感知模糊测试:兼容于 arbitrary 套件,可根据项目特定的数据结构生成高质量且具备类型的数据。

  • 语料库管理:处理测试输入 (corpus) 与崩溃产物 (artifacts) 的存储与优化,实现可重现的错误报告。

  • 覆盖率报告:利用 llvm-tools-preview 生成 HTML 格式的覆盖率报告,以衡量模糊测试工具的有效性。

  • 使用需求:需要 Rust nightly 工具链才能正常运作。

  • Harness 最佳实践:用户应将代码构建为库 crate,并利用 fuzz_target! 宏以确保稳定性与确定性的执行。

  • 性能优化:对于纯安全的 Rust 项目,支持使用 --sanitizer none 禁用清理器,以获得显著的性能提升。

  • 工作流程整合:专为持续集成或本地开发而设计,能主动发现解析逻辑、数据序列化器与网络协议中的漏洞。

  • 输入处理:该工具预期一个接受 &[u8] 切片的函数作为 harness,模糊测试引擎会持续使用变异后的数据进行投喂。

仓库统计

Star 数
4,873
Fork 数
424
Open Issue 数
21
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月29日 06:17
在 GitHub 查看