CN112631901B - 基于妨碍特征的模糊测试工具测试方法及电子装置 - Google Patents

基于妨碍特征的模糊测试工具测试方法及电子装置 Download PDF

Info

Publication number
CN112631901B
CN112631901B CN202011486603.9A CN202011486603A CN112631901B CN 112631901 B CN112631901 B CN 112631901B CN 202011486603 A CN202011486603 A CN 202011486603A CN 112631901 B CN112631901 B CN 112631901B
Authority
CN
China
Prior art keywords
vulnerability
fuzzy test
program
file
variable
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.)
Active
Application number
CN202011486603.9A
Other languages
English (en)
Other versions
CN112631901A (zh
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.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
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 Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN202011486603.9A priority Critical patent/CN112631901B/zh
Publication of CN112631901A publication Critical patent/CN112631901A/zh
Application granted granted Critical
Publication of CN112631901B publication Critical patent/CN112631901B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于妨碍特征的模糊测试工具测试方法及电子装置,包括:获取输入数据长度与漏洞相关字节数,生成条件分支语句与噪声路径,得到若干包含漏洞触发条件妨碍特征的配置文件;利用条件分支语句组成程序执行路径,将漏洞函数插入到程序执行路径中生成结构文件,并将优化辅助妨碍特征添加到结构文件中;根据配置文件生成源代码片段来定义程序变量,根据结构文件生成相应的漏洞触发路径源码片段,并植入到模板文件中,生成若干目标程序;依据各目标程序对待测模糊测试工具的测试结果,推断待测模糊测试工具的能力。本发明可标注目标程序包含的妨碍特征,获取各妨碍特征对被测工具的影响程度,提高模糊测试工具测评的可解释性。

Description

基于妨碍特征的模糊测试工具测试方法及电子装置
技术领域
本发明涉及软件测试与评估的领域,具体针对模糊测试工具的测评,提出并实现了一种基于妨碍特征的模糊测试工具测试方法及电子装置。
背景技术
模糊测试(fuzz testing)是当前主流的软件漏洞挖掘技术之一,其基本原理是通过产生大量半有效的输入数据来尝试触发目标程序的异常,借此发现目标程序的漏洞。鉴于模糊测试在软件漏洞挖掘领域的突出表现,近年来,针对模糊测试的技术优化及改进层出不穷,催生了大量模糊测试工具,这些工具在技术特点和性能方面存在明显差异,需要通过测试以评估其效能,从而为工具的选用与改进提供指导。
现有的模糊测试工具测评方法通常会令待测工具对测评基准(benchmark)中的目标程序执行模糊测试,然后统计分析漏洞触发个数、代码覆盖率等结果数据,进而对工具的效能进行评判,其中,测评基准通常是一套由目标程序及其标注信息构成的测试集。
但是,现有模糊测试工具测评所用的测试集均未标注目标程序所包含的模糊测试妨碍特征(简称妨碍特征),即目标程序中包含的可能妨碍模糊测试策略、算法或辅助技术发挥其应有功效的特征,使得对测评结果数据进行分析的时不得不把目标程序看作黑盒。这会导致目标程序中包含的妨碍特征成为影响测评结果的未知变量,导致一些情况下无法对测评结果做出解释。
例如,图1B将图1A条件约束中的魔数(magic value)检查替换为循环冗余校验(Cyclic redundancy check,CRC),但上述修改不影响bug函数的触发条件,其余代码也保持不变。使用模糊测试工具AFL和QSYM对这两个程序进行模糊测试,结果表明,对于图1A,QSYM的漏洞触发效率明显优于AFL(在具体实验中,两者触发bug函数的时间开销分别为1325秒和80秒),而对于图1B,AFL和QSYM的漏洞触发效率基本持平(在具体实验中,两者触发bug函数的时间开销均为1300秒左右)。若将图1A和图1B两段代码的视为黑盒,只关注模糊测试结果,则无法对QSYM的效能波动做出解释,反之,若已知代码具体差异,根据测评结果数据则可以推导出QSYM实现的技术改进确实有助于模糊测试突破条件约束,但该技术对于包含循环冗余校验的条件约束无效。
可见,知晓目标程序的模糊测试妨碍特征有助于判断工具的具体能力,更准确地验证工具的技术优势与瓶颈。
中国专利申请CN110995770A公开了一种模糊测试应用效果对比方法,采用多维度协同参与,应用hash表结构与统计算法,实现不同模糊测试方法的测试效果对比。该方法针对工控与物联网设备,改进了模糊测试对这些目标的应用效果计算维度,相对于传统基于独特crash触发数量、代码覆盖率等指标,能够更加全面地评估模糊测试的效果。但上述方法仍然未能解决现有测评方法可解释性差的问题,即无法测评结果数据背后的原因,无法推测被测工具的具体能力。同时,上述方法需要获得各通讯协议分别所对应的协议逻辑模型以及各协议逻辑模型中的要素,测试集的构建无法做到自动化。
发明内容
为了克服现有测试集因缺乏妨碍特征标注信息而导致的测评可解释性差的问题,本发明提供一种基于妨碍特征的模糊测试工具测试方法及电子装置,构建具有妨碍特征标注信息的测试集,使模糊测试工具测评能够将妨碍特征纳为控制变量,实现对妨碍特征的标注,提升测评的可解释性,进而为模糊测试工具的使用或改进提供更详细的指导信息。
本发明的技术内容包括:
一种基于妨碍特征的模糊测试工具测试方法,其步骤包括:
1)获取输入数据长度与漏洞相关字节数,依据生成的漏洞相关变量生成条件分支语句,依据生成的漏洞无关变量生成噪声路径,得到若干包含漏洞触发条件妨碍特征的配置文件,其中各漏洞相关变量所占用的字节在输入数据中的起始偏移是随机的且每个字节仅被一个漏洞相关变量使用一次;
2)利用条件分支语句组成程序执行路径,将漏洞函数插入到程序执行路径中生成结构文件,并将优化辅助妨碍特征添加到结构文件中,生成若干包含不同优化辅助妨碍特征组合的结构文件;
3)根据各配置文件生成相应的源代码片段来定义程序变量,根据包含不同优化辅助妨碍特征组合的结构文件生成相应的漏洞触发路径源码片段,并将源代码片段与漏洞触发路径源码片段植入到模板文件中,生成若干目标程序,其中模板文件包括:对各相关函数及全局变量的定义和标记代码植入点;
4)依据各目标程序对待测模糊测试工具的测试结果,推断待测模糊测试工具的能力。
进一步地,获取输入数据长度与漏洞相关字节数之前,基于漏洞触发相关变量的变量名、漏洞触发无关变量的变量名、数据类型及漏洞触发相关变量或漏洞触发无关变量在输入数据中所占的字节,生成条件约束,并回写到配置文件里。
进一步地,漏洞相关变量的变量类型包括:char、int和char数组。
进一步地,通过对各漏洞相关字节的值与部分漏洞无关字节的值进行分配,得到漏洞相关变量;依据其余漏洞无关字节生成漏洞无关变量。
进一步地,所述漏洞触发条件妨碍特征包括:漏洞触发取值个数比和输入数据长度。
进一步地,所述优化辅助妨碍特征包括:噪声路径、符号执行妨碍特征和污点分析妨碍特征。
进一步地,符号执行妨碍特征包括:循环冗余校验和高斯函数。
进一步地,污点分析妨碍特征包括:隐式数据流。
进一步地,相关函数包括:主函数、通用功能函数和漏洞函数。
进一步地,通过以下步骤得到测试结果:
1)生成漏洞概念验证文件与模糊测试妨碍特征标注文件,并为每一个目标程序生成种子文件;
2)当待测模糊测试工具在超时时限内触发程序崩溃,则记录函数调用栈,并对比以漏洞概念验证文件为输入所触发的程序崩溃的函数调用栈;若两个函数调用栈相同,则停止模糊测试并记录待测模糊测试工具已进行的种子变异次数与模糊测试运行时间;
3)当待测模糊测试工具在超时时限内未触发程序崩溃,则进行超时标记;
4)依据种子变异次数、模糊测试运行时间、模糊测试妨碍特征标注文件与超时标记,计算漏洞触发条件妨碍特征与优化辅助妨碍特征对待测模糊测试工具漏洞发现效率的影响程度,得到测试结果。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述所述的方法。
一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机以执行上述所述的方法。
与现有技术相比,本发明的有益效果是:
可用于构造针对模糊测试工具测评的漏洞测试集,标注目标程序包含的妨碍特征,令测评实现对妨碍特征的变量控制,获取各妨碍特征对被测工具的影响程度,从而解释被测工具对各妨碍特征的处理能力,提高模糊测试工具测评的可解释性。
附图说明
图1A漏洞示例代码片段图。
图1B为与图1A的漏洞触发条件完全相同,但条件语句的逻辑表达式中包含循环冗余校验的示例代码图。
图2用于展示模糊测试妨碍特征中的“输入数据长度”、“漏洞取值个数比”的示例代码图。
图3循环冗余校验实现代码图。
图4A一维高斯函数实现代码图。
图4B一维高斯函数应用于分支条件语句的示例图。
图5隐式数据流实现代码图。
图6代码生成脚本工作流程图。
图7配置文件、结构文件以及生成的源码示例图。
图8 hardness文件示例图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术核心作进一步详细的说明。
本发明的模糊测试工具测试方法,在具体技术实现上,主要包含以下两方面内容。
(1)本发明从漏洞触发条件、模糊测试优化辅助技术对抗两个角度归纳了5种模糊测试妨碍特征,并设计了它们在C语言上的实现。
漏洞触发条件通常要求输入数据的特定字节取特定值,本发明将其称为输入数据的漏洞触发取值。模糊测试可以视为从输入空间中搜索漏洞触发取值点的过程,直观地,输入空间大小以及漏洞触发取值个数影响着搜索的难度。综上,从影响漏洞触发条件的角度,本发明归纳了以下两个妨碍特征。
·漏洞触发取值个数比(N/NV):即输入空间包含的值的总数与空间中漏洞触发取值点的个数之比。假设模糊测试对种子的变异是完全随机且独立的,且每次变异成输入空间中任意一点的概率相同,则N/NV可代表漏洞触发时模糊测试已执行的变异次数的期望值,值越大说明模糊测试触发漏洞的难度越大。漏洞触发取值个数NV由漏洞触发路径上的条件约束决定,设num(bytei,cond)表示当输入数据满足条件约束cond时,第i个字节所有可能取值的个数,所有满足cond的输入数据取值个数则为其中L为输入数据长度。例如图2所示代码中,VAR1需要等于0xab来满足第26行的条件约束,VAR2需要等于0xcd来满足第27行的条件约束,输入数据的其余6个字节则可取任意值,因此第28行漏洞的漏洞触发取值个数NV为248
·输入数据长度(L):即目标程序读取的输入数据所包含的字节数。输入数据可分为漏洞相关字节和漏洞无关字节,前者的取值决定了漏洞能否被触发,后者则无论取何值都无关乎漏洞的触发。输入数据长度L通过read函数实现,如图2第20行代码,该函数的第3个参数决定了程序读入的字节长度。输入数据长度除了能够决定输入空间N的大小,例如图2的N值为264。此外,在N/NV相同的情况下,输入数据长度越长,模糊测试定位漏洞相关字节难度越高,从而影响漏洞触发效率。
模糊测试的优化或辅助增强技术,如代码覆盖反馈、符号执行、污点分析等,可能存在缺陷,目标程序的某些特征会使这些技术失效。因此,从模糊测试优化辅助技术对抗这个角度,本发明归纳了针对代码覆盖反馈、符号执行、污点分析的妨碍特征。
·噪声路径(NOI):与漏洞触发无关的程序路径是噪声路径,例如图2第26至28行代码属于漏洞路径,而第29至34行代码属于噪声路径。本发明利用漏洞无关字节构造噪声路径,用于对抗模糊测试的代码覆盖反馈指导技术。
·符号执行妨碍特征(SH):符号执行技术难以分析、求解的程序语句,例如浮点运算、哈希函数等,能够妨碍模糊测试利用符号执行技术指导种子变异来突破目标程序里的条件约束。本发明设计了两种符号执行妨碍特征的实现方法。第一种方法利用循环冗余校验实现,定义了一个能够计算任意长度字节数组CRC校验和的函数(如图3),然后利用该函数将条件约束逻辑表达式中的常量、变量替换为它们的CRC校验和(如图1B),从而引入符号执行妨碍特征。第二种方法利用一维高斯函数实现。假设目标程序的漏洞相关变量VAR满足VAR∈(lower,upper)时触发漏洞,若要生成这样的目标程序,则令f(lower)=1,b=(lower+upper)/2,c=lower-b,并求解出参数a的值,然后将参数a、b、c代入f(x)得到一维高斯函数,如图4A所示。通过上述方法得到的高斯函数,当x∈(lower,upper)时f(x)≥1,否则0<f(x)<1,此时构造如图4B所示代码,可知当且仅当输入变量VAR∈(lower,upper)时满足函数值大于等于1的条件约束,从而触发漏洞。利用高斯函数可以任意控制输入数据的漏洞触发取值,且其参数求解过程包含大量浮点运算,能够有效妨碍符号执行技术生效。
·污点分析妨碍特征(TH):目标程序中,污点分析难以准确追踪的数据流。本发明采用隐式数据流来实现污点分析妨碍特征。如图5,输入变量var的值通过影响程序控制流来间接地影响ch的值,进而影响数组cc,即变量var通过隐式数据流将自身的值传递到了数组cc中。
(2)本发明设计并实现了一种目标程序生成方法,其工作流程如图6所示,具体如下:
·生成配置文件。配置文件中定义了漏洞触发相关/无关变量的变量名、数据类型以及变量在输入数据中所占的字节,然后基于这些变量生成条件约束并回写到配置文件里。根据读取的输入数据长度和漏洞相关字节数,脚本会生成多个配置文件。设输入数据长度为L,漏洞相关字节数为S,脚本将S个漏洞相关字节的值分配到不同的漏洞相关变量中,变量类型包括char、int、char数组,char类型占用1个漏洞相关字节,int类型占用4个连续的漏洞相关字节,char数组则占用2n(n>2)个连续的漏洞相关字节,这些变量所占用的字节在输入数据中的起始偏移是随机的,且每个字节仅会被一个变量使用一次,同时脚本利用其余的漏洞无关字节以类似的方法生成漏洞无关变量。进一步,脚本利用这些漏洞相关变量生成条件分支语句,利用漏洞无关变量生成噪声路径。其中,条件分支语句用来控制漏洞触发条件,进而生成具有不同漏洞触发取值个数比的目标程序,可进行自定义。配置文件的构成详见表1。
表1
·生成结构文件。脚本利用配置文件中定义的条件语句组成程序执行路径,并将漏洞函数插入到程序执行路径中,生成结构文件。脚本会依次按照结构文件中的标签生成源代码片段,如图7所示,其中“@BUG@”是漏洞函数标签,“@ELSE@”标签代表if条件语句的else部分。此外,$NOISE$(噪声路径)、$CRC$(循环冗余校验)、$gaussian$(高斯函数)、$IDF$(隐式数据流)等妨碍特征标记也可添加到@CONDITION@语句后,生成包含这些妨碍特征的目标程序。
·生成目标程序。脚本根据配置文件生成源代码片段来定义程序变量,再根据结构文件生成包含妨碍特征的漏洞触发路径源码片段,然后将其植入到模板文件中,生成可编译可执行的目标程序。模板文件包含对主函数、通用功能函数(详见表2)、全局变量、漏洞函数等的定义,并标记了代码植入点(详见表3)。此外,脚本会自动生成漏洞PoC(Proof ofConcept,概念验证)文件“poc”,以及模糊测试妨碍特征标注文件“hardness”(如图8),其中,BUG_TRIGGERING_SPACE是输入数据的漏洞触发取值个数。生成的目标程序采用一定的规则进行命名,例如目标程序名IS8_TS4_TV4__1-CRC中,IS8代码输入数据长度为8个字节,TS4代表漏洞相关字节数为4,TV4代表漏洞相关变量数为4,CRC代表该目标程序包含循环冗余校验,此外,IDF代表包含隐式数据流,NOISE代表包含噪声路径。
表2
标记 说明
@INPUT_SIZE@ 替换为输入数据字节数
@VARDEFS@ 替换为变量定义语句
@INSERTION@ 替换为结构文件生成的代码片段
表3
下述为本发明的一具体实施方式:
1、在github上获取代码,其访问地址是https://github.com/zeqiii/Bench4I
2、运行python gen_config_rand.py INPUT_SIZE TAINTED_SIZE生成配置文件,其中,INPUT_SIZE为输入数据长度,TAINTED_SIZE为漏洞相关字节个数。
3、运行python gen.py-c CONFIG生成原始目标程序(仅包含输入数据长度和漏洞触发取值个数比两类妨碍特征),其中CONFIG为配置文件的路径。
4、运行python3 gen.py-g FEATURE-t TARGET_DIR向路径为TARGET的目标程序添加妨碍特征FEATURE,例如执行python3 gen.py-g crc-t testcases将向testcases下的所有目标程序添加循环冗余校验妨碍特征。
5、运行python gen_seeds.py TARGET_DIR为TARGET_DIR中的每一个目标程序生成种子文件并存放在seeds文件夹中,其统一包含8个种子文件,这8个种子分别由n个0x00、0x22、0x44、0x66、0x88、0xAA、0xCC、0xEE构成,n等于目标程序的输入数据长度。
6、生成的目标程序文件夹自带Makefile文件,可直接使用make命令编译目标程序。例如使用AFL对目标程序进行模糊测试,可运行CC=afl-fuzz make命令编译目标程序,生成的二进制可执行程序文件默认为a.out。运行afl-fuzz-i seeds-o output--./a.out即可执行模糊测试。
7、运行被测工具进行模糊测试,超时时限(timeout)可统一设置为2或以上。每当模糊测试触发了程序crash(崩溃),则记录其函数调用栈,对比以PoC文件为输入所触发的crash的调用栈,如相同,则说明模糊测试触发了我们在目标程序中设置的漏洞,此时停止模糊测试并记录被测工具已进行的种子变异次数和模糊测试运行时间。若模糊测试工具在超时时限内未能触发漏洞,则自动停止,并记录被测工具对该目标程序的漏洞触发“超时”。
8、根据步骤7记录的漏洞触发所需变异次数以及耗时,结合妨碍特征标注文件“hardness”,计算妨碍特征对被测工具漏洞发现效率的影响程度,并标注文件依据表4的根据妨碍特征对模糊测试的影响程度推断被测工具的能力,进一步推断被测工具的具体能力。
表4
其中,在表4中,execsorig代表被测工具触发原始目标程序漏洞所需变异次数,execsNOI代表加入噪声路径之后,被测工具触发目标程序漏洞所需变异次数;Δexecs/Δ(N/NV))代表妨碍特征N/NV(漏洞出发取值个数比)对模糊测试的影响程度;Δexecs/ΔL代表L(输入数据长度)对模糊测试的影响程度;execsNOI/execsorig代表(噪声路径)对模糊测试的影响程度;execsSH/execsorig代表(符号执行妨碍特征)对模糊测试的影响程度;execsTH/execsorig代表(污点分析妨碍特征)对模糊测试的影响程度。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。

Claims (7)

1.一种基于妨碍特征的模糊测试工具测试方法,其步骤包括:
1)获取输入数据长度与漏洞相关字节数,依据生成的漏洞相关变量生成条件分支语句,依据生成的漏洞无关变量生成噪声路径,得到若干包含漏洞触发条件妨碍特征的配置文件,其中,各漏洞相关变量所占用的字节在输入数据中的起始偏移是随机的且每个字节仅被一个漏洞相关变量使用一次,所述漏洞触发条件妨碍特征包括:漏洞触发取值个数比和输入数据长度;
2)利用条件分支语句组成程序执行路径,将漏洞函数插入到程序执行路径中生成结构文件,并将优化辅助妨碍特征添加到结构文件中,生成若干包含不同优化辅助妨碍特征组合的结构文件;其中,所述优化辅助妨碍特征包括:噪声路径、符号执行妨碍特征和污点分析妨碍特征,所述符号执行妨碍特征包括:循环冗余校验和高斯函数,所述污点分析妨碍特征包括:隐式数据流;
3)根据各配置文件生成相应的源代码片段来定义程序变量,根据包含不同优化辅助妨碍特征组合的结构文件生成相应的漏洞触发路径源码片段,并将源代码片段与漏洞触发路径源码片段植入到模板文件中,生成若干目标程序,其中模板文件包括:对各相关函数及全局变量的定义和标记代码植入点;
4)获取各目标程序对待测模糊测试工具的测试结果,并基于所述测试结果推断待测模糊测试工具的能力;其中,所述获取各目标程序对待测模糊测试工具的测试结果,包括:
生成漏洞概念验证文件与模糊测试妨碍特征标注文件,并为每一个目标程序生成种子文件;
当待测模糊测试工具在超时时限内触发程序崩溃,则记录函数调用栈,并对比以漏洞概念验证文件为输入所触发的程序崩溃的函数调用栈;若两个函数调用栈相同,则停止模糊测试并记录待测模糊测试工具已进行的种子变异次数与模糊测试运行时间;
当待测模糊测试工具在超时时限内未触发程序崩溃,则进行超时标记;
依据种子变异次数、模糊测试运行时间、模糊测试妨碍特征标注文件与超时标记,计算漏洞触发条件妨碍特征与优化辅助妨碍特征对待测模糊测试工具漏洞发现效率的影响程度,得到测试结果。
2.如权利要求1所述的方法,其特征在于,获取输入数据长度与漏洞相关字节数之前,基于漏洞触发相关变量的变量名、漏洞触发无关变量的变量名、数据类型及漏洞触发相关变量或漏洞触发无关变量在输入数据中所占的字节,生成条件约束,并回写到配置文件里。
3.如权利要求1所述的方法,其特征在于,漏洞相关变量的变量类型包括:char、int和char数组。
4.如权利要求1所述的方法,其特征在于,通过对各漏洞相关字节的值与部分漏洞无关字节的值进行分配,得到漏洞相关变量;依据其余漏洞无关字节生成漏洞无关变量。
5.如权利要求1所述的方法,其特征在于,相关函数包括:主函数、通用功能函数和漏洞函数。
6.一种计算机存储介质,所述计算机存储介质中存储有计算机程序,其中,所述计算机程序被设置为被运行时执行权利要求1-5中任一项所述的方法。
7.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-5中任一项所述的方法。
CN202011486603.9A 2020-12-16 2020-12-16 基于妨碍特征的模糊测试工具测试方法及电子装置 Active CN112631901B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011486603.9A CN112631901B (zh) 2020-12-16 2020-12-16 基于妨碍特征的模糊测试工具测试方法及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011486603.9A CN112631901B (zh) 2020-12-16 2020-12-16 基于妨碍特征的模糊测试工具测试方法及电子装置

Publications (2)

Publication Number Publication Date
CN112631901A CN112631901A (zh) 2021-04-09
CN112631901B true CN112631901B (zh) 2023-08-08

Family

ID=75313628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011486603.9A Active CN112631901B (zh) 2020-12-16 2020-12-16 基于妨碍特征的模糊测试工具测试方法及电子装置

Country Status (1)

Country Link
CN (1) CN112631901B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656280B (zh) * 2021-07-09 2024-04-05 中国科学院信息工程研究所 基于符号执行的漏洞利用点查找方法及装置
CN116305173B (zh) * 2023-05-24 2023-07-28 中国人民解放军国防科技大学 一种整数漏洞查找方法、装置、计算机设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598383A (zh) * 2015-02-06 2015-05-06 中国科学院软件研究所 一种基于模式的动态漏洞挖掘集成系统和方法
CN108052825A (zh) * 2017-12-29 2018-05-18 哈尔滨工业大学 针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统
CN109739755A (zh) * 2018-12-27 2019-05-10 北京理工大学 一种基于程序追踪和混合执行的模糊测试系统
US10380350B1 (en) * 2019-01-15 2019-08-13 Cyberark Software Ltd. Efficient and comprehensive source code fuzzing
CN110196815A (zh) * 2019-07-26 2019-09-03 中国人民解放军国防科技大学 一种软件模糊测试方法
CN111694746A (zh) * 2020-06-15 2020-09-22 荆门汇易佳信息科技有限公司 面向编译型语言AS3的Flash缺陷模糊测评工具

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191172B2 (en) * 2003-03-25 2007-03-13 International Business Machines Corporation Fuzzy location of a testable object in a functional testing tool
US7926114B2 (en) * 2007-05-31 2011-04-12 Microsoft Corporation Testing software applications with schema-based fuzzing
US8336102B2 (en) * 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
US11314627B2 (en) * 2018-04-20 2022-04-26 Sap Se Test automation system for distributed heterogenous environments
US10698789B1 (en) * 2018-12-05 2020-06-30 International Business Machines Corporation Fuzz testing for quantum SDK

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598383A (zh) * 2015-02-06 2015-05-06 中国科学院软件研究所 一种基于模式的动态漏洞挖掘集成系统和方法
CN108052825A (zh) * 2017-12-29 2018-05-18 哈尔滨工业大学 针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统
CN109739755A (zh) * 2018-12-27 2019-05-10 北京理工大学 一种基于程序追踪和混合执行的模糊测试系统
US10380350B1 (en) * 2019-01-15 2019-08-13 Cyberark Software Ltd. Efficient and comprehensive source code fuzzing
CN110196815A (zh) * 2019-07-26 2019-09-03 中国人民解放军国防科技大学 一种软件模糊测试方法
CN111694746A (zh) * 2020-06-15 2020-09-22 荆门汇易佳信息科技有限公司 面向编译型语言AS3的Flash缺陷模糊测评工具

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Constructing Benchmarks for Supporting Explainable Evaluations of Static Application Security Testing Tools;Hao,Gaojian et al.;《2019 13TH INTERNATIONAL SYMPOSIUM ON THEORETICAL ASPECTS OF SOFTWARE ENGINEERING (TASE 2019)》;第65-72页 *

Also Published As

Publication number Publication date
CN112631901A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
Godefroid et al. Learn&fuzz: Machine learning for input fuzzing
You et al. Profuzzer: On-the-fly input type probing for better zero-day vulnerability discovery
Aschermann et al. NAUTILUS: Fishing for deep bugs with grammars.
Song et al. Performance diagnosis for inefficient loops
CN112631901B (zh) 基于妨碍特征的模糊测试工具测试方法及电子装置
Assiri et al. Fault localization for automated program repair: effectiveness, performance, repair correctness
US8108689B2 (en) Obfuscation evaluation method and obfuscation method
Fu et al. Robustness testing of Java server applications
Elkarablieh et al. Precise pointer reasoning for dynamic test generation
Santelices et al. Efficiently monitoring data-flow test coverage
Hemmati et al. Prioritizing manual test cases in rapid release environments
Wei et al. State-sensitive points-to analysis for the dynamic behavior of JavaScript objects
Slabý et al. Checking properties described by state machines: On synergy of instrumentation, slicing, and symbolic execution
Das et al. Designing and modeling smart environments
Dhok et al. Type-aware concolic testing of JavaScript programs
Wang et al. {FuzzJIT}:{Oracle-Enhanced} Fuzzing for {JavaScript} Engine {JIT} Compiler
Kim et al. Invasive software testing: Mutating target programs to diversify test exploration for high test coverage
Lazarek et al. How to evaluate blame for gradual types
Rutledge et al. Zero-overhead path prediction with progressive symbolic execution
Fiedor et al. Advances in noise‐based testing of concurrent software
Sagdeo et al. Precis: Inferring invariants using program path guided clustering
Borrello et al. Predictive context-sensitive fuzzing
Palka Testing an Optimising Compiler by Generating Random Lambda Terms
CN114840418A (zh) 模糊测试方法及装置
Zhang et al. Multi-level directed fuzzing for detecting use-after-free vulnerabilities

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant