探索未知,Hopper:自动API模糊测试的利器
在软件安全领域,漏洞检测是一项至关重要的任务,而模糊测试(Fuzz Testing)是其中的一种有效手段。今天,我们向您推荐一款名为Hopper的开源工具,它以独特的解释性模糊测试策略,帮助开发者自动为库生成模糊测试用例,极大地拓宽了API的探索范围。
项目简介
Hopper是一个基于解释性模糊测试的库模糊测试工具,无需编写特定的驱动程序,即可自动调用API并生成测试输入。它的创新之处在于将库模糊测试转化为解释器模糊测试的问题,从而能够无缝地探索广泛的API使用场景。Hopper支持类型感知的参数变异,自动学习内部和外部API约束,并具备二进制代码插装功能。
技术分析
Hopper的核心技术包括:
- 解释性API调用:无需额外的模糊驱动即可调用API。
- 类型感知变异:智能处理参数变异,确保变异后的参数符合预期类型。
- 自动约束学习:内建算法可以学习API间的相互关系和限制,保证调用的正确性。
- 二进制插装支持:可利用E9Patch或LLVM进行源码级别的代码插装,对目标库进行动态监控。
应用场景
Hopper适用于任何需要深度测试的C或C++库,特别适合于:
- 对于复杂的库接口,手动编写测试用例困难或耗时的场景。
- 需要进行安全性评估,发现潜在漏洞的软件开发阶段。
- 持续集成环境中,用于自动化测试库的兼容性和稳定性。
项目特点
- 易用性:Hopper提供了简单的命令行界面,只需几步操作就能编译和模糊测试目标库。
- 智能化:通过自动学习API约束,减少了无效测试用例的生成。
- 灵活性:支持不同的插装策略(如E9Patch和LLVM),适应不同的测试需求。
- 可扩展性:允许自定义规则以覆盖特定的函数或类型,以及自定义约束,增强了测试的针对性。
要开始使用Hopper,您可以参考提供的文档和示例,例如针对csjon
库的示例,只需几条命令即可完成编译和模糊测试。
不要忘记,Hopper还在持续发展之中,其研究论文在CCS '23上发表,更多更新和改进正在进行中。加入Hopper的社区,让我们共同推动软件安全的进步!
# 克隆项目
git clone https://github.com/HopperProject/Hopper.git
# 进入项目目录
cd Hopper
# 根据readme安装和构建
./build.sh
# 开始你的模糊测试之旅
hopper compile --header ./your_header.h --library ./your_library.so --output output
hopper fuzz output --func-pattern your_function_pattern
准备好踏上无尽的API探索之旅了吗?Hopper等待着您的探索和贡献,让我们的代码更加健壮和安全!