CN114417348B - 多目标导向模糊测试方法及系统 - Google Patents
多目标导向模糊测试方法及系统 Download PDFInfo
- Publication number
- CN114417348B CN114417348B CN202111533157.7A CN202111533157A CN114417348B CN 114417348 B CN114417348 B CN 114417348B CN 202111533157 A CN202111533157 A CN 202111533157A CN 114417348 B CN114417348 B CN 114417348B
- Authority
- CN
- China
- Prior art keywords
- program
- test
- target
- seeds
- stage
- 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
Links
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/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- 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/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- 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
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种多目标导向模糊测试方法及系统,所述方法包括:构建被测程序的函数调用图和程序控制流图;生成增强目标序列并计算目标序列的优先级;对被测程序进行插桩并生成插桩的二进制程序;判断当前模糊器所处阶段,并根据所处阶段从相应的种子队列取种子;变异种子生成测试输入;执行生成的二进制程序并记录测试输入的路径分支覆盖度和目标序列覆盖度;当测试输入提高了目标序列覆盖度,则基于种子多特征的综合能力、模拟退火算法和AFL原始能量,为测试种子分配能量;当测试输入提高了目标序列覆盖度,将测试种子放入导向种子队列,该方法增强了序列引导的多目标导向模糊测试方法触发漏洞的能力。
Description
技术领域
本发明属于计算机软件测试技术领域,尤其涉及一种多目标导向模糊测试方法及系统。
背景技术
模糊测试作为一种重要的测试技术,可以发现软件中存在的缺陷或安全漏洞,在软件质量保证上起到了积极的作用。模糊测试技术是通过不断生成输入来触发被测程序中未知的错误。目前模糊测试主要包括黑盒测试和灰盒测试,其中,黑盒测试是使用完全随机构造的输入来测试程序;而灰盒测试是通过反馈来引导模糊测试,其一般包括以下步骤:构造输入、执行程序、结果反馈、选取种子及种子变异。而当前使用的模糊测试多是基于覆盖率反馈引导的,其方法的核心是将种子变异结果中能够触发新的执行路径的输入作为下一轮的种子继续进行变异,从而获得更大的代码覆盖率,进而更大可能的发现程序中的漏洞。
但是传统模糊测试考虑实现最大的代码覆盖率可能会在一些漏洞无关的程序空间浪费大量的资源。而相比之下,导向型模糊测试是通过在代码中设定目标点,引导模糊测试重点测试目标代码片区,而不会浪费资源探索漏洞无关的程序空间,因此主要应用在脆弱性分析、补丁测试及缺陷复现等场景中。
现阶段导向模糊测试的工作可以很好的处理单个目标的情况,但是软件中通常不止一个漏洞,往往存在多个漏洞且这些漏洞存在一定的关系,然而现阶段的导向模糊测试工作在处理多目标时性能较差。
发明内容
本发明意在提供一种多目标导向模糊测试方法及系统,以解决现阶段的导向模糊测试工作在处理多目标时性能较差的问题,本发明要解决的技术问题通过以下技术方案来实现:
一方面,本发明提供了一种多目标导向模糊测试方法,包括:
根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中所述多个目标序列的优先级用以表征种子多特征的综合能力;
在被测程序执行前,基于llvm对所述被测程序进行插桩操作以生成插桩的二进制程序,所述插桩的二进制程序在所述被测程序执行过程中实时获取所述被测程序的运行信息;
根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子;
对所述测试种子进行变异处理并生成测试输入;
将所述测试输入导入所述被测程序进行执行,并通过所述插桩的二进制程序获取所述被测程序测试过程中的运行信息;
从所述被测程序测试过程中的运行信息中获取所述测试输入的路径分支覆盖度和目标序列覆盖度;
如果所述路径分支覆盖度满足第一预设条件和/或所述目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到所述被测种子的分配能量;
如果所述目标序列覆盖度满足第二预设条件,则将所述测试种子放入导向种子队列,否则将所述测试种子放入覆盖种子队列。
优选地,所述根据预设的多个目标基本块从被测程序中获取对应的多个目标序列的步骤包括:
利用预先编写的图抽取工具对所述被测程序的代码进行处理以构建得到所述被测程序的函数调用图和所述被测程序中每个函数的程序控制流图;
将所述被测程序的函数调用图转化成第一支配树,并将预设的每个所述目标基本块所在函数对应的控制流图转化成第二支配树;
根据所述第一支配树获取所述被测程序的主函数到所述目标基本块所在函数路径上的第一必要基本块,其中,获取的多个所述第一必要基本块构成第一序列;
根据所述第二支配树获取所述目标基本块所在函数的第一个基本块到所述目标基本块路径上的第二必要基本块,其中,获取的多个所述第二必要基本块构成第二序列;
取所述第一序列和所述第二序列的并集得到所述目标基本块对应的目标序列。
优选地,所述目标序列的优先级计算公式表示为:
其中,N是所有目标基本块的数量,LCP表示两个序列的最长公共前缀,Max返回两个序列的最大长度,tgtSeqi和tgtSeqj分别表示第i个目标序列和第j个目标序列。
优选地,所述根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子的步骤包括:
如果所述运行信息中主程序阶段反馈值等于第一设定值,则说明所述模糊测试主程序处于探索阶段,从所述覆盖种子队列中提取测试种子;
如果所述运行信息中主程序阶段反馈值等于第二设定值,则说明所述模糊测试主程序处于利用阶段,从所述导向种子队列中提取测试种子。
优选地,所述根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子的步骤还包括:
如果所述模糊测试主程序处于探索阶段,且所述导向种子队列中导向种子数量与总种子数量的比值大于第一比例阈值,则所述模糊测试主程序从探索阶段切换到利用阶段;
如果所述模糊测试主程序处于利用阶段且在预设时间阈值内所述导向种子队列中导向种子数量保持不变,则所述模糊测试主程序从利用阶段切换到探索阶段,并自适应更新所述第一比例阈值。
优选地,所述运行信息包括分支覆盖信息和目标执行路径信息;
根据所述分支覆盖信息和目标执行路径信息计算得到所述测试输入的路径分支覆盖度和目标序列覆盖度。
优选地,所述被测种子的分配能量计算公式表示为:
energy=afl_energy×10×(CF×(1.0-T)+0.5×T)---(2)
其中,afl_energy表示AFL原始能量,CF表示种子多特征的综合能力,T表示模拟退火算法。
另一方面,本发明还提供了一种多目标导向模糊测试系统,包括:
序列增强模块,被配置为根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中所述多个目标序列的优先级用以表征种子多特征的综合能力;
插装模块,被配置为在被测程序执行前,基于llvm对所述被测程序进行插桩操作以生成插桩的二进制程序,所述插桩的二进制程序在所述被测程序执行过程中实时获取所述被测程序的运行信息;
种子提取模块,被配置为根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子;输入生成模块,被配置为对所述测试种子进行变异处理并生成测试输入;
测试模块,被配置为将所述测试输入导入所述被测程序进行执行,并通过所述插桩的二进制程序获取所述被测程序测试过程中的运行信息;
获取模块,被配置为从所述被测程序测试过程中的运行信息中获取所述测试输入的路径分支覆盖度和目标序列覆盖度;
能量分配模块,被配置为如果所述路径分支覆盖度满足第一预设条件和/或所述目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到所述被测种子的分配能量;
以及,新种子导入模块,被配置为如果所述目标序列覆盖度满足第二预设条件,则将所述测试种子放入导向种子队列,否则将所述测试种子放入覆盖种子队列。
再一方面,本发明还提供了一种电子设备,包括:处理器和存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上述所述的多目标导向模糊测试方法。
又一方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的多目标导向模糊测试方法。
与现有技术相比,本发明实施例的多目标导向模糊测试方法考虑了函数调用图和控制流程图来生成增强的目标序列,使得对导向模糊测试的引导能力更强;考虑了基于双队列的探索-利用两阶段协调策略,使用了运行时信息更加的灵活;考虑了种子多特征的能量调度策略,使得能量调度策略更加细粒度并且有助于为多目标均衡分配能量。
附图说明
图1为本发明的多目标导向模糊测试方法的一些实施例的流程示意图;
图2为本发明的多目标导向模糊测试方法的步骤100的一些实施例的流程示意图;
图3为本发明实施例多目标导向模糊测试方法中目标序列获取算法;
图4本发明实施例多目标导向模糊测试方法中一个具体示例的CFG示意图和CG示意图;
图5为本发明的多目标导向模糊测试方法的步骤300的一些实施例的流程示意图;
图6为本发明实施例多目标导向模糊测试方法中模糊测试探索利用两阶段协调算法;
图7为本发明的多目标导向模糊测试方法的另一些实施例的流程示意图;
图8为本发明多目标导向模糊测试系统的一些实施例的结构框图;
图9为本发明多目标导向模糊测试系统的另一些实施例的结构框图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
一方面,参见图1所示,本发明实施例提供了一种多目标导向模糊测试方法,包括:
步骤100:根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中多个目标序列的优先级用以表征种子多特征的综合能力;
本步骤中,预设的目标基本块是指预先给定的可能存在漏洞的代码基本块或补丁代码的基本块,不同的应用场景目标可能不同,这里目标基本块根据测试人员经验确定,再次不做具体限定。本步骤中获取的多个目标序列对导向模糊测试的引导能力更强。
步骤200:在被测程序执行前,基于llvm对被测程序进行插桩操作以生成插桩的二进制程序,插桩的二进制程序在被测程序执行过程中实时获取被测程序的运行信息;
本步骤中使用插桩工具对被测程序进行插桩,以便在程序执行过程中收集一些运行时信息,这些运行时信息能够帮助模糊测试进行合适的能量调度和帮助模糊测试实现自适应的探索-利用两阶段协调。
步骤300:根据运行信息判断模糊测试主程序所处阶段,并根据模糊测试主程序所处阶段从相应的种子队列中提取测试种子;
本步骤中模糊测试主程序包括两个阶段,一是探索阶段,二是利用阶段,通过从运行信息中获取的数据进行判断,例如运行信息中代表模糊测试主程序状态的反馈值。
步骤400:对测试种子进行变异处理并生成测试输入;
本步骤中在测试前需要对测试种子进行变异处理,例如变异策略为:
bitflip:按位翻转,每次都是比特位级别的操作,从1bit到32bit,从文件头到文件尾,会产生一些有意思的额外重要数据信息;
Arithmetic:与位翻转不同的是,从8bit级别开始,而且每次进行的是加减操作,而不是翻转;
Interest:把一些有意思的东西“interesting values”对文件内容进行替换;
dictionary:用户提供的字典里有token,用来替换要进行变异的文件内容,如果用户没提供就使用bitflip自动生成的token;
Havoc:进行很大程度的杂乱破坏,规则很多,基本上换完就是面目全非的新文件了;
Splice:通过将两个文件按一定规则进行拼接,得到一个效果不同的新文件。
步骤500:将测试输入导入被测程序进行执行,并通过插桩的二进制程序获取被测程序测试过程中的运行信息;
本步骤中将变异处理生成的测试输入导入被测程序进行测试,并实时获取运行信息以便进行后续的种子能量分配分析。
步骤600:从被测程序测试过程中的运行信息中获取测试输入的路径分支覆盖度和目标序列覆盖度;
步骤700:如果路径分支覆盖度满足第一预设条件和/或目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到被测种子的分配能量;
步骤800:如果目标序列覆盖度满足第二预设条件,则将测试种子放入导向种子队列,否则将测试种子放入覆盖种子队列。
本实施例中当测试输入提高了目标序列覆盖度或路径分支覆盖度,则说明满足第一预设条件或第二预设条件,其中第一预设条件或第二预设条件是根据之前的测试输入得到的目标序列覆盖度或路径分支覆盖度确定的。
与现有技术相比,本发明实施例的多目标导向模糊测试方法考虑了函数调用图和控制流程图来生成增强的目标序列,使得对导向模糊测试的引导能力更强;考虑了基于双队列的探索-利用两阶段协调策略,使用了运行时信息更加的灵活;考虑了种子多特征的能量调度策略,使得能量调度策略更加细粒度并且有助于为多目标均衡分配能量。
在一些实施例中,参见图2所示,本发明的多目标导向模糊测试方法中步骤100包括:
步骤101:利用预先编写的图抽取工具对被测程序的代码进行处理以构建得到被测程序的函数调用图和被测程序中每个函数的程序控制流图;
本步骤中图抽取工具是预先编写的,是通过编写llVM pass从而收集程序的控制流图和函数调用图,使用图抽取工具可以直接处理程序代码后生成相应的函数调用图和程序控制流图。
步骤102:将被测程序的函数调用图转化成第一支配树,并将预设的每个目标基本块所在函数对应的控制流图转化成第二支配树;
本步骤中转化是通过预先编写的python程序利用NetworkX为每个控制流图(CFG)和函数调用图(CG)构造支配树。
步骤103:根据第一支配树获取被测程序的主函数到目标基本块所在函数路径上的第一必要基本块,其中,获取的多个第一必要基本块构成第一序列;
步骤104:根据第二支配树获取目标基本块所在函数的第一个基本块到目标基本块路径上的第二必要基本块,其中,获取的多个第二必要基本块构成第二序列;
步骤105:取第一序列和第二序列的并集得到目标基本块对应的目标序列。
针对每个目标基本块重复上述过程即可获得相应的多个目标序列。
本实施例中目标基本块是初始设置目标对应的基本块,目标基本块所在的函数可称为目标函数。步骤103中通过函数调用图对应的支配树获得程序入口到目标函数的必要基本块(必要基本块就是从主函数到目标基本块的路径必须经过的基本块),构成了第一序列(序列1),其中程序入口就是指主函数。步骤104中通过目标函数控制流图对应的支配树获得目标函数入口到目标基本块的必要基本块,构成了第二序列(序列2),目标函数入口就是目标函数的第一个基本块。
序列1与序列2的并集形成了目标基本块的增强目标序列,其中目标序列获取算法具体细节如图3所示,示例如图4所示,显示如何从CFG和CG中获得目标序列,该图显示了程序P的CG和函数G与目标G对应的CFG,以及与CG和CFG对应的支配树domcg和domcfg。图中的蓝色节点表示必要节点。通过目标序列生成算法即算法1,我们可以知道main1-a1-entry-a-f-g是目标g的目标序列,其中main1和a1分别表示main和a函数的入口节点。
在一些实施例中,本发明的多目标导向模糊测试方法中目标序列的优先级计算公式表示为:
其中,N是所有目标基本块的数量,LCP表示两个序列的最长公共前缀,Max返回两个序列的最大长度,tgtSeqi和tgtSeqj分别表示第i个目标序列和第j个目标序列。
本发明实施例中序列优先级用于能量调度中多特征综合能力的计算。本实施例中种子的多特征分别是目标序列覆盖、种子对应目标序列的优先级和种子对应目标序列的全局最大覆盖。其中,目标序列覆盖是指种子与所有目标序列的最长公共子序列的长度除以对应的目标序列长度;种子对应目标序列的优先级在根据公式(1)计算;种子对应目标序列的全局最大覆盖是指所有已执行的种子与目标序列的最大覆盖率。
在一些实施例中,参见图5所示,本发明的多目标导向模糊测试方法中步骤300包括:
步骤301:如果运行信息中主程序阶段反馈值等于第一设定值,则说明模糊测试主程序处于探索阶段,从覆盖种子队列中提取测试种子;
步骤302:如果运行信息中主程序阶段反馈值等于第二设定值,则说明模糊测试主程序处于利用阶段,从导向种子队列中提取测试种子。
本实施例中根据模糊测试主程序所处阶段不同,从不同的种子队列提取测试种子,其中通过主程序阶段反馈值判断所处阶段,这里第一设定值可以为0,第二设定值可以为1。
在一些实施例中,本发明的多目标导向模糊测试方法中步骤300还包括:
步骤303:如果模糊测试主程序处于探索阶段,且导向种子队列中导向种子数量与总种子数量的比值大于第一比例阈值,则模糊测试主程序从探索阶段切换到利用阶段;
步骤304:如果模糊测试主程序处于利用阶段且在预设时间阈值内导向种子队列中导向种子数量保持不变,则模糊测试主程序从利用阶段切换到探索阶段,并自适应更新第一比例阈值。
如果模糊测试主程序处于探索阶段且导向种子的数量超过总种子数目的一定比例rate(例如比例为0.7)),则表明当前的覆盖信息充足,模糊测试主程序可以从探索阶段切换到利用阶段;如果模糊测试主程序处于利用阶段且长时间没有发现新的导向种子,则表明导向能力不足,从而需要更多的覆盖信息,则模糊测试主程序需要从利用阶段切回到探索阶段;并且在探索阶段切回到利用阶段的时候会自适应地更新比例系数rate,更新时会考虑当前利用阶段产生的导向种子数目,当前利用阶段运行的时间,以及当前进入利用阶段的次数等运行信息。算法具体细节如图6所示。其中更新比例系数rate的计算方式如下:
其中tanh()是一种双曲函数,t表示模糊程序在当前开发阶段花费的时间(单位秒),其中rate的上限和下限分别设置为1和0。
本实施例中预先会初始一些种子到覆盖种子队列中,然后在模糊测试的不断运行中将可以提高目标序列覆盖度的输入放到导向种子队列中,提高路径分支覆盖度的输入放入覆盖种子队列中。
在一些实施例中,本发明的多目标导向模糊测试方法中运行信息包括分支覆盖信息和目标执行路径信息;
根据分支覆盖信息和目标执行路径信息计算得到测试输入的路径分支覆盖度和目标序列覆盖度。
本实施例中路径分支覆盖度计算是通过设置一个全局的bitmap,每个路径被执行之后,map相应的位会操作,通过遍历这个map就可以计算出相应的路径分支覆盖度。
在一些实施例中,本发明的多目标导向模糊测试方法中被测种子的分配能量计算公式表示为:
energy=afl_energy×10×(CF×(1.0-T)+0.5×T)---(2)
其中,afl_energy表示AFL原始能量,CF表示种子多特征的综合能力,T表示模拟退火算法。
本实施例中计算种子的能量时会综合考虑种子多特征的综合能力(CF)、模拟退火算法(温度T)和AFL原始能量(afl_energy)三个方面。
需要指出的是,由于目标序列全局最大覆盖代表对应目标到达的难易程度,在模糊测试主程序的初始阶段很难判断,因此最终种子多特征的综合能力计算方式如下:
下面举一个具体的实施例说明本发明的多目标导向模糊测试方法的实施过程:
参见图7所示,步骤1)构建被测程序的函数调用图和程序控制流图;
步骤2)针对给定的目标生成相应的增强目标序列并计算目标序列的优先级;
步骤3)基于LLVM对被测程序进行插桩并生成插桩的二进制程序P;
步骤4)基于当前导向种子队列的信息和覆盖种子队列的信息判断当前模糊测试主程序所处阶段,并根据所处阶段从相应的种子队列取种子S;
步骤5)变异种子S生成输入I;
步骤6)执行步骤3生成的二进制程序P;
步骤7)记录输入I的路径分支覆盖度和目标序列覆盖度;
步骤8)判断输入I是否提高了目标序列覆盖度或路径分支覆盖度,如果是则执行步骤9,否则执行步骤4;
步骤9)基于种子多特征的综合能力,模拟退火算法和AFL原始能量为种子S分配能量;
步骤10)判断输入I是否提高目标序列覆盖度,如果是执行步骤11,否则执行步骤12;
步骤11)将种子S放入导向种子队列,执行步骤4;
步骤12)将种子S放入覆盖种子队列中,执行步骤4。
另一方面,参见8所示,本发明实施例还提供了一种多目标导向模糊测试系统1,包括:
序列增强模块10,被配置为根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算多个目标序列的优先级,其中多个目标序列的优先级用以表征种子多特征的综合能力;
插装模块20,被配置为在被测程序执行前,基于llvm对被测程序进行插桩操作以生成插桩的二进制程序,插桩的二进制程序在被测程序执行过程中实时获取被测程序的运行信息;
种子提取模块30,被配置为根据运行信息判断模糊测试主程序所处阶段,并根据模糊测试主程序所处阶段从相应的种子队列中提取测试种子;
输入生成模块40,被配置为对测试种子进行变异处理并生成测试输入;
测试模块50,被配置为将测试输入导入被测程序进行执行,并通过插桩的二进制程序获取被测程序测试过程中的运行信息;
获取模块60,被配置为从被测程序测试过程中的运行信息中获取测试输入的路径分支覆盖度和目标序列覆盖度;
能量分配模块70,被配置为如果路径分支覆盖度满足第一预设条件和/或目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到被测种子的分配能量;
以及,新种子导入模块80,被配置为如果目标序列覆盖度满足第二预设条件,则将测试种子放入导向种子队列,否则将测试种子放入覆盖种子队列。
上述中多目标导向模糊测试系统各模块的具体细节已经在对应的多目标导向模糊测试方法中进行了详细的描述,因此此处不再赘述。
另外,本发明实施例的多目标导向模糊测试系统还可以看做由图抽取器、目标序列生成器、插装器、混合执行器以及模糊器构成,其中模糊器包括阶段协调器、种子选择器、突变器以及执行器,各器件相互连接及功能关系见图9所示,各器件具体细节已经在对应的多目标导向模糊测试方法中进行了详细的描述,因此此处不再赘述。
再一方面,本发明实施例还提供了一种电子设备,包括:处理器和存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例所述的多目标导向模糊测试方法。
具体地,上述存储器和处理器能够为通用的存储器和处理器,这里不做具体限定,当处理器运行存储器存储的计算机可读指令时,能够执行上述实施例所述的多目标导向模糊测试方法。
又一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例所述的多目标导向模糊测试方法。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-only memory,ROM)、随机存取器(randomaccessmemory,RAM)、磁盘或光盘等。
应该指出,上述详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语均具有与本申请所属技术领域的普通技术人员的通常理解所相同的含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请所述的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式。此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便这里描述的本申请的实施方式能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,在这里可以使用空间相对术语,如“在……之上”、“在……上方”、“在……上表面”、“上面的”等,用来描述如在图中所示的一个器件或特征与其他器件或特征的空间位置关系。应当理解的是,空间相对术语旨在包含除了器件在图中所描述的方位之外的在使用或操作中的不同方位。例如,如果附图中的器件被倒置,则描述为“在其他器件或构造上方”或“在其他器件或构造之上”的器件之后将被定位为“在其他器件或构造下方”或“在其他器件或构造之下”。因而,示例性术语“在……上方”可以包括“在……上方”和“在……下方”两种方位。该器件也可以其他不同方式定位,如旋转90度或处于其他方位,并且对这里所使用的空间相对描述作出相应解释。
在上面详细的说明中,参考了附图,附图形成本文的一部分。在附图中,类似的符号典型地确定类似的部件,除非上下文以其他方式指明。在详细的说明书、附图及权利要求书中所描述的图示说明的实施方案不意味是限制性的。在不脱离本文所呈现的主题的精神或范围下,其他实施方案可以被使用,并且可以作其他改变。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种多目标导向模糊测试方法,其特征在于,包括:
根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中所述多个目标序列的优先级用以表征种子多特征的综合能力;
在被测程序执行前,基于llvm对所述被测程序进行插桩操作以生成插桩的二进制程序,所述插桩的二进制程序在所述被测程序执行过程中实时获取所述被测程序的运行信息;
根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子;
对所述测试种子进行变异处理并生成测试输入;
将所述测试输入导入所述被测程序进行执行,并通过所述插桩的二进制程序获取所述被测程序测试过程中的运行信息;
从所述被测程序测试过程中的运行信息中获取所述测试输入的路径分支覆盖度和目标序列覆盖度;
如果所述路径分支覆盖度满足第一预设条件和/或所述目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到所述测试种子的分配能量;
如果所述目标序列覆盖度满足第二预设条件,则将所述测试种子放入导向种子队列,否则将所述测试种子放入覆盖种子队列;
其中,所述根据预设的多个目标基本块从被测程序中获取对应的多个目标序列的步骤包括:
利用预先编写的图抽取工具对所述被测程序的代码进行处理以构建得到所述被测程序的函数调用图和所述被测程序中每个函数的程序控制流图;
将所述被测程序的函数调用图转化成第一支配树,并将预设的每个所述目标基本块所在函数对应的控制流图转化成第二支配树;
根据所述第一支配树获取所述被测程序的主函数到所述目标基本块所在函数路径上的第一必要基本块,其中,获取的多个所述第一必要基本块构成第一序列;
根据所述第二支配树获取所述目标基本块所在函数的第一个基本块到所述目标基本块路径上的第二必要基本块,其中,获取的多个所述第二必要基本块构成第二序列;
取所述第一序列和所述第二序列的并集得到所述目标基本块对应的目标序列。
3.根据权利要求2所述的多目标导向模糊测试方法,其特征在于,所述根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子的步骤包括:
如果所述运行信息中主程序阶段反馈值等于第一设定值,则说明所述模糊测试主程序处于探索阶段,从所述覆盖种子队列中提取测试种子;
如果所述运行信息中主程序阶段反馈值等于第二设定值,则说明所述模糊测试主程序处于利用阶段,从所述导向种子队列中提取测试种子。
4.根据权利要求3所述的多目标导向模糊测试方法,其特征在于,所述根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子的步骤还包括:
如果所述模糊测试主程序处于探索阶段,且所述导向种子队列中导向种子数量与总种子数量的比值大于第一比例阈值,则所述模糊测试主程序从探索阶段切换到利用阶段;
如果所述模糊测试主程序处于利用阶段且在预设时间阈值内所述导向种子队列中导向种子数量保持不变,则所述模糊测试主程序从利用阶段切换到探索阶段,并自适应更新所述第一比例阈值。
5.根据权利要求1所述的多目标导向模糊测试方法,其特征在于,所述运行信息包括分支覆盖信息和目标执行路径信息;
根据所述分支覆盖信息和目标执行路径信息计算得到所述测试输入的路径分支覆盖度和目标序列覆盖度。
7.一种多目标导向模糊测试系统,其特征在于,包括:
序列增强模块,被配置为根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中所述多个目标序列的优先级用以表征种子多特征的综合能力;
插装模块,被配置为在被测程序执行前,基于llvm对所述被测程序进行插桩操作以生成插桩的二进制程序,所述插桩的二进制程序在所述被测程序执行过程中实时获取所述被测程序的运行信息;
种子提取模块,被配置为根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子;
输入生成模块,被配置为对所述测试种子进行变异处理并生成测试输入;
测试模块,被配置为将所述测试输入导入所述被测程序进行执行,并通过所述插桩的二进制程序获取所述被测程序测试过程中的运行信息;
获取模块,被配置为从所述被测程序测试过程中的运行信息中获取所述测试输入的路径分支覆盖度和目标序列覆盖度;
能量分配模块,被配置为如果所述路径分支覆盖度满足第一预设条件和/或所述目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到所述测试种子的分配能量;
以及,新种子导入模块,被配置为如果所述目标序列覆盖度满足第二预设条件,则将所述测试种子放入导向种子队列,否则将所述测试种子放入覆盖种子队列;
其中,所述序列增强模块还被配置为利用预先编写的图抽取工具对所述被测程序的代码进行处理以构建得到所述被测程序的函数调用图和所述被测程序中每个函数的程序控制流图;将所述被测程序的函数调用图转化成第一支配树,并将预设的每个所述目标基本块所在函数对应的控制流图转化成第二支配树;根据所述第一支配树获取所述被测程序的主函数到所述目标基本块所在函数路径上的第一必要基本块,其中,获取的多个所述第一必要基本块构成第一序列;根据所述第二支配树获取所述目标基本块所在函数的第一个基本块到所述目标基本块路径上的第二必要基本块,其中,获取的多个所述第二必要基本块构成第二序列;取所述第一序列和所述第二序列的并集得到所述目标基本块对应的目标序列。
8.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器
上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时
实现如权利要求1至6中任一项所述的多目标导向模糊测试方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,
所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述
的多目标导向模糊测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111533157.7A CN114417348B (zh) | 2021-12-15 | 2021-12-15 | 多目标导向模糊测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111533157.7A CN114417348B (zh) | 2021-12-15 | 2021-12-15 | 多目标导向模糊测试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114417348A CN114417348A (zh) | 2022-04-29 |
CN114417348B true CN114417348B (zh) | 2023-03-28 |
Family
ID=81268427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111533157.7A Active CN114417348B (zh) | 2021-12-15 | 2021-12-15 | 多目标导向模糊测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114417348B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115576562B (zh) * | 2022-09-29 | 2023-05-12 | 中国科学院软件研究所 | 基于二进制重写的模糊测试插桩优化方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797405A (zh) * | 2020-07-01 | 2020-10-20 | 北京华昱卓程软件有限公司 | 一种序列导向的混合模糊测试方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764992B (zh) * | 2019-08-26 | 2023-06-16 | 北京丁牛科技有限公司 | 测试方法及装置 |
CN111858358B (zh) * | 2020-07-23 | 2023-07-25 | 中国人民解放军国防科技大学 | 一种面向二进制代码的导向型模糊测试方法 |
-
2021
- 2021-12-15 CN CN202111533157.7A patent/CN114417348B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797405A (zh) * | 2020-07-01 | 2020-10-20 | 北京华昱卓程软件有限公司 | 一种序列导向的混合模糊测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114417348A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112069061B (zh) | 深度学习梯度指导变异的软件安全漏洞检测方法及系统 | |
Baresel et al. | Fitness function design to improve evolutionary structural testing | |
Wegener et al. | Verifying timing constraints of real-time systems by means of evolutionary testing | |
CN109902024B (zh) | 一种程序路径敏感的灰盒测试方法及装置 | |
CN108647520A (zh) | 一种基于脆弱性学习的智能模糊测试方法与系统 | |
CN114417348B (zh) | 多目标导向模糊测试方法及系统 | |
CN110162972B (zh) | 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 | |
Lin et al. | Test coverage optimization for large code problems | |
CN114064506B (zh) | 一种基于深度神经网络的二进制程序模糊测试方法及系统 | |
CN114840857A (zh) | 基于深度强化学习与多级覆盖策略的智能合约模糊测试方法及系统 | |
CN112908391B (zh) | 一种基于数学模型的闪存分类方法及装置 | |
Metta et al. | BMC+ Fuzz: Efficient and effective test generation | |
CN111897734B (zh) | 基于在线式增量学习的模糊测试用例选择方法和装置 | |
Aljahdali et al. | The limitations of genetic algorithms in software testing | |
CN114780967B (zh) | 基于大数据漏洞挖掘的挖掘评估方法及ai漏洞挖掘系统 | |
CN112990461A (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
CN116827836A (zh) | 基于细粒度覆盖信息引导的协议漏洞挖掘测试方法与系统 | |
CN111459796A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN114840856A (zh) | 一种状态感知的物联网可信执行环境模糊测试方法和系统 | |
CN114661578A (zh) | 基于支配点覆盖的导向式灰盒模糊测试方法及装置 | |
CN114840418A (zh) | 模糊测试方法及装置 | |
Boussaa et al. | A novelty search-based test data generator for object-oriented programs | |
CN111949555A (zh) | 一种基于多维向量和规则脚本的随机测试方法及装置 | |
Sharma et al. | A literature survey on automation of test data generation for branch coverage testing using genetic algorithm | |
US20240053968A1 (en) | Generate Program Directives Using Beam Search Guided by Neural Network Cost Model |
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 |