探索未知,Hopper:自动API模糊测试的利器

Hopper Hopper is a tool for generating fuzzing test cases for libraries automatically using interpretative fuzzing. 项目地址: https://gitcode.com/gh_mirrors/ho/Hopper

在软件安全领域,漏洞检测是一项至关重要的任务,而模糊测试(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等待着您的探索和贡献,让我们的代码更加健壮和安全!

Hopper Hopper is a tool for generating fuzzing test cases for libraries automatically using interpretative fuzzing. 项目地址: https://gitcode.com/gh_mirrors/ho/Hopper

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐