CN111897733A - 一种基于最小集合覆盖的模糊测试方法和装置 - Google Patents
一种基于最小集合覆盖的模糊测试方法和装置 Download PDFInfo
- Publication number
- CN111897733A CN111897733A CN202010790762.1A CN202010790762A CN111897733A CN 111897733 A CN111897733 A CN 111897733A CN 202010790762 A CN202010790762 A CN 202010790762A CN 111897733 A CN111897733 A CN 111897733A
- Authority
- CN
- China
- Prior art keywords
- test case
- test
- minimum
- case
- coverage
- 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.)
- Granted
Links
Images
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
-
- 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于最小集合覆盖的模糊测试方法和装置,该方法利用深度神经网络为目标二进制程序产生测试用例集,并加入测试用例队列;利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合,以减少执行效果相同的重复测试用例的数量;以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,选择最优测试用例进行后续变异,继而实现模糊测试;将模糊测试过程中产生的有效测试用例加入深度神经网络测试用例训练集,离线地指导深度神经网络进行优化训练。使用本发明能够获得更小测试用例集以及更有效的测试用例,可以针对目标二进制程序进行有效地漏洞检测。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种基于最小集合覆盖的模糊测试方法和装置。
背景技术
模糊测试是漏洞挖掘领域的有效方法之一,其通过向目标系统或软件提供非预期的输入并监视异常结果来发现软件漏洞。由于模糊测试技术可以将大量的手工测试转换为高度的自动化测试,介于黑盒测试和白盒测试之间,因此在国内外漏洞挖掘领域被广泛使用。其中,生成并优先选取高质量的测试用例进行变异对于提高模糊测试的效率至关重要。
目前,有众多研究人员对模糊器中的测试用例生成过程进行了研究和改进,例如,Skyfire、Learn&Fuzz、SmartSeed、IFuzzer、NAUTILUS、Grimoire;此外,也有较多研究工作致力于测试用例选择过程的研究,例如,AFLFast、AFLGo、 QTEP、FairFuzz、COVERSET、Retecs、V-Fuzz、FuzzGuard、SAVIOR。上述工具虽然在很多场景下可以有效地生成和选择测试用例,但其仍存在以下两方面局限性:
(1)基于变异的模糊器诸如AFL通常无法有效测试需要处理结构化输入的目标程序,现有的改进工作主要从两方面进行,即,使用基于语法的分析辅助生成测试用例以及借助机器学习技术自动化生成测试用例。尽管基于语法的生成工作(例如,IFuzzer、NAUTILUS)能够生成通过语法检查的测试用例,但是上述工作通常需要对程序源代码进行语法分析,从而无法有效针对二进制程序进行测试;而基于机器学习的生成工作(例如,Skyfire、Learn&Fuzz)虽然可以自动生成有效的测试用例,但也大多并未考虑生成模型和模糊测试反馈的交互,而两者的交互能够有效提高模型生成测试用例的有效性。
(2)现有的针对测试用例选择的研究工作并未考虑每个测试用例的执行效果是否相同,例如,并未考虑测试用例所覆盖的路径是否相同,而重复选择路径覆盖相同的测试用例进行测试会造成资源浪费,尤其是对于使用机器学习等技术自动化生成测试用例的工作而言,机器学习模型能够以较低的代价自动生成数以千计的测试用例,但对这些测试用例一一进行测试却需要花费较长时间,并且可能会影响模糊测试的测试效率,因此,需要进一步研究如何有效预筛选大量测试用例,以减少重复测试用例的数量。
发明内容
有鉴于此,本发明提供了一种基于最小集合覆盖的模糊测试方法和装置,基于最小集合覆盖理论,获得更小用例集以及更有效的测试用例,可以针对目标二进制程序进行有效地漏洞检测。
为了解决上述技术问题,本发明是这样实现的:
一种基于最小集合覆盖的模糊测试方法,包括:
利用深度神经网络为处理结构化或非结构化输入的目标二进制程序产生测试用例集,并加入测试用例队列;
利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合,以减少执行效果相同的重复测试用例的数量;
以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,选择最优测试用例进行后续变异,继而实现模糊测试;
将模糊测试过程中产生的覆盖新路径的有效测试用例加入深度神经网络测试用例训练集,离线地指导深度神经网络进行优化训练。
优选地,所述以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,选择最优测试用例进行后续变异为:
采用崩溃数量和最大路径执行深度对所述最小用例集合中的测试用例进行排序,先按照崩溃数量从大到小的顺序进行排序,在崩溃数量相同的情况下,按照最大路径执行深度从大到小的顺序进行排序;对排序后的第一个测试用例进行后续变异。
优选地,所述利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合包括:
采用执行目标二进制程序的方式,确定测试用例对应的基本块覆盖信息、路径深度信息和崩溃信息;
确定最小用例集合时,确定每个测试用例所覆盖的基本块;将基本块转换为相应的唯一标识形式,构造每个测试用例所覆盖的基本块集合;
将所有测试用例所覆盖的基本块集合取并集,获得基本块总覆盖集合;以最大化覆盖基本块总覆盖集合、最小化测试用例数量为准则,确定符合准则的测试用例组,作为所述最小用例集合。
优选地,采用智能优化算法求解所述符合准则的测试用例组。
优选地,所述智能优化算法为遗传算法、粒子群优化算法、蚁群优化算法或模拟退火算法。
优选地,所述深度神经网络采用具有长短期记忆模型的循环神经网络模型实现,并引入注意力机制以提高模糊测试生成的质量,同时离线地接收模糊测试反馈的有效测试用例以加入测试用例训练集进行调优。
本发明还提供了一种基于最小集合覆盖的模糊测试装置,包括:测试用例生成模块、测试用例选择模块、测试用例变异模块和目标程序执行模块;
测试用例生成模块,用于利用深度神经网络为处理结构化或非结构化输入的目标二进制程序产生测试用例集,并加入测试用例队列;
测试用例选择模块,用于利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合,以减少执行效果相同的重复测试用例的数量;以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,获得最优测试用例;
测试用例变异模块,用于对所述最优测试用例进行变异;
目标程序执行模块,用于使用测试用例变异模块生成的测试用例执行目标二进制程序,将覆盖新路径的有效测试用例添加到所述测试用例队列中,同时发送至测试用例生成模块,加入深度神经网络测试用例训练集,用以离线地指导深度神经网络进行优化训练。
优选地,所述测试用例选择模块包括去重子模块和择优子模块;
所述去重子模块,用于利用通过执行目标二进制程序获取的测试用例对应的基本块覆盖信息,确定每个测试用例所覆盖的基本块;将基本块转换为相应的唯一标识形式,构造每个测试用例所覆盖的基本块集合;将所有测试用例所覆盖的基本块集合取并集,获得基本块总覆盖集合;以最大化覆盖基本块总覆盖集合、最小化测试用例数量为准则,确定符合准则的测试用例组,作为所述最小用例集合;
所述择优子模块,用于以设定的一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,获得最优测试用例。
优选地,所述择优子模块采用崩溃数量和最大路径执行深度对所述最小用例集合中的测试用例进行排序,先按照崩溃数量从大到小的顺序进行排序,在崩溃数量相同的情况下,按照最大路径执行深度从大到小的顺序进行排序;对排序后的第一个测试用例进行后续变异。
优选地,所述测试用例生成模块所采用的深度神经网络为具有长短期记忆模型的循环神经网络,通过引入注意力机制以提高模糊测试生成的质量,同时接收模糊测试反馈的有效测试用例以加入测试用例训练集进行离线调优。
有益效果:
针对局限性(1),本发明借助深度神经网络技术,构建并训练测试用例自动化生成模型。该模型无需人工参与,即可自动为处理结构化数据格式或非结构化数据格式的目标二进制程序生成格式规范的测试用例;此外,与基于覆盖的模糊器进行结合,所述测试用例自动化生成模型为模糊器提供测试用例,而模糊器变异过程生成的新的有效测试用例将会作为反馈信息以离线地指导模型生成更有效的测试用例。这种离线式的交互权衡了模糊测试的性能和效率,从而使模糊器能够在不引入过多开销的前提下高效地自动生成格式规范的测试用例。
针对局限性(2),提出了选择性排序的思路,借助最小集合覆盖理论,预先筛选模型生成的测试用例以避免选择执行效果相同的重复测试用例,即,从“去重”的角度,筛选具有最大化路径覆盖率的最小测试用例集合,然后在此基础上根据崩溃数量和最大路径深度等信息从“优选”的角度进行测试用例的排序和选择,可以高效地选择到高质量的测试用例进行优先变异,从而提高模糊测试效率。
附图说明
图1为基于最小集合覆盖的模糊测试方法流程图。
图2为测试用例生成模块的具体流程。
图3为测试用例选择部分的具体实施流程。
具体实施方式
本发明针对现有的基于变异的模糊器无法高效地为处理结构化输入的目标二进制程序生成格式规范的测试用例以及在测试用例选择时并未考虑测试用例执行效果的问题,提出一种基于最小集合覆盖的模糊测试方法(如图1所示),以期提高模糊测试的效率。该方法的主要改进在于测试用例生成和测试用例选择两个部分,其中,测试用例生成部分采用基于深度神经网络的测试用例生成方法,能够为需要结构化或非结构化输入的目标二进制程序自动生成有效的测试用例,并与基于变异的模糊器相结合,借助模糊测试过程的反馈信息离线地指导生成模型,即将模糊测试过程生成的有效的测试用例加入深度神经网络测试用例训练集,用于优化深度神经网络训练过程以生成更加有效的测试用例。测试用例选择部分采用基于最小集合覆盖的测试用例选择方法,通过选择具有最大化路径覆盖率且测试用例数量最少的测试用例集合,对测试用例生成模块生成的大量测试用例进行有效地预筛选,以减少执行效果重复的测试用例的数量,在此基础上,通过综合考虑崩溃数量和最大路径深度的选择标准,对预筛选后的最小用例集合进行进一步排序和选择,实现选择性地排序,将选择最优的高质量测试用例作为下一轮待变异的测试用例进行后续变异。此外,本方案还借助硬件程序追踪执行目标二进制程序,以获得准确的基本块覆盖等反馈信息。
通过本发明方案,主要解决了目前大多数模糊测试工具尚未考虑测试用例的执行效果,从而可能导致在测试过程中选取大量重复测试用例的问题;解决了目前基于变异的模糊器大多无法为处理结构化数据的目标二进制程序有效生成测试用例,而大多数基于语法的模糊器无法针对目标二进制程序进行高效测试的问题;解决了模糊测试工具由于无法有效选择高质量测试用例而导致的模糊测试效率较低的问题。
下面结合附图并举实施例,对本发明进行详细描述。
参见图1,本发明基于最小集合覆盖的模糊测试方法具体包括如下步骤:
步骤一、利用深度神经网络产生测试用例集,并加入测试用例队列。
参见图2示出的测试用例生成和使用过程,其中本步骤一涉及图2的模型训练部分和测试用例生成部分。该测试用例生成过程包括步骤101和102。
步骤101、训练深度神经网络模型。
参见图2中的模型训练框。深度神经网络模型训练阶段主要包括以下3个子步骤。
①收集训练数据:
在对模型进行训练之前,需要提供模型学习所需的训练数据,本发明采用两种方式收集该训练集,即编写爬取规则对公共数据库和网页进行数据爬取以及使用模糊器在测试过程中生成的有效测试用例。此外,为了尽可能保证学习过程的准确性,本发明优先采用模糊器生成的有效测试用例进行学习,以期生成高质量的测试用例,进而提高模糊测试效率。
②预处理训练数据:
由于深度神经网络模型更适合处理表示成矩阵形式的具有定量值的数据,因此要对前一步获取的训练数据进行预处理,使其能够转换成符合模型输入标准的训练数据集。
为了把字符型的数据转换为适合于深度神经网络模型的矩阵形式的数据,首先需要遍历训练数据集中的字符并生成唯一字符集,并按照一定的规则将字符集中的每个字符一对一地的映射到数据矩阵,形成字符和数字向量的双向映射表,以实现字符和矩阵间的相互转换。目前常见的生成方法有one-hot编码、排序生成等。本发明借鉴Word2Vec原理,通过对数据进行矩阵映射的方法实现对复杂数据集的建模,这有利于整合非字符型或字符组合型等复杂数据间的映射关系,增强深度神经网络模型的适用性。基于所生成的双向映射表,对输入的训练数据集进行预处理,将字符型数据集映射转换为深度神经网络模型所需的数字矩阵数据集。
③构建并训练神经网络模型。深度神经网络模型的构建和训练是自动生成测试用例的关键环节。首先要选取适合于测试用例生成的模型,然后将向量化后的训练数据集输入至该模型进行迭代训练,并评估训练效果,通过迭代一定的次数之后将其优化产生的模型网络参数进行保存。本发明借助循环神经网络模型(Recurrent Neural Network,RNN)中的长短期记忆模型(Long-Short Term Memory,LSTM)构建测试用例自动生成模型,并引入注意力机制以提高模糊测试生成的质量。
步骤102、使用学习的神经网络模型生成测试用例。
参见图2的测试用例生成框。在模型训练好之后,便可使用学习好的神经网络模型生成新的测试用例。本发明加载模型及其网络参数以自动循环预测新序列数据的概率矩阵,并根据预处理转换规则将该概率矩阵映射为新的测试用例。该过程将生成大量新测试用例并加入测试用例队列用于后续的模糊测试。
步骤二、测试用例选择
本发明中的测试用例选择模块借助最小集合覆盖理论,将测试用例筛选问题转化为最小集合覆盖问题,并通过构造集合覆盖模型,利用智能优化算法求解得到具有最大化路径覆盖率且测试用例数量最少的测试用例集合,以实现对前一步骤中生成的大量测试用例进行有效预筛选,减少大量执行效果相同的重复测试用例的数量。进一步的,本发明还考虑利用一个以上的测试用例选择标准,对所述筛选后的最小用例集合中的测试用例进行进一步排序,选择最优测试用例进行后续变异,继而实现模糊测试。
在本发明中,测试用例选择部分的具体实施流程如图3所示,具体包括四个阶段,分别是测试用例执行信息记录、集合覆盖模型构造、智能优化算法求解以及用例筛选和排序。
测试用例执行信息记录阶段:使用神经网络模型新生成的测试用例依次执行目标二进制程序;借助硬件程序追踪技术对目标二进制程序执行过程中的基本块和崩溃等信息进行收集和记录,其输入是模型新生成的测试用例,输出是测试用例的基本块覆盖信息、路径深度信息和崩溃信息。收集信息时,收集的是目标二进制程序执行时对应的基本块信息,同时记录目标二进制程序的路径深度信息和崩溃信息。
集合覆盖模型构造阶段:利用目标二进制程序执行时获取的基本块信息,确定每个测试用例所覆盖的基本块,并将基本块转换为相应的唯一标识形式,构造每个测试用例所覆盖的基本块集合;将所有测试用例所覆盖的基本块集合取并集,获得基本块总覆盖集合,即形成集合覆盖模型。
智能优化算法求解阶段:将测试用例集的筛选问题转化为最小集合覆盖问题,基于前述构造的集合覆盖模型,以最大化覆盖基本块总覆盖集合、最小化测试用例数量为准则,确定符合准则的测试用例组,作为所述最小用例集合。
用例筛选和选择阶段:针对前一阶段生成的最小用例集合,根据测试用例触发的崩溃数量以及最大路径深度信息对测试用例进行进一步排序,以辅助模糊测试选取下一个待变异的测试用例进行后续模糊测试。
具体来说,步骤二的测试用例选择部分主要包括以下几步:
步骤201、记录测试用例执行信息。
由于构造集合覆盖模型时需要预先记录每个测试用例的基本块覆盖信息等相关信息,因此需要使用神经网络模型新生成的测试用例依次执行目标二进制程序。在执行目标二进制程序过程中,借助硬件程序追踪技术收集目标二进制程序的执行信息,并将记录的追踪信息转换为程序执行时对应的基本块信息,同时获取目标二进制程序在本次执行中对应的路径深度信息和崩溃信息,并进行记录,以辅助进行后续的集合覆盖模型构造。
步骤202、构造集合覆盖模型,获得最大化路径覆盖率的最小用例集合。
在模糊测试中,筛选出能够最大化路径覆盖率或崩溃数量的测试用例的问题可以转化为组合数学中的最小集合覆盖问题,进而通过粒子群算法等智能优化算法求解上述最小集合覆盖问题,以实现测试用例的筛选。
最小集合覆盖问题可以描述为:已知元素集合U,子集集合簇并且满足如果在子集集合簇中的每个子集均计算相应的代价,则最小集合覆盖问题的目的是寻找一个子集集合簇使得CS满足且同时CS中各子集元素的代价之和最小。
为描述测试用例选择的集合覆盖建模过程,本发明首先做如下定义。
定义1集合覆盖问题(the set covering problem):假设已知元素集合 U={u1,u2,…,um}和由该集合的子集组成的子集集合簇S={S1,S2,…,Sn},其中 1≤i≤n。集合覆盖问题的目标是寻找一个子集集合簇使得CS满足且
定义2最小集合覆盖问题(the minimum set covering problem,MSCP):假设已知元素集合U={u1,u2,…,um}和由该集合的子集组成的子集集合簇 S={S1,S2,…,Sn},其中1≤i≤n。最小集合覆盖问题的目标是寻找一个子集集合簇CS,使其满足CS是集合U的一个集合覆盖,且集合CS中元素的数量最少。
定义3最小加权集合覆盖问题(the minimum weight set covering problem,MWSCP):已知元素集合U={u1,u2,…,um}和由该集合的子集组成的子集集合簇S={S1,S2,…,Sn},其中1≤i≤n,且对于子集集合簇S中的任意一个子集Si均有相应的代价cost(Si)>0。最小加权集合覆盖问题就是要发现一个子集集合簇使其满足CS是集合U的一个集合覆盖,同时满足CS中的所有子集元素的代价之和最小。
基于该理论,本步骤测试用例筛选的集合覆盖建模过程为:
①初始化测试用例:
在测试用例选择前,首先根据各个测试用例的执行信息,依次对每个测试用例所覆盖的基本块进行唯一标识,并以该测试用例所执行的基本块为元素组成集合Si,并由Si组成测试用例子集集合簇S={S1,S2,…,Sn}。例如,假设测试用例队列中共有n=6个测试用例,每个测试用例可以初始化为以下基本块,即测试用例执行过程中所覆盖的目标程序的基本块。
S1={1,2,3,4,5}S2={5,6,9,10}
S3={1,4,7,10}S4={3,6,8,11}
S5={7,8,9,10}S6={9,11,12}
其中,第一个测试用例基本块集Si包含5个元素,这些元素表示使用测试用例i执行目标二进制程序可以覆盖的5个基本块的唯一标识。
②计算测试用例的累积基本块
在对每个测试用例进行初始化后,通过对各个测试用例基本块集取并集可以计算所有测试用例的基本块总覆盖集合,这里称为累积基本块集合U,其计算公式如式(1)所示。
其中,U={u1,u2,…,um}(u为基本块元素标识),即累积基本块集合U为测试用例所覆盖的所有基本块元素组成的集合。
③以最大化覆盖基本块总覆盖集合、最小化测试用例数量为准则,确定符合准则的测试用例组,作为最小用例集合。
在获得测试用例的累积基本块之后,可以计算集合U的集合覆盖CS,也即集合S的子集例如,集合S的子集CS1={S1,S2,S5,S6}就是集合U的一个集合覆盖,也是最小用例集合。需要注意的是,通常情况下集合覆盖的结果并不唯一,在覆盖导向的模糊测试中,为了提高测试效率,需要在最大化基本块覆盖的前提下尽可能减少测试用例的数量,因此,需要考虑在相关约束条件下求解最优解,例如,可以选取集合覆盖中子集数量最少的解作为输出,以进行后续的模糊测试。计算最优集合覆盖的解也是智能优化求解阶段的主要工作。
最小用例集合的求解可以采用智能优化算法实现。智能优化算法主要是受到人类智能、生物群体社会性或自然现象规律的启发而提出的,在解决优化问题上具有独特的优势。目前,智能优化算法已经在许多方面得到了应用,常用的智能优化算法包括遗传算法(Genetic Algorithms,GA)、粒子群优化算法 (Particle Swarm Optimization,PSO)、蚁群优化算法(Ant Colony Optimization, ACO)、模拟退火算法(Simulated Annealing,SA)等。
上述智能优化算法虽然在理论上还远不如传统优化算法完善,往往也不能确保解的最优性,通常只能视为“元启发式方法”(meta-heuristic)。但从应用的角度看,这些算法一般不要求目标函数和约束的连续性与凸性,对计算中的不确定性也有很强的适应能力,这恰好适合于模糊测试用例筛选中对最优集合覆盖的求解要求。因此,本发明借助上述智能优化算法,例如粒子群优化算法,求解步骤202中构造的最小集合覆盖模型,以获得具有最大化路径覆盖率且测试用例数量最少的最小用例集合,对该最小用例集合进行保存,以辅助模糊测试选取下一个待变异的测试用例。
这里以粒子群优化算法为例,简单介绍最小集合覆盖问题的求解过程。由于最小集合覆盖求解属于组合优化问题,是离散的,不适合使用解决连续优化问题的标准粒子群优化算法PSO,因此这里使用离散粒子群优化算法BPSO进行求解。BPSO与PSO类似,粒子群中的每个粒子均是求解空间中的一个候选解,而不同之处在于,BPSO对各个粒子进行编码时采用长度为N的二进制码 (即0或1),其长度N即为当前测试用例的数量。例如,第m个粒子(即候选解)的二进制编码为CSm={S1m,S2m,…,SNm},其中,Sim=1(或0)表示测试用例i被选取(或不被选取),i∈(1,2,…,N),m∈(1,2,…,P),P为粒子群中粒子的数量。对各个粒子进行随机初始化后,根据所选取的测试用例覆盖的累积基本块以及测试用例数量计算各个粒子的适应度;对于每个粒子,将它经历过的适应度值最高的位置作为局部最优,将所有粒子经历过的适应度最高的位置作为全局最优;之后,各个粒子将根据其局部最优和全局最优指导粒子的迭代更新,直至达到最大迭代次数。此时,将位置最优的粒子(即候选解)中值对应为1的测试用例进行保留,作为筛选后的最小用例集合。
步骤203、测试用例筛选和选择。
上一步骤中求解的最小用例集合所对应的测试用例即为预筛选后的结果,然后将对筛选后的结果进行进一步排序,以优化模糊测试中下一个待变异测试用例的选择过程。测试用例排序可以根据多种标准进行,例如,文件大小、执行时间、崩溃数量、路径深度等。本实施例中的排序过程主要依据筛选后的测试用例子集所触发的崩溃数量以及最大路径执行深度,即,在筛选后的测试用例子集中,触发崩溃数量较多的测试用例具有较高的优先选择权,而触发崩溃较少的测试用例则具有相对较低的优先选择权;在崩溃数量相同的情况下,路径深度最大的测试用例具有较高的优先选择权,而路径深度较小的测试用例则具有相对较低的优先选择权。选取排序后的最小用例集合中的第一个测试用例进行后续模糊测试。
步骤三、使用步骤二选择的测试用例进行后续模糊测试。
基于前一步骤中生成的测试用例,该步骤对该优选测试用例进行变异处理,利用变异的测试用例进行模糊测试。变异生成的测试用例中能够覆盖新路径的测试用例被称为有效测试用例。有效测试用例不仅会加入测试用例队列中,而且还会将其保存至测试用例生成模块中神经网络模型所需的训练数据集中以离线地辅助模型进行更有效的训练。
至此,本流程结束。
为了实现上述方案,本发明还提供了一种基于最小集合覆盖的模糊测试装置,如图1所示,其包括测试用例生成模块、测试用例选择模块、测试用例变异模块和目标程序执行模块。
测试用例生成模块,用于利用深度神经网络为处理结构化或非结构化输入的目标二进制程序产生测试用例集,加入测试用例队列。在本发明一优选实施例中,深度神经网络采用具有长短期记忆模型的循环神经网络,通过引入注意力机制以提高模糊测试生成的质量,同时离线地接收模糊测试反馈的有效测试用例以加入测试用例训练集进行调优。
测试用例选择模块,用于利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合,以减少执行效果相同的重复测试用例的数量;以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,获得最优测试用例;
测试用例变异模块,用于对所述最优测试用例进行变异;
目标程序执行模块,用于使用测试用例变异模块生成的测试用例执行目标二进制程序,将覆盖新路径的有效测试用例添加到所述测试用例队列中,同时发送至测试用例生成模块,加入深度神经网络测试用例训练集,用以离线地指导深度神经网络进行优化训练。
上述测试用例选择模块包括去重子模块和择优子模块;
去重子模块,用于利用通过执行目标二进制程序获取的测试用例对应的基本块覆盖信息,确定每个测试用例所覆盖的基本块;将基本块转换为相应的唯一标识形式,构造每个测试用例所覆盖的基本块集合;将所有测试用例所覆盖的基本块集合取并集,获得基本块总覆盖集合;以最大化覆盖基本块总覆盖集合、最小化测试用例数量为准则,确定符合准则的测试用例组,作为所述最小用例集合。
择优子模块,用于以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,获得最优测试用例。在本发明一优选实施例中,择优子模块采用崩溃数量和最大路径执行深度对所述最小用例集合中的测试用例进行排序,先按照崩溃数量从大到小的顺序进行排序,在崩溃数量相同的情况下,按照最大路径执行深度从大到小的顺序进行排序;对排序后的第一个测试用例进行后续变异。
综上所述,本发明的优势如下:
在测试用例生成过程中,为了能够为多种目标二进制程序自动生成格式规范的测试用例,本发明实现了基于深度神经网络的模糊测试用例生成方法,并与基于变异的模糊器相结合,借助模糊测试过程的反馈信息离线地指导生成模型。在测试用例选择过程中,为了筛选模型生成的大量测试用例中执行效果重复的测试用例并优先选择高质量的测试用例进行变异,提高模糊测试效率,本发明提出了选择性排序的思路,分别从“去重”和“优选”两个不同角度,实现基于最小集合覆盖的模糊测试用例选择方法。一方面,考虑测试用例的执行效果,借助最小集合覆盖理论,将测试用例筛选问题转化为最小集合覆盖问题,并构造集合覆盖模型,利用智能优化算法求解得到具有最大化路径覆盖率且测试用例数量最少的测试用例集合,以实现对测试用例的有效预筛选,减少大量重复测试用例的数量。另一方面,考虑筛选后的测试用例的质量,通过考虑崩溃数量和最大路径深度等测试用例选择标准,对筛选后的最小用例集合进行进一步排序和选择,以便能更快、更准确地选取高质量的测试用例优先进行后续变异,从而提高模糊测试的测试效率。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于最小集合覆盖的模糊测试方法,其特征在于,包括:
利用深度神经网络为处理结构化或非结构化输入的目标二进制程序产生测试用例集,并加入测试用例队列;
利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合,以减少执行效果相同的重复测试用例的数量;
以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,选择最优测试用例进行后续变异,继而实现模糊测试;
将模糊测试过程中产生的覆盖新路径的有效测试用例加入深度神经网络测试用例训练集,离线地指导深度神经网络进行优化训练。
2.如权利要求1所述的方法,其特征在于,所述以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,选择最优测试用例进行后续变异为:
采用崩溃数量和最大路径执行深度对所述最小用例集合中的测试用例进行排序,先按照崩溃数量从大到小的顺序进行排序,在崩溃数量相同的情况下,按照最大路径执行深度从大到小的顺序进行排序;对排序后的第一个测试用例进行后续变异。
3.如权利要求1所述的方法,其特征在于,所述利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合包括:
采用执行目标二进制程序的方式,确定测试用例对应的基本块覆盖信息、路径深度信息和崩溃信息;
确定最小用例集合时,确定每个测试用例所覆盖的基本块;将基本块转换为相应的唯一标识形式,构造每个测试用例所覆盖的基本块集合;
将所有测试用例所覆盖的基本块集合取并集,获得基本块总覆盖集合;以最大化覆盖基本块总覆盖集合、最小化测试用例数量为准则,确定符合准则的测试用例组,作为所述最小用例集合。
4.如权利要求3所述的方法,其特征在于,采用智能优化算法求解所述符合准则的测试用例组。
5.如权利要求4所述的方法,其特征在于,所述智能优化算法为遗传算法、粒子群优化算法、蚁群优化算法或模拟退火算法。
6.如权利要求1所述的方法,其特征在于,所述深度神经网络采用具有长短期记忆模型的循环神经网络模型实现,并引入注意力机制以提高模糊测试生成的质量,同时离线地接收模糊测试反馈的有效测试用例以加入测试用例训练集进行调优。
7.一种基于最小集合覆盖的模糊测试装置,其特征在于,包括:测试用例生成模块、测试用例选择模块、测试用例变异模块和目标程序执行模块;
测试用例生成模块,用于利用深度神经网络为处理结构化或非结构化输入的目标二进制程序产生测试用例集,并加入测试用例队列;
测试用例选择模块,用于利用最小集合覆盖理论,从所述测试用例队列中筛选出具有最大化路径覆盖率且测试用例数量最少的最小用例集合,以减少执行效果相同的重复测试用例的数量;以设定的一个或一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,获得最优测试用例;
测试用例变异模块,用于对所述最优测试用例进行变异;
目标程序执行模块,用于使用测试用例变异模块生成的测试用例执行目标二进制程序,将覆盖新路径的有效测试用例添加到所述测试用例队列中,同时发送至测试用例生成模块,加入深度神经网络测试用例训练集,用以离线地指导深度神经网络进行优化训练。
8.如权利要求7所述的装置,其特征在于,所述测试用例选择模块包括去重子模块和择优子模块;
所述去重子模块,用于利用通过执行目标二进制程序获取的测试用例对应的基本块覆盖信息,确定每个测试用例所覆盖的基本块;将基本块转换为相应的唯一标识形式,构造每个测试用例所覆盖的基本块集合;将所有测试用例所覆盖的基本块集合取并集,获得基本块总覆盖集合;以最大化覆盖基本块总覆盖集合、最小化测试用例数量为准则,确定符合准则的测试用例组,作为所述最小用例集合;
所述择优子模块,用于以设定的一个以上的测试用例选择标准,对所述最小用例集合中的测试用例进行排序,获得最优测试用例。
9.如权利要求8所述的装置,其特征在于,所述择优子模块采用崩溃数量和最大路径执行深度对所述最小用例集合中的测试用例进行排序,先按照崩溃数量从大到小的顺序进行排序,在崩溃数量相同的情况下,按照最大路径执行深度从大到小的顺序进行排序;对排序后的第一个测试用例进行后续变异。
10.如权利要求7所述的装置,其特征在于,所述测试用例生成模块所采用的深度神经网络为具有长短期记忆模型的循环神经网络,通过引入注意力机制以提高模糊测试生成的质量,同时接收模糊测试反馈的有效测试用例以加入测试用例训练集进行离线调优。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010790762.1A CN111897733B (zh) | 2020-08-07 | 2020-08-07 | 一种基于最小集合覆盖的模糊测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010790762.1A CN111897733B (zh) | 2020-08-07 | 2020-08-07 | 一种基于最小集合覆盖的模糊测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897733A true CN111897733A (zh) | 2020-11-06 |
CN111897733B CN111897733B (zh) | 2023-04-07 |
Family
ID=73246154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010790762.1A Active CN111897733B (zh) | 2020-08-07 | 2020-08-07 | 一种基于最小集合覆盖的模糊测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897733B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445709A (zh) * | 2020-11-30 | 2021-03-05 | 安徽工业大学 | 一种通过gan解决afl测试模型数据不平衡的方法及装置 |
CN112948277A (zh) * | 2021-04-30 | 2021-06-11 | 上海大学 | 一种基于耦合自编码器的模糊测试用例生成系统和方法 |
CN113392402A (zh) * | 2021-05-24 | 2021-09-14 | 国网湖北省电力有限公司电力科学研究院 | 一种基于模糊测试的电力物联网协议漏洞检测系统及方法 |
CN114064506A (zh) * | 2021-11-29 | 2022-02-18 | 电子科技大学 | 一种基于深度神经网络的二进制程序模糊测试方法及系统 |
WO2022127393A1 (en) * | 2020-12-15 | 2022-06-23 | International Business Machines Corporation | Reinforcement learning for testing suite generation |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375942A (zh) * | 2014-12-11 | 2015-02-25 | 无锡江南计算技术研究所 | 一种面向二进制的混合模糊测试方法 |
CN108416219A (zh) * | 2018-03-18 | 2018-08-17 | 西安电子科技大学 | 一种Android二进制文件漏洞检测方法及系统 |
CN109032942A (zh) * | 2018-07-24 | 2018-12-18 | 北京理工大学 | 一种基于afl的模糊测试框架 |
CN109117364A (zh) * | 2018-07-03 | 2019-01-01 | 中国科学院信息工程研究所 | 一种面向目标的测试用例生成方法及系统 |
CN109376535A (zh) * | 2018-08-14 | 2019-02-22 | 中国信息安全测评中心 | 一种基于智能化符号执行的漏洞分析方法及系统 |
CN109739755A (zh) * | 2018-12-27 | 2019-05-10 | 北京理工大学 | 一种基于程序追踪和混合执行的模糊测试系统 |
CN109902024A (zh) * | 2019-03-18 | 2019-06-18 | 中国人民解放军战略支援部队信息工程大学 | 一种程序路径敏感的灰盒测试方法及装置 |
US20200065234A1 (en) * | 2018-08-27 | 2020-02-27 | Synopsys, Inc. | Test case selection and ordering with covert minimum set cover for functional qualification |
-
2020
- 2020-08-07 CN CN202010790762.1A patent/CN111897733B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375942A (zh) * | 2014-12-11 | 2015-02-25 | 无锡江南计算技术研究所 | 一种面向二进制的混合模糊测试方法 |
CN108416219A (zh) * | 2018-03-18 | 2018-08-17 | 西安电子科技大学 | 一种Android二进制文件漏洞检测方法及系统 |
CN109117364A (zh) * | 2018-07-03 | 2019-01-01 | 中国科学院信息工程研究所 | 一种面向目标的测试用例生成方法及系统 |
CN109032942A (zh) * | 2018-07-24 | 2018-12-18 | 北京理工大学 | 一种基于afl的模糊测试框架 |
CN109376535A (zh) * | 2018-08-14 | 2019-02-22 | 中国信息安全测评中心 | 一种基于智能化符号执行的漏洞分析方法及系统 |
US20200065234A1 (en) * | 2018-08-27 | 2020-02-27 | Synopsys, Inc. | Test case selection and ordering with covert minimum set cover for functional qualification |
CN109739755A (zh) * | 2018-12-27 | 2019-05-10 | 北京理工大学 | 一种基于程序追踪和混合执行的模糊测试系统 |
CN109902024A (zh) * | 2019-03-18 | 2019-06-18 | 中国人民解放军战略支援部队信息工程大学 | 一种程序路径敏感的灰盒测试方法及装置 |
Non-Patent Citations (2)
Title |
---|
A FIORALDI 等: "AFL ++ : Combining Incremental Steps of Fuzzing Research", 《14TH USENIX WORKSHOP ON OFFENSIVE TECHNOLOGIES (WOOT 20)》 * |
王夏菁 等: "二进制程序漏洞挖掘关键技术研究综述", 《信息网络安全》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445709A (zh) * | 2020-11-30 | 2021-03-05 | 安徽工业大学 | 一种通过gan解决afl测试模型数据不平衡的方法及装置 |
CN112445709B (zh) * | 2020-11-30 | 2022-09-30 | 安徽工业大学 | 一种通过gan解决afl测试模型数据不平衡的方法及装置 |
WO2022127393A1 (en) * | 2020-12-15 | 2022-06-23 | International Business Machines Corporation | Reinforcement learning for testing suite generation |
GB2617737A (en) * | 2020-12-15 | 2023-10-18 | Ibm | Reinforcement learning for testing suite generation |
CN112948277A (zh) * | 2021-04-30 | 2021-06-11 | 上海大学 | 一种基于耦合自编码器的模糊测试用例生成系统和方法 |
CN113392402A (zh) * | 2021-05-24 | 2021-09-14 | 国网湖北省电力有限公司电力科学研究院 | 一种基于模糊测试的电力物联网协议漏洞检测系统及方法 |
CN114064506A (zh) * | 2021-11-29 | 2022-02-18 | 电子科技大学 | 一种基于深度神经网络的二进制程序模糊测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111897733B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897733B (zh) | 一种基于最小集合覆盖的模糊测试方法和装置 | |
Aldosari et al. | Fusion in sensor networks with communication constraints | |
CN108509335A (zh) | 基于遗传算法优化的软件测试数据生成方法 | |
CN112910690A (zh) | 基于神经网络模型的网络流量预测方法、装置及设备 | |
CN111582325B (zh) | 一种基于自动特征编码的多阶特征组合方法 | |
CN106649479A (zh) | 一种基于概率图的变压器状态关联规则挖掘方法 | |
CN110365603A (zh) | 一种基于5g网络能力开放的自适应网络流量分类方法 | |
Tucker et al. | Rgfga: An efficient representation and crossover for grouping genetic algorithms | |
CN109633748B (zh) | 一种基于改进遗传算法的地震属性优选方法 | |
Braun et al. | ENZO-M—a hybrid approach for optimizing neural networks by evolution and learning | |
CN115292532A (zh) | 基于伪标签一致性学习的遥感图像域适应检索方法 | |
Li et al. | Symbolic expression transformer: A computer vision approach for symbolic regression | |
CN114897085A (zh) | 一种基于封闭子图链路预测的聚类方法及计算机设备 | |
CN115438190B (zh) | 一种配电网故障辅助决策知识抽取方法及系统 | |
CN116956160A (zh) | 一种基于自适应树种算法的数据分类预测方法 | |
CN111209399A (zh) | 文本分类方法、装置和电子设备 | |
CN100380395C (zh) | 一种遥感影像的人工免疫监督分类方法 | |
CN115296898B (zh) | 用于构建网络入侵检测系统的多目标演化特征选择方法 | |
CN111310974A (zh) | 一种基于ga-elm的短期需水预测方法 | |
CN115795035A (zh) | 基于进化神经网络的科技服务资源分类方法、系统及其计算机可读存储介质 | |
Viswambaran et al. | Evolutionary design of long short term memory (lstm) ensemble | |
CN114595695A (zh) | 一种用于少样本意图识别系统的自训练模型构建方法 | |
Ledezma et al. | Empirical evaluation of optimized stacking configurations | |
CN110287124A (zh) | 一种自动标记软件错误报告并进行严重性识别的方法 | |
CN111624681A (zh) | 一种基于数据挖掘的飓风强度变化预测方法 |
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 |