CN112506801A - 一种基于注解的模糊测试方法 - Google Patents

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

Info

Publication number
CN112506801A
CN112506801A CN202011547538.6A CN202011547538A CN112506801A CN 112506801 A CN112506801 A CN 112506801A CN 202011547538 A CN202011547538 A CN 202011547538A CN 112506801 A CN112506801 A CN 112506801A
Authority
CN
China
Prior art keywords
code
annotation
state
test
fuzzer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011547538.6A
Other languages
English (en)
Inventor
王庆贺
刘元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongke Information Security Common Technology National Engineering Research Center Co ltd
Original Assignee
Zhongke Information Security Common Technology National Engineering Research Center Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongke Information Security Common Technology National Engineering Research Center Co ltd filed Critical Zhongke Information Security Common Technology National Engineering Research Center Co ltd
Priority to CN202011547538.6A priority Critical patent/CN112506801A/zh
Publication of CN112506801A publication Critical patent/CN112506801A/zh
Priority to PCT/CN2021/131794 priority patent/WO2022134975A1/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Debugging And Monitoring (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

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

Description

一种基于注解的模糊测试方法
技术领域
本发明涉及信息安全技术领域,具体涉及一种基于注解的模糊测试方法。
背景技术
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、基于注解,能够有效解决大量之前无法解决的难题,强化了模糊测试的效率和可用性。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

Claims (3)

1.一种基于注解的模糊测试方法,其特征在于:模糊测试方法包括:
利用fuzzer识别用当前技术很难进行模糊测试的有问题的代码结构;
根据识别的代码结构,模糊测试器根据识别的代码结构提供反馈机制;
根据反馈机制对代码添加注解;
执行测试输入,fuzzer检查共享位图和共享内存是否有新的覆盖并更新调度测试策略。
2.如权利要求1所述的一种基于注解的模糊测试方法,其特征在于:所述有问题的代码结构主要包括:
已知的相关状态值,如果只有一小部分状态是有意义且能够识别值,直接使用所述相关状态值来指导模糊测试;
已知状态变化,根据历史状态变化作为更复杂状态的抽象以指导模糊状态;
缺少中间状态,既没有包含状态的变量也没有改变状态的代码时用以指导模糊测试。
3.如权利要求1所述的一种基于注解的模糊测试方法,其特征在于:所述注解包括:
IJON-ENABLE,该注解来启用和禁用覆盖反馈,可以有效地排除代码库的某些部分,或者引导fuzzer只在满足特定条件的情况下探索代码;
IJON-INC和IJON-SET,上述两个注解可用于递增或设置位图中的特定条目,使得状态中的新值等同于新的代码覆盖率;
IJON-STATE,该注解能够改变边覆盖本身的计算,每当虚拟状态改变时,任何边都会触发新的覆盖;
IJON-MAX,该注解将fuzzer变成一个通用的基于爬山的黑盒优化器。
CN202011547538.6A 2020-12-24 2020-12-24 一种基于注解的模糊测试方法 Pending CN112506801A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011547538.6A CN112506801A (zh) 2020-12-24 2020-12-24 一种基于注解的模糊测试方法
PCT/CN2021/131794 WO2022134975A1 (zh) 2020-12-24 2021-11-19 一种基于注解的模糊测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011547538.6A CN112506801A (zh) 2020-12-24 2020-12-24 一种基于注解的模糊测试方法

Publications (1)

Publication Number Publication Date
CN112506801A true CN112506801A (zh) 2021-03-16

Family

ID=74923253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011547538.6A Pending CN112506801A (zh) 2020-12-24 2020-12-24 一种基于注解的模糊测试方法

Country Status (2)

Country Link
CN (1) CN112506801A (zh)
WO (1) WO2022134975A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114328173A (zh) * 2021-10-27 2022-04-12 清华大学 软件模糊测试方法和装置、电子设备及存储介质
WO2022134975A1 (zh) * 2020-12-24 2022-06-30 中科信息安全共性技术国家工程研究中心有限公司 一种基于注解的模糊测试方法
CN116594884A (zh) * 2023-05-16 2023-08-15 上海安般信息科技有限公司 一种基于使用并发方式的模糊测试方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116414722B (zh) * 2023-06-07 2023-10-20 清华大学 模糊测试处理方法、装置、模糊测试系统及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6536036B1 (en) * 1998-08-20 2003-03-18 International Business Machines Corporation Method and apparatus for managing code test coverage data
CN110795739A (zh) * 2019-09-25 2020-02-14 苏州浪潮智能科技有限公司 一种基于动态调试的缓冲区漏洞检查系统和方法
CN112506801A (zh) * 2020-12-24 2021-03-16 中科信息安全共性技术国家工程研究中心有限公司 一种基于注解的模糊测试方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022134975A1 (zh) * 2020-12-24 2022-06-30 中科信息安全共性技术国家工程研究中心有限公司 一种基于注解的模糊测试方法
CN114328173A (zh) * 2021-10-27 2022-04-12 清华大学 软件模糊测试方法和装置、电子设备及存储介质
CN114328173B (zh) * 2021-10-27 2022-08-05 清华大学 软件模糊测试方法和装置、电子设备及存储介质
CN116594884A (zh) * 2023-05-16 2023-08-15 上海安般信息科技有限公司 一种基于使用并发方式的模糊测试方法及装置
CN116594884B (zh) * 2023-05-16 2023-10-27 上海安般信息科技有限公司 一种基于使用并发方式的模糊测试方法及装置

Also Published As

Publication number Publication date
WO2022134975A1 (zh) 2022-06-30

Similar Documents

Publication Publication Date Title
CN112506801A (zh) 一种基于注解的模糊测试方法
Le Goues et al. Current challenges in automatic software repair
Bodden et al. Clara: A framework for partially evaluating finite-state runtime monitors ahead of time
Seo et al. Programmers' build errors: a case study (at google)
CN111859388B (zh) 一种多层次混合的漏洞自动挖掘方法
Bodden Efficient hybrid typestate analysis by determining continuation-equivalent states
Moghadam et al. Automated refactoring using design differencing
CN109308415B (zh) 一种面向二进制的导向性模糊测试方法与系统
JP2015084251A (ja) ソフトウェア・アプリケーションの性能向上
CN109635568B (zh) 一种基于静态分析和模糊测试相结合的并发漏洞检测方法
Vishnyakov et al. Sydr: Cutting edge dynamic symbolic execution
US8065565B2 (en) Statistical debugging using paths and adaptive profiling
Sato et al. On-the-fly detection of precise loop nests across procedures on a dynamic binary translation system
Dong et al. Concurrency-related flaky test detection in android apps
Ko et al. Fuzzing with automatically controlled interleavings to detect concurrency bugs
CN105550575B (zh) 一种未导出的函数地址和数据结构偏移的获取方法及装置
Madiraju et al. Paraµ--A Partial and Higher-Order Mutation Tool with Concurrency Operators
Yi et al. Explaining software failures by cascade fault localization
Jalbert et al. Using clone detection to identify bugs in concurrent software
CN114546836A (zh) 基于下推自动机引导的公共组件库自动化测试方法及装置
Duraibi et al. A Survey of Symbolic Execution Tools.
Lim et al. Automatically localizing dynamic code generation bugs in jit compiler back-end
Yavuz Sift: A tool for property directed symbolic execution of multithreaded software
Nakagawa et al. How compact will my system be? A fully-automated way to calculate Loc reduced by clone refactoring
Subbotin et al. Technique of verified program module modification with algorithm preservation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210316