CN112506801A - 一种基于注解的模糊测试方法 - Google Patents
一种基于注解的模糊测试方法 Download PDFInfo
- 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
Links
- 238000010998 test method Methods 0.000 title description 4
- 238000012360 testing method Methods 0.000 claims abstract description 37
- 230000008713 feedback mechanism Effects 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims abstract description 5
- 235000000332 black box Nutrition 0.000 claims description 3
- 230000006399 behavior Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program 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变成一个通用的基于爬山的黑盒优化器。
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116414722B (zh) * | 2023-06-07 | 2023-10-20 | 清华大学 | 模糊测试处理方法、装置、模糊测试系统及存储介质 |
Family Cites Families (3)
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 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种基于注解的模糊测试方法 |
-
2020
- 2020-12-24 CN CN202011547538.6A patent/CN112506801A/zh active Pending
-
2021
- 2021-11-19 WO PCT/CN2021/131794 patent/WO2022134975A1/zh active Application Filing
Cited By (5)
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 |