CN111797405A - 一种序列导向的混合模糊测试方法及装置 - Google Patents
一种序列导向的混合模糊测试方法及装置 Download PDFInfo
- Publication number
- CN111797405A CN111797405A CN202010619542.2A CN202010619542A CN111797405A CN 111797405 A CN111797405 A CN 111797405A CN 202010619542 A CN202010619542 A CN 202010619542A CN 111797405 A CN111797405 A CN 111797405A
- Authority
- CN
- China
- Prior art keywords
- seed
- sequence
- seeds
- similarity
- execution
- 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 abstract description 6
- 238000012360 testing method Methods 0.000 claims abstract description 54
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 39
- 238000004458 analytical method Methods 0.000 claims abstract description 37
- 238000000034 method Methods 0.000 claims abstract description 20
- 230000003068 static effect Effects 0.000 claims abstract description 18
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 9
- 230000003044 adaptive effect Effects 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 3
- 238000012913 prioritisation Methods 0.000 claims description 3
- 230000007547 defect Effects 0.000 abstract description 2
- 230000003993 interaction Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 238000002922 simulated annealing Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 201000004569 Blindness Diseases 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000012038 vulnerability analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出了一种序列导向的混合模糊测试方法及装置,该方法主要包括静态分析和动态分析两个部分,静态分析部分通过支配树算法获取目标基本块序列的必经节点,必经节点和目标基本块组合形成增强目标序列,对增强目标序列中的基本块进行插桩以收集目标的执行信息。动态分析部分主要是模糊测试器和混合执行引擎的交互,共享三个不同优先级的种子队列,从种子队列取出种子,并根据种子执行路径与增强目标序列的相似度放回新生成的种子。本发明通过结合混合模糊测试和导向模糊测试,能有效提供结合两者的优点,克服两种方式的不足,提高模糊测试的效率和精度。
Description
技术领域
本发明涉及一种软件漏洞检测方法,尤其涉及一种序列导向的混合模糊测试方法。
背景技术
漏洞分析技术通常有三种主要方式,分别为静态程序分析,人工代码审查和模糊测试。其中静态分析技术存在高误报的问题;人工代码审查对于渗透测试者有很高的专业要求,以及测试者需要对被测试程序有很高的熟悉度,费用高且对于不同的程序不可重用。相比这些方法,模糊测试自动化程度高、误报率低、原理简单并且可扩展性强,因此这些优点使得模糊测试在漏洞挖掘领域中备受青睐。对于模糊测试也有不同的类型,不同类型的技术特点和存在的问题如下:
黑盒模糊测试过于依赖随机输入,测试用例的生成与初始的种子库和测试用例随机生成算法有很大的关系,难以覆盖大量的程序路径;
覆盖率引导的模糊测试能够有很高的代码覆盖率,但是执行效率低,在漏洞无关的组件上浪费大量的资源;
混合模糊测试加入程序分析的手段,如符号执行和污点分析,对覆盖率导向模糊测试进行改进,实现更高的覆盖率,但是通常面临路径***的问题;
导向模糊测试是一种新的模糊测试技术,不同于覆盖率导向的模糊测试以提高覆盖率为目标,更有针对性,旨在尽快生成测试输入,对种子与目标的距离进行定义,给予靠近目标的种子更多的变异机会。但是它也存在只考虑目标序列中语句的覆盖率情况,而忽略了目标语句的上下文,同时存在盲目性和随机性的问题。
因此,挡墙需要设计出针对性更强、效率更高的导向模糊测试方法。
发明内容
本发明要解决的技术问题是提高混合模糊测试的针对性,主要测试目标是目标语句序列,并辅助以目标语句上下文;提高导向模糊测试工具的有效性和高效性,根据种子与目标序列的相似度,维护一个种子优先队列,优先处理靠近目标序列的种子,以更快地发现程序中的漏洞,同时将种子执行路径和目标序列相结合,以求达到全局最优。
为了解决上述技术问题,本发明提出一种序列引导的混合模糊测试(SequenceDirected Hybrid Fuzzing,简称SDHF)方法,包括静态分析阶段S1和动态分析阶段S2,所述静态分析阶段S1包括以下步骤:
S1-1:使用Clang编译器在调试(debug)模式下将源代码编译成为LLVM中间表示,利用LLVM的调试(debug)信息将目标语句序列与目标基本块序列进行映射;
S1-2:基于控制流图对函数进行支配树的构建,解析支配树计算获得必经基本块,将目标基本块与必经基本块进行组合形成增强目标序列;
S1-3:使用LLVM PASS基于AFL的插桩模块对被测程序进行插桩,在函数被执行的时候,收集分支覆盖信息和目标序列的覆盖信息;插装器为每个基本块生成一个随机的位置标识用于收集分支覆盖信息。同时在每个目标基本块的开始,***IR指令,在执行到这些目标基本块时,目标基本块的位置标识被写入到额外申请的空间里面,用于收集目标序列覆盖信息。
在静态分析部分,为了支持细粒度的种子调度策略,本发明不仅考虑种子执行路径对目标序列的覆盖情况还关注执行的上下文,通过支配树算法获取目标基本块序列的必经节点;必经节点和目标基本块组合形成增强目标序列;还对增强目标序列中的基本块进行插桩以收集目标的执行信息。
动态分析阶段S2包括以下步骤:
S2-1:通过模糊测试器与混合执行引擎进行交互,所述模糊测试器与混合执行引擎共享具有L1、L2、L3分别代表高、中、低三个不同优先级的种子队列,所述模糊测试器从所述种子队列取出种子,并基于KMP算法计算种子执行路径与所述增强目标序列的相似度,根据相似度划分新生成种子的优先级放回所述种子队列中;
S2-2:所述混合执行引擎从L1队列中取出种子,结合目标序列前的实际执行信息,所述实际执行信息为必经基本块,使用Z3约束求解器执行符号执行遍历所述目标语句序列,生成新的种子放入到L2队列中。
在动态分析部分,主要是模糊测试器和混合执行引擎的交互,其共享三个不同优先级的种子队列。模糊测试器从种子队列取出种子,并根据种子执行路径与增强目标序列的相似度放回新生成的种子。混合执行引擎从L1队列中取种子,并在其引导下,然后将新生成的种子放进L2队列。在模糊测试中我们基于KMP算法计算种子执行路径与增强目标序列的相似度,相似度大于阈值的我们将种子交给混合执行引擎进行分析;与此同时相似度较高的种子有更高的能量,也就是该种子变异的次数更多。使用模拟退火算法基于种子的能量优化模糊测试的过程,模拟退火算法以一定概率接受不如当前解好的解,这样可能跳出局部最优以达到全局最优,该算法能够在多项式时间找到对应问题的近似最优解。本发明将种子队列按照优先级排序,设置三个等级的种子队列,优先处理高优先级的种子,这样更容易达到目标序列。混合执行辅助模糊测试,考虑程序上下文,以一部分匹配的种子作为输入,生成相似度更高的种子。
优选地,上述模糊测试器基于灰盒模糊测试器(AFL)实现,其通过综合考虑种子执行时间、分支覆盖率、发现种子的时间和执行深度信息来确定种子能量,并包含种子相似度计算和能量调度,同时引入优先等级机制,编译生成改进之后的模糊测试器,改进后的模糊测试器不断地生成新的种子,虚拟机使用新的种子执行插装后的目标程序二进制,根据种子的优先级执行,先执行高优先级种子队列L1,然后执行中优先级种子队列L2,最后才会执行低优先级种子队列L3。
优选地,上述相似度基于KMP算法然后做加权计算,相似度算法如下:
Similarity(S,ETS)=len(MMP)/len(ETS)
其中,MMP为根据KMP算法得到的最大公共前缀,ETS是增强目标序列,并进一步根据如下公式计算获得种子与增强目标序列集合ETS的整体相似度,其中pss表示种子集:
优选地,采用自适应阈值算法进行种子优先级划分,对于相似度大于阈值且带来新覆盖的种子,定义为L1,相似度大于阈值但是不能带来新的覆盖种子和使用混合执行从L1中的种子为输入产生的种子定义为L2,其余种子则定义为L3。
优选地,对不同的种子计算器序列相似度,结合模拟退火算法达到全局最优。
本发明的另一方面提供了一种序列导向的混合模糊测试装置,包括静态分析模块和动态分析模块,所述静态分析模块进一步包括:
语句基本块映射模块:使用Clang编译器在调试(debug)模式下将源代码编译成为LLVM中间表示,利用LLVM的调试(debug)信息将目标语句序列与目标基本块序列进行映射;
支配树构建与解析模块:基于控制流图对函数进行支配树的构建,解析支配树计算获得必经基本块,将目标基本块与必经基本块进行组合形成增强目标序列;
插桩模块:使用LLVM PASS基于AFL的插桩模块对被测程序进行插桩,在函数被执行的时候,收集分支覆盖信息和目标序列的覆盖信息;插装器为每个基本块生成一个随机的位置标识用于收集分支覆盖信息。同时在每个目标基本块的开始,***IR指令,在执行到这些目标基本块时,目标基本块的位置标识被写入到额外申请的空间里面,用于收集目标序列覆盖信息。
上述动态分析模块进一步包括:
种子队列:该种子队列分别具有高、中、低三个同优先级的队列L1、L2、L3;
模糊测试器:从所述种子队列取出种子,并基于KMP算法计算种子执行路径与所述增强目标序列的相似度,根据相似度划分新生成种子的优先级放回所述种子队列中;
混合执行引擎:从L1队列中取出种子,结合目标序列前的实际执行信息和在目标序列使用Z3约束求解器执行符号执行遍历所述目标语句序列,生成新的测试用例放入到L2队列中。
优选地,所述模糊测试器基于灰盒模糊测试器(AFL)实现,其通过综合考虑种子执行时间、分支覆盖率、发现种子的时间和执行深度信息来确定种子能量,并包含种子相似度计算和能量调度。
优选地,所述模糊测试器中的相似度基于KMP算法然后做加权计算,相似度算法如下:
Similarity(S,ETS)=len(MMP)/len(ETS)
其中,MMP为根据KMP算法得到的最大公共前缀,ETS是增强目标序列,并进一步根据如下公式计算获得种子与增强目标序列集合ETS的整体相似度,其中pss表示种子集:
优选地,所述种子队列中采用自适应阈值算法进行种子优先级划分,对于相似度大于阈值且带来新覆盖的种子,定义为L1,相似度大于阈值但是不能带来新的覆盖种子和使用混合执行从L1中的种子为输入产生的种子定义为L2,其余种子则定义为L3。
优选地,所述种子队列中对不同的种子计算器序列相似度,结合模拟退火算法达到全局最优。
本发明结合导向灰盒模糊测试和混合执行技术,并通过用户指定的语句序列对其进行指导。一方面,本发明提出了一种新颖的基于序列相似度的能量调度算法和种子优先级机制,以提供对模糊测试过程的有效指导。另一方面,本发明引入一种定制的混合执行方法,在遇到切换点时,被测程序的执行从具体执行切换为符号执行,这不仅有助于覆盖复杂的路径,还可以生成更多的靠近目标序列的测试用例。
本发明通过结合混合模糊测试和导向模糊测试,提出基于序列导向的混合测试技术,能有效提供结合两者的优点,克服两种方式的不足,提高模糊测试的效率和精度。不同于混合执行技术的全局混合执行,只针对目标序列实行混合执行,不存在路径***的问题;针对目标序列一般采用随机模糊测试不同,本发明引入混合执行技术检测目标序列,能够对目标序列更全面地检测;虽然是导向模糊测试,更加关注重点的目标序列,本发明依然记录达到目标序列所必经的路径,结合必经路径的目标序列内部路径使用SMT求解器求解,提高分析的准确度。
本发明将所提方法实现为工具,并在崩溃复现、静态分析报告验证和真实程序漏洞检测等应用场景下对工具进行了评估,实验证明工具具有比较优秀的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明混合模糊测试方法的流程图;
图2为本发明混合模糊测试装置的结构示意图;
具体实施例
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
下面根据附图1所示的序列引导的混合模糊测试方法对本实施例进行详细描述。本实施例的方法包括静态分析阶段S1和动态分析阶段S2,其中静态分析阶段S1包括以下步骤:
S1-1:使用Clang编译器在调试(debug)模式下将源代码编译成为LLVM中间表示,利用LLVM的调试(debug)信息将目标语句序列与目标基本块序列进行映射;
S1-2:基于控制流图对函数进行支配树的构建,解析支配树计算获得必经基本块,将目标基本块与必经基本块进行组合形成增强目标序列;
S1-3:使用LLVM PASS基于AFL的插桩模块对被测程序进行插桩,在函数被执行的时候,收集分支覆盖信息和目标序列的覆盖信息;
动态分析阶段S2包括以下步骤:
S2-1:通过模糊测试器与混合执行引擎进行交互,上述模糊测试器基于灰盒模糊测试器(AFL)实现,其通过综合考虑种子执行时间、分支覆盖率、发现种子的时间和执行深度信息来确定种子能量,并包含种子相似度计算和能量调度。
模糊测试器与混合执行引擎共享具有L1、L2、L3分别代表高、中、低三个不同优先级的种子队列,采用自适应阈值算法进行种子优先级划分,对于相似度大于阈值且带来新覆盖的种子,定义为L1,相似度大于阈值但是不能带来新的覆盖种子和使用混合执行从L1中的种子为输入产生的种子定义为L2,其余种子则定义为L3。对不同的种子计算器序列相似度,结合模拟退火算法达到全局最优。
上述模糊测试器从所述种子队列取出种子,并基于KMP算法计算种子执行路径与所述增强目标序列的相似度,根据相似度划分新生成种子的优先级放回所述种子队列中;
所述相似度基于KMP算法然后做加权计算,相似度算法如下:
Similarity(S,ETS)=len(MMP)/len(ETS)
其中,MMP为根据KMP算法得到的最大公共前缀,ETS是增强目标序列,并进一步根据如下公式计算获得种子与目标序列集合ETS的整体相似度,其中pss表示种子集:
S2-2:所述混合执行引擎从L1队列中取出种子,结合目标序列前的实际执行信息,所述实际执行信息为必经基本块,使用Z3约束求解器执行符号执行遍历所述目标语句序列,生成新的测试用例放入到L2队列中。
本发明的另一个实施例提供了一种序列导向的混合模糊测试装置,如图2所示。上述装置包括静态分析模块210和动态分析模块220两部分,其中静态分析模块210进一步包括:
语句基本块映射模块211:其使用Clang编译器在调试(debug)模式下将源代码编译成为LLVM中间表示,利用LLVM的调试(debug)信息将目标语句序列与目标基本块序列进行映射;
支配树构建与解析模块212:基于控制流图对函数进行支配树的构建,解析支配树计算获得必经基本块,将目标基本块与必经基本块进行组合形成增强目标序列;
插桩模块213:使用LLVM PASS基于AFL的插桩模块对被测程序进行插桩,在函数被执行的时候,收集分支覆盖信息和目标序列的覆盖信息;
上述动态分析模块220进一步包括:
种子队列222:该种子队列分别具有高、中、低三个同优先级的队列L1、L2、L3;种子队列222中采用自适应阈值算法进行种子优先级划分,对于相似度大于阈值且带来新覆盖的种子,定义为L1,相似度大于阈值但是不能带来新的覆盖种子和使用混合执行从L1中的种子为输入产生的种子定义为L2,其余种子则定义为L3。上述种子队列中对不同的种子计算器序列相似度,结合模拟退火算法达到全局最优。
模糊测试器221:从所述种子队列取出种子,并基于KMP算法计算种子执行路径与所述增强目标序列的相似度,根据相似度划分新生成种子的优先级放回所述种子队列中。模糊测试器221基于灰盒模糊测试器(AFL)实现,其通过综合考虑种子执行时间、分支覆盖率、发现种子的时间和执行深度信息来确定种子能量,并包含种子相似度计算和能量调度。
上述模糊测试器中的相似度基于KMP算法然后做加权计算,相似度算法如下:
Similarity(S,ETS)=len(MMP)/len(ETS)
其中,MMP为根据KMP算法得到的最大公共前缀,ETS是增强目标序列,并进一步根据如下公式计算获得种子与增强目标序列集合ETS的整体相似度:
混合执行引擎223:从L1队列中取出种子,结合目标序列前的实际执行信息,即必经基本块,使用Z3约束求解器执行符号执行遍历所述目标语句序列,生成新的种子放入到L2队列中。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种序列导向的混合模糊测试方法,包括静态分析阶段S1和动态分析阶段S2,其特征在于,所述静态分析阶段S1包括以下步骤:
S1-1:使用Clang编译器在调试(debug)模式下将源代码编译成为LLVM中间表示(IR),利用LLVM的调试(debug)信息将目标语句序列与目标基本块序列进行映射;
S1-2:基于控制流图对函数进行支配树的构建,解析支配树计算获得必经基本块,将目标基本块与必经基本块进行组合形成增强目标序列;
S1-3:使用LLVM Pass基于灰盒模糊测试器(AFL)的插桩模块对被测程序进行插桩,在函数被执行的时候,收集分支覆盖信息和目标序列的覆盖信息;
所述动态分析阶段S2包括以下步骤:
S2-1:通过模糊测试器与混合执行引擎进行交互,所述模糊测试器与混合执行引擎共享具有L1、L2、L3分别代表高、中、低三个不同优先级的种子队列,所述模糊测试器从所述种子队列取出种子,并基于KMP算法计算种子执行路径与所述增强目标序列的相似度,根据相似度划分新生成种子的优先级放回所述种子队列中;
S2-2:所述混合执行引擎从L1队列中取出种子,结合目标序列前的实际执行信息,即必经基本块,使用Z3约束求解器执行符号执行遍历当前目标语句序列,生成新的种子放入到L2队列中。
2.如权利要求1所述的序列导向的混合模糊测试方法,其特征在于,所述模糊测试器基于灰盒模糊测试器(AFL)实现,其通过综合考虑种子执行时间、分支覆盖率、发现种子的时间和执行深度信息来确定种子能量,并包含种子相似度计算和能量调度。
4.如权利要求1所述的序列导向的混合模糊测试方法,其特征在于,采用自适应阈值算法进行种子优先级划分,对于相似度大于阈值且带来新覆盖的种子,定义为L1,相似度大于阈值但是不能带来新的覆盖种子和使用混合执行从L1中的种子为输入产生的种子定义为L2,其余种子则定义为L3。
5.一种序列导向的混合模糊测试装置,包括静态分析模块和动态分析模块,其特征在于,所述静态分析模块进一步包括:
语句基本块映射模块:使用Clang编译器在调试(debug)模式下将源代码编译成为LLVM中间表示,利用LLVM的调试(debug)信息将目标语句序列与目标基本块序列进行映射;
支配树构建与解析模块:基于控制流图对函数进行支配树的构建,解析支配树计算获得必经基本块,将目标基本块与必经基本块进行组合形成增强目标序列;
插桩模块:使用LLVM PASS基于AFL的插桩模块对被测程序进行插桩,在函数被执行的时候,收集分支覆盖信息和目标序列的覆盖信息;
所述动态分析模块进一步包括:
种子队列:该种子队列分别具有高、中、低三个同优先级的队列L1、L2、L3;
模糊测试器:从所述种子队列取出种子,并基于KMP算法计算种子执行路径与所述增强目标序列的相似度,根据相似度划分新生成种子的优先级放回所述种子队列中;
混合执行引擎:从L1队列中取出种子,结合目标序列前的实际执行信息,使用Z3约束求解器执行符号执行遍历所述目标语句序列,生成新的种子放入到L2队列中。
6.如权利要求5所述的序列导向的混合模糊测试装置,其特征在于,所述模糊测试器基于灰盒模糊测试器(AFL)实现,其通过综合考虑种子执行时间、分支覆盖率、发现种子的时间和执行深度信息来确定种子能量,并包含种子相似度计算和能量调度。
8.如权利要求5所述的序列导向的混合模糊测试方法,其特征在于,所述种子队列中采用自适应阈值算法进行种子优先级划分,对于相似度大于阈值且带来新覆盖的种子,定义为L1,相似度大于阈值但是不能带来新的覆盖种子和使用混合执行从L1中的种子为输入产生的种子定义为L2,其余种子则定义为L3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010619542.2A CN111797405A (zh) | 2020-07-01 | 2020-07-01 | 一种序列导向的混合模糊测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010619542.2A CN111797405A (zh) | 2020-07-01 | 2020-07-01 | 一种序列导向的混合模糊测试方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111797405A true CN111797405A (zh) | 2020-10-20 |
Family
ID=72810776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010619542.2A Pending CN111797405A (zh) | 2020-07-01 | 2020-07-01 | 一种序列导向的混合模糊测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111797405A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419960A (zh) * | 2021-07-01 | 2021-09-21 | 中国人民解放军国防科技大学 | 用于可信操作***内核模糊测试的种子生成方法及*** |
CN114417348A (zh) * | 2021-12-15 | 2022-04-29 | 北京邮电大学 | 多目标导向模糊测试方法及*** |
CN114490339A (zh) * | 2021-12-30 | 2022-05-13 | 天津大学 | 一种基于搜索测试的智能种子策略方法 |
CN114490314A (zh) * | 2021-12-08 | 2022-05-13 | 中国科学院信息工程研究所 | 一种覆盖率引导的虚拟网络设备模糊测试的方法及装置 |
EP4137977A1 (en) * | 2021-08-20 | 2023-02-22 | Argus Cyber Security Ltd | Coverage guided fuzzing of remote embedded devices using a debugger |
CN116541294A (zh) * | 2023-05-18 | 2023-08-04 | 上海安般信息科技有限公司 | 一种基于符号执行的模糊测试***及方法 |
CN116881919A (zh) * | 2023-06-01 | 2023-10-13 | 清华大学 | 漏洞挖掘方法、装置、电子设备及存储介质 |
CN117473504A (zh) * | 2023-12-27 | 2024-01-30 | 北京中科卓信软件测评技术中心 | 基于通道操作优先级Go程序通道阻塞检测方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573524A (zh) * | 2014-12-19 | 2015-04-29 | 中国航天科工集团第二研究院七〇六所 | 一种基于静态检测的模糊测试方法 |
CN109739755A (zh) * | 2018-12-27 | 2019-05-10 | 北京理工大学 | 一种基于程序追踪和混合执行的模糊测试*** |
-
2020
- 2020-07-01 CN CN202010619542.2A patent/CN111797405A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573524A (zh) * | 2014-12-19 | 2015-04-29 | 中国航天科工集团第二研究院七〇六所 | 一种基于静态检测的模糊测试方法 |
CN109739755A (zh) * | 2018-12-27 | 2019-05-10 | 北京理工大学 | 一种基于程序追踪和混合执行的模糊测试*** |
Non-Patent Citations (1)
Title |
---|
HONGLIANGLIANG等: "Sequence Directed Hybrid Fuzzing", 《2020 IEEE 27TH INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS,EVOLUTION AND REENGINEERING(SANER)》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419960B (zh) * | 2021-07-01 | 2022-06-14 | 中国人民解放军国防科技大学 | 用于可信操作***内核模糊测试的种子生成方法及*** |
CN113419960A (zh) * | 2021-07-01 | 2021-09-21 | 中国人民解放军国防科技大学 | 用于可信操作***内核模糊测试的种子生成方法及*** |
EP4137977A1 (en) * | 2021-08-20 | 2023-02-22 | Argus Cyber Security Ltd | Coverage guided fuzzing of remote embedded devices using a debugger |
CN114490314A (zh) * | 2021-12-08 | 2022-05-13 | 中国科学院信息工程研究所 | 一种覆盖率引导的虚拟网络设备模糊测试的方法及装置 |
CN114417348B (zh) * | 2021-12-15 | 2023-03-28 | 北京邮电大学 | 多目标导向模糊测试方法及*** |
CN114417348A (zh) * | 2021-12-15 | 2022-04-29 | 北京邮电大学 | 多目标导向模糊测试方法及*** |
CN114490339A (zh) * | 2021-12-30 | 2022-05-13 | 天津大学 | 一种基于搜索测试的智能种子策略方法 |
CN114490339B (zh) * | 2021-12-30 | 2024-05-31 | 天津大学 | 一种基于搜索测试的智能种子策略方法 |
CN116541294A (zh) * | 2023-05-18 | 2023-08-04 | 上海安般信息科技有限公司 | 一种基于符号执行的模糊测试***及方法 |
CN116541294B (zh) * | 2023-05-18 | 2023-11-17 | 上海安般信息科技有限公司 | 一种基于符号执行的模糊测试***及方法 |
CN116881919A (zh) * | 2023-06-01 | 2023-10-13 | 清华大学 | 漏洞挖掘方法、装置、电子设备及存储介质 |
CN116881919B (zh) * | 2023-06-01 | 2024-04-19 | 清华大学 | 漏洞挖掘方法、装置、电子设备及存储介质 |
CN117473504A (zh) * | 2023-12-27 | 2024-01-30 | 北京中科卓信软件测评技术中心 | 基于通道操作优先级Go程序通道阻塞检测方法及装置 |
CN117473504B (zh) * | 2023-12-27 | 2024-03-01 | 北京中科卓信软件测评技术中心 | 基于通道操作优先级Go程序通道阻塞检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111797405A (zh) | 一种序列导向的混合模糊测试方法及装置 | |
Baresel et al. | Fitness function design to improve evolutionary structural testing | |
US8402444B2 (en) | Program analysis through predicate abstraction and refinement | |
CN101714119B (zh) | 基于二进制程序的测试数据生成器和方法 | |
Bartocci et al. | Adaptive runtime verification | |
JP2010517163A (ja) | 並列プログラム用の高速で正確な静的データの競合検出方法 | |
CN112506564B (zh) | 一种用于建立控制流图的方法、***和介质 | |
CN102306098A (zh) | 一种隐式污点传播***及其方案 | |
CN114661578A (zh) | 基于支配点覆盖的导向式灰盒模糊测试方法及装置 | |
Sestelo Perez et al. | FWDselect: An R package for variable selection in regression models | |
Lin et al. | A priority based path searching method for improving hybrid fuzzing | |
Zhang et al. | DeltaFuzz: historical version information guided fuzz testing | |
Zhang et al. | Demystifying performance regressions in string solvers | |
CN114138669A (zh) | 一种基于函数级选择符号化混合执行的软件自动测试方法 | |
Andrijasa et al. | Towards Automatic Exploit Generation for Identifying Re-Entrancy Attacks on Cross-Contract | |
Shuai et al. | Software vulnerability detection based on code coverage and test cost | |
CN113569252A (zh) | 结合神经网络基于函数与分支覆盖的漏洞检测方法 | |
Moukahal et al. | Boosting grey-box fuzzing for connected autonomous vehicle systems | |
Li et al. | Speedneuzz: Speed up neural program approximation with neighbor edge knowledge | |
CN104317572A (zh) | 一种实时***的循环边界内向分析方法 | |
Zhang et al. | Tell you a definite answer: Whether your data is tainted during thread scheduling | |
Cao et al. | Software multi-fault localization via Chameleon clustering in parallel | |
CN115168871B (zh) | 一种攻击利用组件的自动生成方法和装置 | |
Erdei et al. | Selecting Execution Path for Replaying Errors | |
Dam et al. | Automated repair of security errors in C programs via statistical model checking: a proof of concept |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201020 |