首页> 中国专利> 一种基于注解的模糊测试方法

一种基于注解的模糊测试方法

摘要

一种基于注解的模糊测试方法包括利用fuzzer识别用当前技术很难进行模糊测试的有问题的代码结构;根据识别的代码结构,模糊测试器根据识别的代码结构提供反馈机制;根据反馈机制对代码添加注解;执行测试输入,fuzzer检查共享位图和共享内存是否有新的覆盖并更新调度测试策略。与现有技术相比,本发明提出的技术方案能够解决其他基于模糊测试或符号执行的工具无法克服的问题,使得模糊测试更加灵活,更有效率,并通过解决大量实际难题,增强了模糊测试的实用性。

著录项

  • 公开/公告号CN112506801A

    专利类型发明专利

  • 公开/公告日2021-03-16

    原文格式PDF

  • 申请/专利号CN202011547538.6

  • 发明设计人 王庆贺;刘元;

    申请日2020-12-24

  • 分类号G06F11/36(20060101);G06F8/73(20180101);

  • 代理机构

  • 代理人

  • 地址 100080 北京市海淀区中关村大街19号新中关大厦B座北翼16层

  • 入库时间 2023-06-19 10:16:30

说明书

技术领域

本发明涉及信息安全技术领域,具体涉及一种基于注解的模糊测试方法。

背景技术

AFL则是fuzzing的一个很好用的工具,全称是American Fuzzy Lop,由Google安全工程师Michał Zalewski开发的一款开源fuzzing测试工具,可以高效地对二进制程序进行fuzzing,挖掘可能存在的内存安全漏洞,如栈溢出、堆溢出、UAF、double free等。由于需要在相关代码处插桩,因此AFL主要用于对开源软件进行测试。当然配合QEMU等工具,也可对闭源二进制代码进行fuzzing,但执行效率会受到影响。

AFL族的fuzzer通常试图从程序的状态空间中找到一个触发大量不同状态的语料库。在这里,状态表示内存和寄存器的一种配置,以及OS提供的状态(例如,文件描述符和类似的原语)。状态空间是一个程序可能处于的所有状态的集合。因为即使对于微不足道的小程序,状态空间也比宇宙中的原子数量多,所以模糊测试必须优化测试用例所达到的状态多样性。这类模糊测试通常使用代码覆盖率来确定输入是否达到了与语料库中存在的状态完全不同的状态。但该单一的模糊测试技术在实践中存在的无法克服的局限性。

发明内容

本发明的目的针对现有技术存在的缺陷,提出了一种基于注解的模糊测试方法,方法可以根据程序内部状态的数据表征对程序的行为进行更系统的探索,使得用户只需使用很小的注解,比如一行注解,就可以帮助模糊测试器解决以前无法解决的挑战。

一种基于注解的模糊测试方法包括:

利用fuzzer识别用当前技术很难进行模糊测试的有问题的代码结构;

根据识别的代码结构,模糊测试器根据识别的代码结构提供反馈机制;

根据反馈机制对代码添加注解;

执行测试输入,fuzzer检查共享位图和共享内存是否有新的覆盖并更新调度测试策略。

优选的,所述有问题的代码结构主要包括:

已知的相关状态值,如果只有一小部分状态是有意义且能够识别值,直接使用所述相关状态值来指导模糊测试;

已知状态变化,根据历史状态变化作为更复杂状态的抽象以指导模糊状态;

缺少中间状态,既没有包含状态的变量也没有改变状态的代码时用以指导模糊测试。

优选的,所述注解包括:

IJON-ENABLE,该注解来启用和禁用覆盖反馈,可以有效地排除代码库的某些部分,或者引导fuzzer只在满足特定条件的情况下探索代码;

IJON-INC和IJON-SET,上述两个注解可用于递增或设置位图中的特定条目,使得状态中的新值等同于新的代码覆盖率;

IJON-STATE,该注解能够改变边覆盖本身的计算,每当虚拟状态改变时,任何边都会触发新的覆盖;

IJON-MAX,该注解将fuzzer变成一个通用的基于爬山的黑盒优化器。

与现有技术相比,本发明提出的技术方案能够解决其他基于模糊测试或符号执行的工具无法克服的问题,使得模糊测试更加灵活,更有效率,并通过解决大量实际难题,增强了模糊测试的实用性。

具体实施方式

下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

一种基于注解的模糊测试方法包括:

利用fuzzer识别用当前技术很难进行模糊测试的有问题的代码结构;

根据识别的代码结构,模糊测试器根据识别的代码结构提供反馈机制;

根据反馈机制对代码添加注解;

执行测试输入,fuzzer检查共享位图和共享内存是否有新的覆盖并更新调度测试策略。

优选的,所述有问题的代码结构主要包括:

已知的相关状态值,如果只有一小部分状态是有意义且能够识别值,直接使用所述相关状态值来指导模糊测试;

已知状态变化,根据历史状态变化作为更复杂状态的抽象以指导模糊状态;

缺少中间状态,既没有包含状态的变量也没有改变状态的代码时用以指导模糊测试。

优选的,所述注解包括:

IJON-ENABLE,该注解来启用和禁用覆盖反馈,可以有效地排除代码库的某些部分,或者引导fuzzer只在满足特定条件的情况下探索代码;

IJON-INC和IJON-SET,上述两个注解可用于递增或设置位图中的特定条目,使得状态中的新值等同于新的代码覆盖率;

IJON-STATE,该注解能够改变边覆盖本身的计算,每当虚拟状态改变时,任何边都会触发新的覆盖;

IJON-MAX,该注解将fuzzer变成一个通用的基于爬山的黑盒优化器。

本发明构建了一种注解机制IJON,通过它来指导模糊测试。这种简单的注解具有以下特点:1、通过分析引导,用户只需添加很小的注解(通常是一行注解),提高了测试工作的灵活性;2、基于注解,能够有效解决大量之前无法解决的难题,强化了模糊测试的效率和可用性。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号