当前位置: 首页 > 软件库 > 开发工具 > 测试工具 >

AutoHarness

基于库自动创建模糊测试的工具
授权协议 MIT
开发语言 Python
所属分类 开发工具、 测试工具
软件类型 开源软件
地区 不详
投 递 者 艾俊晖
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

AutoHarness 是一种自动为您生成模糊测试的工具。这个想法源于当今模糊代码库中的一个并发问题:大型代码库具有数以千计的函数和代码片段,可以相当深地嵌入到库中。智能模糊器很难甚至有时甚至不可能到达该代码路径。即使对于像 oss-fuzz 这样的大型模糊测试项目,仍然有部分代码库没有包含在模糊测试中。因此,该程序试图以某种方式缓解这个问题,并提供一种工具,安全研究人员可以使用它来初步测试代码库。该程序仅支持用 C 和 C++ 编码的代码库。

设置

该程序使用 llvm 和 clang 作为 libfuzzer,Codeql 用于查找函数,以及 python 作为通用程序。该程序在 Ubuntu 20.04 上使用 llvm 12 和 python 3 进行了测试。这是初始设置。

sudo apt-get update;
sudo apt-get install python3 python3-pip llvm-12* clang-12 git;
pip3 install pandas lief subprocess os argparse ast;

计划功能(按进度排序)

结构模糊测试

当前在程序中实现的对具有多个参数的函数进行模糊测试的方法是使用模糊数据提供程序。这种集成有一些改进;但是,我相信我可以将此功能与数据结构结合起来。我在编码时遇到的一个问题是 codeql 和嵌套结构。如果不编写针对每个函数而变化的多个查询,这会变得特别困难。总之,这个功能需要更多的工作。我也在考虑使用 protobufs 的简单解决方案。

基于实现的线束创建

使用 codeql,可以用来生成控制流图,映射函数中的参数是如何初始化的。使用这些信息,我们可以创建更好的线束。另一种方法是查找库中存在的函数的实现,并使用该信息对该函数作为线束的实现进行有根据的猜测。我目前遇到的问题是使用 codeql 生成控制流图。

并行模糊测试/误报检测

我可以创建一个简单的程序来运行所有的线束并使用 ASAN 检测任何常见的误报。此外,我可以创建一个新界面,一次运行所有线束并显示它们的统计数据。

 

 相关资料
  • 这一章将会演示教你如何写一个属于自己的Fuzz测试脚本,当我们进行exploit研究和开发的时候就可以使用脚本语言发送大量的测试数据给受害者机器,但是这个错误数据很容易引发应用程序崩溃掉。而Python却不同,当程序崩溃之后,此时你的程序会暂时断开连接,随后会立即创建一个新的连接继续执行。 下面我们首先要解决的问题是应用程序如何处理用户输入的内容,因为在进行模糊测试的时候,我们会不定时的想到一些新

  • 问题内容: 我有一个Django应用,该应用需要以下形式的属性: 然后钩住它们的post_save信号,以根据attributeN定义更新其他固定模型。 我想测试这种行为,即使该应用程序是项目中的唯一应用程序,测试也应该可以进行(除了它自己的依赖项之外,不需要安装其他包装器应用程序)。如何仅为测试数据库创建和附加/注册/激活模拟模型?(或者有可能吗?) 允许我使用测试治具的解决方案会很棒。 问题答

  • 考虑一个maven实用工具模块(模块1),它定义了一个抽象类:AbstractFoo.java。在测试资源下,编写了所述类的模型:foomockup.java。还编写了一个测试类:AbstractFootest.java。 现在考虑第二个模块(模块2),它包含一个使用AbstractFoo的类,并声明测试用例:bar.java和bartest.java。java在创建Bar实例的同时创建FooMo

  • WebUI automation testing framework based on Selenium 介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比selenium提供的方法操作更简洁。 起因:   python + selenium 自动化测试写久了发现selenium(webdriver)提供原生的方法并简便,于是,产生了二次封装的想法。想不到太炫酷的名

  • 问题内容: 我使用ncurses for UI挑选了在Linux上用C / C ++开发的遗留应用程序。在这种环境下有哪些自动测试工具? 编辑: 过去我使用过AutomatedQA TestComplete,这是我正在寻找的工具类型-除了在Linux上运行之外,并且能够测试Text UI应用程序。 问题答案: 我已经考虑过使用Rational Function Tester和TestComplet

  • 问题内容: 我有以下实体类(在Groovy中): 和我的persistence.xml: 和脚本: 数据库 Icarus 存在,但当前没有表。我希望Hibernate基于实体类自动创建和/或更新表。我将如何完成? 问题答案: 我不知道离开前线是否会有所作为。 该参考表明,它应该是 值为将会在创建sessionFactory时创建您的表,并保持它们不变。 值为会创建您的表,然后在关闭sessionF

  • 您好,我尝试在测试前创建数据库schem,但它失败了:/这是我的脚本: 并且当我尝试使用squirell和嵌入式Derby运行该脚本时,它起作用了。 首先,我尝试在类测试之前使用注释@createSchema(“scripts/import.sql”): 接下来尝试使用@applyscriptbefore 第二次我尝试使用脚本: property name=“ScriptStoExecuteBef

  • 虽然应用程序启动良好,到目前为止没有检测到功能丢失,但由于多个(主要是重复的)错误,测试无法运行,例如: [..] com类型的依赖项不明确。fasterxml。杰克逊。数据绑定。ObjectMapper和限定符[@Named(value=“objMapper”)]-java成员:com。项目。存储库。MyDao#()-在类bean[types=[com.proj.repository.MyEla