google/honggfuzz

GitHub: google/honggfuzz

一款面向安全的反馈驱动型模糊测试工具,利用软件和硬件代码覆盖率来高效发现软件中的安全漏洞。

Stars: 3360 | Forks: 535

# Honggfuzz **一款面向安全、反馈驱动、进化的 fuzzer。** Honggfuzz 是一款通用型 fuzzer,它利用代码覆盖率(基于软件和硬件)来发现 bug。它支持多进程、多线程,并支持持久化 fuzzing 以实现极致的速度。 ## 主要特性 * **快速**:多进程和多线程引擎,释放 CPU 的全部潜力。 * **持久化 Fuzzing**:直接在进程内测试 API,迭代速度高达 1M/秒。 * **反馈驱动**:利用硬件(Intel BTS/PT)和软件代码覆盖率来进化输入。 * **简单易用**:可以从空的语料库开始,自动构建有效的输入集。 * **深度监控**:利用底层 API(`ptrace`)检测被劫持的信号和隐藏的崩溃。 * **广泛支持**:支持 Linux、macOS、Android、NetBSD、FreeBSD 和 Windows (Cygwin)。 ## 安装说明 ### 依赖项 **Linux (Ubuntu/Debian)** ``` sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang ``` **macOS** 需要 [Xcode](https://developer.apple.com/xcode/) (10.8+) 和 `libblocksruntime`。 ### 构建 ``` make # 编译 wrappers 在 hfuzz_cc/ 中创建 ``` ## 用法 ### 1. 编译目标程序 使用提供的编译器包装器自动添加插桩: ``` # C code ./hfuzz_cc/hfuzz-clang -o my_target my_target.c # C++ code ./hfuzz_cc/hfuzz-clang++ -o my_target my_target.cpp ``` ### 2. 运行 Fuzzer 将其指向输入语料库目录(可以为空)和你的二进制文件: ``` # 基本运行 ./honggfuzz -i input_dir/ -- ./my_target ___FILE___ # Persistent mode(更快) ./honggfuzz -P -i input_dir/ -- ./my_target ``` *注意:`___FILE___` 是 honggfuzz 生成的输入文件名的占位符。* 如需高级示例(Apache、OpenSSL、BIND 等),请查看 `examples/` 目录。 有关详细的选项,请参阅 [USAGE.md](docs/USAGE.md)。 ## 战利品 Honggfuzz 已经在关键软件中发现了许多重大的安全漏洞。 ### HTTP 与服务器 * **Apache HTTPD**: * CVE-2017-7659(mod_http2 远程崩溃) * CVE-2017-9789(释放后使用) * CVE-2018-1301, CVE-2018-1302, CVE-2018-1303 * **OpenSSH**: 认证前远程崩溃(commit 28652bca) * **BIND**: 多个 bug * **NGINX Unit**: 死循环 * **ProFTPD**: CVE-2019-18217 (DoS) * **Samba**: CVE-2019-14907, CVE-2020-10745, CVE-2021-20277 ### 密码学与 SSL * **OpenSSL**: * **CVE-2016-6309(严重,潜在的 RCE)** * CVE-2015-1789, CVE-2016-7054, CVE-2017-3731 * **LibreSSL**: 多个崩溃和无效的释放 * **BoringSSL**: 未初始化内存使用 * **Crypto++**: CVE-2016-9939(远程 DoS) ### 编程语言与解释器 * **PHP**: WDDX bug,通用解释器崩溃 * **Python/Ruby**: 解释器 bug * **Rust**: `regex`、`h2`、`sleep-parser`、`lewton` 中的 panic/安全问题 * **Perl**: 多个解释器崩溃 ### 多媒体与文件格式 * **FreeType 2**: CVE-2010-2497 至 CVE-2010-2527(7 个以上 CVE) * **LibTIFF**: 多个 bug * **LibJPEG/Turbo**: 多个 bug * **VLC**: Double-free RCE * **Adobe Flash**: CVE-2015-0316 * **ImageIO (iOS/macOS)**: 多个安全问题 (Project Zero) * **LibreOffice**: 内存破坏 ### 系统与实用工具 * **Systemd**: 由 honggfuzz 测试 * **fwupd**: 发现 17 个以上 bug * **TCPDump**: 多个 bug * **Rsyslog**: 多个 bug *(查看 [OSS-Fuzz](https://bugs.chromium.org/p/oss-fuzz/issues/list?q=honggfuzz&can=1) 了解数百个更多信息)* ## 使用 Honggfuzz 的项目 * **Google OSS-Fuzz**: 为开源软件提供持续 fuzzing。 * **Android**: 被 Android 安全团队使用。 * **Rust**: `honggfuzz-rs` crate,用于 fuzzing Rust 代码。 * **Bitcoin Core**: Fuzzing 基础设施。 * **Apache HTTP Server**: CI fuzzing。 * **Systemd**: CI fuzzing。 * **Cifasis QuickFuzz** * **Mozilla FuzzOS** ## 许可证 Apache License 2.0。 __这不是一款官方的 Google 产品__
标签:C/C++, 事务性I/O, 代码覆盖率, 客户端加密