Honggfuzz
一个面向安全、反馈驱动、进化式的模糊测试工具。
Honggfuzz 是一个通用型模糊测试工具,利用代码覆盖率(软件和硬件层面)来发现漏洞。它支持多进程、多线程,并支持持久化模糊测试以实现极高的执行速度。
主要特性
- 快速:多进程、多线程引擎,充分发挥 CPU 的完整潜力。
- 持久化模糊测试:直接在进程内测试 API,迭代速度可达每秒 100 万次。
- 反馈驱动:利用硬件(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 (10.8+) 和 libblocksruntime。
构建
make
# 编译包装器创建于 hfuzz_cc/
使用方法
1. 编译目标
使用提供的编译器包装器来自动添加插桩:
# C 代码
./hfuzz_cc/hfuzz-clang -o my_target my_target.c
# C++ 代码
./hfuzz_cc/hfuzz-clang++ -o my_target my_target.cpp
2. 运行模糊测试器
将其指向输入语料库目录(可以为空)和你的二进制文件:
# 基本运行
./honggfuzz -i input_dir/ -- ./my_target ___FILE___
# 持久化模式(更快)
./honggfuzz -P -i input_dir/ -- ./my_target
注意:___FILE___ 是 honggfuzz 生成输入文件名的占位符。
有关高级示例(Apache、OpenSSL、BIND 等),请查看 examples/ 目录。
详细选项参见 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 漏洞、通用解释器崩溃
- Python/Ruby:解释器漏洞
- Rust:
regex、h2、sleep-parser、lewton 中的恐慌/安全问题
- Perl:多次解释器崩溃
媒体与格式
- FreeType 2:CVE-2010-2497 至 CVE-2010-2527 (7+ 个 CVE)
- LibTIFF:多个漏洞
- LibJPEG/Turbo:多个漏洞
- VLC:双重释放 RCE
- Adobe Flash:CVE-2015-0316
- ImageIO (iOS/macOS):多个安全问题 (Project Zero)
- LibreOffice:内存破坏
系统与工具
- Systemd:由 honggfuzz 测试
- fwupd:发现 17+ 个漏洞
- TCPDump:多个漏洞
- Rsyslog:多个漏洞
(更多数百个漏洞参见 OSS-Fuzz)
使用 Honggfuzz 的项目
- Google OSS-Fuzz:针对开源软件的持续模糊测试。
- Android:由 Android 安全团队使用。
- Rust:用于模糊测试 Rust 代码的
honggfuzz-rs crate。
- Bitcoin Core:模糊测试基础设施。
- Apache HTTP Server:CI 模糊测试。
- Systemd:CI 模糊测试。
- Cifasis QuickFuzz
- Mozilla FuzzOS
许可证
Apache License 2.0.
这不是 Google 的官方产品