AutoHarness 自动化模糊测试工具使用教程
1. 项目介绍
AutoHarness 是一款自动化工具,旨在帮助研究人员自动生成模糊测试工具。该工具的初衷源于当前模糊测试代码库中的一个并发问题:大型代码库有数千个函数和代码片段,可以嵌入到库中相当深层的地方。对于更加智能的模糊测试工具来说,想要达到那个代码路径都是非常困难的,有时甚至都不可能到达。AutoHarness 的主要作用就是试图在一定程度上缓解这一问题,并提供一种工具,供安全研究人员用于对代码库初始化测试。当前版本的 AutoHarness 仅支持 C 和 C++ 代码库。
2. 项目快速启动
2.1 环境准备
在开始使用 AutoHarness 之前,您需要确保系统中已安装以下依赖项:
- Python 3
- pip3
- LLVM 12
- Clang 12
- Git
您可以使用以下命令来安装这些依赖项:
sudo apt-get update
sudo apt-get install python3 python3-pip llvm-12* clang-12 git
pip3 install pandas lief subprocess os argparse ast
2.2 安装 CodeQL
AutoHarness 依赖于 CodeQL 来分析代码库。请参考 CodeQL 官方文档 来安装 CodeQL。
2.3 克隆项目
使用以下命令将 AutoHarness 项目克隆到本地:
git clone https://github.com/parikhakshat/autoharness.git
2.4 运行示例
以下是一个运行 AutoHarness 的示例命令,假设您正在对 Nginx 进行模糊测试:
python3 harness.py -L /home/akshat/nginx-1.21.0/objs/ -C /home/akshat/codeql-h/ -M 1 -O /home/akshat/autoharness/ -D nginx -G 1 -Y 1 -F "-I /home/akshat/nginx-1.21.0/objs -I /home/akshat/nginx-1.21.0/src/core -I /home/akshat/nginx-1.21.0/src/event -I /home/akshat/nginx-1.21.0/src/http -I /home/akshat/nginx-1.21.0/src/mail -I /home/akshat/nginx-1.21.0/src/misc -I /home/akshat/nginx-1.21.0/src/os -I /home/akshat/nginx-1.21.0/src/stream -I /home/akshat/nginx-1.21.0/src/os/unix" -X ngx_config.h ngx_core.h
3. 应用案例和最佳实践
3.1 应用案例
AutoHarness 已被用于对 Nginx 等大型开源项目进行模糊测试。通过自动生成模糊测试工具,研究人员可以更高效地发现代码中的潜在漏洞。
3.2 最佳实践
- 选择合适的代码库:AutoHarness 目前仅支持 C 和 C++ 代码库,因此在选择目标代码库时需要注意。
- 优化编译选项:在运行 AutoHarness 之前,确保目标代码库已正确编译,并添加必要的头文件,以提高模糊测试的成功率。
- 调试和优化:根据 AutoHarness 生成的输出结果,进一步调试和优化模糊测试工具,以提高测试效果。
4. 典型生态项目
AutoHarness 依赖于以下几个关键的开源项目:
- LLVM/Clang:用于代码分析和编译。
- CodeQL:用于静态代码分析,帮助 AutoHarness 识别代码中的函数和路径。
- LIEF:用于处理可执行文件和共享库,支持将 PIE 可执行程序转换为共享库。
这些项目共同构成了 AutoHarness 的生态系统,为自动化模糊测试提供了强大的支持。