CN108171064A - 一种用于灰盒模糊测试的样本格式保护方法及装置 - Google Patents
一种用于灰盒模糊测试的样本格式保护方法及装置 Download PDFInfo
- Publication number
- CN108171064A CN108171064A CN201810082824.6A CN201810082824A CN108171064A CN 108171064 A CN108171064 A CN 108171064A CN 201810082824 A CN201810082824 A CN 201810082824A CN 108171064 A CN108171064 A CN 108171064A
- Authority
- CN
- China
- Prior art keywords
- testing
- edge
- program
- testing material
- language material
- 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
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/3676—Test management for coverage analysis
-
- 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)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种用于灰盒模糊测试的样本格式保护方法及装置,包括:训练机器学习模型以使该模型可以识别测试语料的格式的正确性;对程序进行模糊测试时,从语料集中获取初始语料,对初始语料变异得到测试语料;应用测试语料对程序进行模糊测试,在模糊测试的过程中通过该模型确定测试语料的格式是否正确。当测试语料的格式正确且覆盖了已有测试语料没有覆盖的程序代码时,将该测试语料添加到语料集中,并重复这个过程。由此,将每轮模糊测试确定出的格式正确的语料添加到语料集中,最大程度的保证了语料集中语料的格式的正确性,提高了模糊测试效率。并且,通过位置集合对初始语料的变异进行指导,避免了无用的变异操作,进一步提高了测试效率。
Description
技术领域
本发明涉及软件测试领域,尤其涉及一种用于灰盒模糊测试的样本格式保护方法及装置。
背景技术
灰盒模糊测试被认为是漏洞挖掘领域最先进的技术。灰盒模糊测试以提高代码覆盖率为目的,通过轻量级插桩的方式记录程序执行路径,使用遗传算法指导模糊测试中测试用例的生成,对初始语料进行有导向性地变异,使程序快速到达某些难以覆盖的代码路径。与其他的模糊测试方法相比,灰盒模糊测试具有更高的效率和更好的实用性。灰盒模糊测试的代表性工具AFL,已经通过模糊测试技术挖掘出数以百计的高价值漏洞。
但是,由于灰盒模糊测试不需要提供格式信息,使其测试成本较低,但是这也带来了弊病,随着模糊测试的进行,由于持续的样本变异操作,会产生更多的格式错误的样本,这些格式错误的样本也会导致正在测试的程序进入错误的程序流程,降低了模糊测试的测试效率。
发明内容
有鉴于此,本发明实施例公开了一种用于灰盒模糊测试的样本格式保护方法及装置,保证了语料集中的语料格式为正确的,并阻止了循环使用该错误的测试语料,从而导致模糊测试的测试效率低的问题。
本发明实施例公开了一种用于灰盒模糊测试的样本格式保护方法,包括:
从语料集中获取初始语料;
对所述初始语料进行变异,得到测试语料;
将所述测试语料输入到程序中,对所述程序进行模糊测试,并在模糊测试的过程中通过预设的机器学习模型确定所述测试语料的格式是否正确;所述预设的机器学习模型已通过训练语料的预设的特征数据进行了训练;
在所述测试语料为格式正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;
若所述测试语料覆盖了已有测试语料没有覆盖的程序代码,将所述测试语料添加到所述初始语料中。
可选的,所述从语料集中获取测试语料,包括:
创建临时工作集合;
从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
从所述语料集中选取执行所述目标EDGE时代价最小的语料;
判断所述程序的EDGE中是否包含所述临时工作集合中的语料未覆盖到的EDGE;
若包含,返回执行从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
若不包含,将所述临时工作集输出为初始语料。
可选的,所述在模糊测试的过程中通过预设的机器学习模型获取所述测试语料的格式是否正确的结果,包括:
在模糊测试的过程中,获取所述测试语料对应的特征数据;
将所述特征数据输入到预设的机器学习模型中,获取所述测试语料的格式是否正确的结果。
可选的,所述对所述初始语料进行变异,得到测试语料,包括:
读取所述初始语料的变异位置;
判断预设的位置集合中是否包含所述变异位置;
若所述预设的位置集合中包含所述变异位置,阻止对所述当前的变异位置发生变异。
可选的,还包括:
若所述测试语料为格式错误的语料,将所述测试语料的变异位置添加到位置集合中。
可选的,机器学习模型的训练过程包括:
获取格式正确的训练语料;
将所述正确的训练语料输入到预设的训练程序中,以对所述训练程序进行模糊测试,并在模糊测试的过程中提取所述训练语料的特征数据;
将所述训练语料的特征数据输入到预设的贝叶斯分类器中进行分类学习。
可选的,所述预设的特征包括:
所述程序EDGE的种类数、EDGE的总数、程序执行时间、EDGE的方差、EDGE的均值、EDGE的最大值、EDGE的中位数、被判断为错误处理EDGE占程序全部错误处理EDGE的比例。
本发明还公开了一种用于灰盒模糊测试的数据格式保护装置,包括:
获取单元,用于从语料集中获取初始语料;
变异单元,用于对所述初始语料进行变异,得到测试语料;
识别单元,用于将所述测试语料输入到程序中,对所述程序进行模糊测试,并在模糊测试的过程中通过预设的机器学习模型确定所述测试语料的格式是否正确;所述预设的机器学习模型已通过训练语料的预设的特征数据进行了训练;
判断单元,用于在所述测试语料的格式为正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;
更新单元,用于若所述测试语料覆盖了已有测试语料没有覆盖的程序代码,将所述测试语料添加到所述初始语料中。
可选的,所述变异单元,包括:
创建子单元,用于创建临时工作集合;
第一选取子单元,用于从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
第二选取子单元,用于从所述语料集中选取执行所述目标EDGE时代价最小的语料;
第一判断子单元,用于判断所述程序的EDGE中是否包含所述临时工作集合中的语料未覆盖到的EDGE;
返回执行单元,用于若包含,返回执行从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
第一输出子单元,用于若不包含,将所述临时工作集输出为初始语料。
可选的,所述变异单元,包括:
读取子单元,用于读取所述初始语料的变异位置;
第二判断子单元,用于判断预设的位置集合中是否包含所述变异位置;
阻止子单元,用于若所述预设的位置集合中包含所述变异位置,阻止对所述当前的变异位置发生变异。
本发明实施例公开了一种用于灰盒模糊测试的样本格式保护方法及装置,首先训练机器学习模型以使机器学习模型可以识别测试语料的格式的正确性。当对程序进行模糊测试时,从语料集中获取初始语料,并将初始语料进行变异后得到测试语料,将测试语料输入到程序中以对该程序进行模糊测试;在程序测试的过程中通过预设的机器学习模型确定该测试语料的格式是否正确;在该测试语料的格式为正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;若该测试语料覆盖了已有测试语料没有覆盖的程序代码,将该测试语料添加到所述初始语料中。这样,将每轮模糊测试确定出的格式正确的语料添加到语料集中,最大程度的保证了语料集中语料的格式的正确性,提高了模糊测试效率。并且,通过随机贪心算法使得,选取到的测试语料不仅为格式正确的语料,而且可以覆盖到预设程序的所有EDGE。除此之外,通过预设的位置集合对初始语料的变异进行指导,避免了无用的变异操作,进一步提高了测试效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明实施例提供的一种用于灰盒模糊测试的样本格式保护方法的流程示意图;
图2示出了本发明实施例提供的一种用于从语料集中获取测试语料的过程的流程图;
图3示出了本发明实施例提供的一种对所述测试语料进行变异的方法的流程示意图;
图4示出了本发明实施例提供的一种用于灰盒模糊测试的样本格式保护的装置的结构示意图;
图5示出了本发明实施例提供的一种用于从语料集中获取测试语料的装置的结构示意图;
图6示出了本发明实施例提供的一种对测试语料进行变异的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
参考图1,示出了本发明实施例提供的一种用于灰盒模糊测试的样本格式保护方法的流程示意图,在本实施例中,该方法包括:
S101:从语料集中获取测试语料;
本实施例中,语料集中包含多个语料,当需要执行模糊测试时,需要从语料集中选取模糊测试所需的测试样本,为了提高模糊测试的效率,可以通过保证选取到的测试样本为格式正确的测试语料,并且测试语料可以覆盖预设程序所有的EDGE,具体的选取方法下文中会详细介绍,在这里就不再赘述。
需要说明的是,在程序中随机插桩,将程序分成大小不等的块,程序在块与块之间的跳转称为EDGE。
S102:对所述初始语料进行变异,得到测试语料;
本实施例中,对语料进行变异的方法包括多种,执行语料的变异时,需要根据测试需求进行相应的变异。
为了提高测试语料的准确性,还可以根据已学习到的非法变异位置,阻止生成格式错误的语料,具体的,在以下的实施例三中,进行详细的介绍,在这里就不再赘述。
S103:将所述测试语料输入到程序中,以对所述程序进行模糊测试,并在模糊测试的过程中通过预设的机器学习模型获取所述测试语料的格式是否正确;所述预设的机器学习模型已通过训练语料的预设的特征数据进行了训练;
本实施例中,在执行S103之前,需要先对预设的机器学习模型进行训练,这样,在执行S103时,可以通过训练好的机器学习模型识别测试语料的格式的是否正确的结果。其中,机器学习模型可以是任何一种机器学习模型也可以是多种机器学习模型的组合。
其中,优选的,预设的机器学习模型可以为贝叶斯分类器。
具体的,预设的机器学习模型的训练过程包括:
获取格式正确的训练语料;
将所述正确的训练语料输入到预设的训练程序中,以对所述训练程序进行模糊测试,并在模糊测试的过程中提取所述训练语料的特征数据;
将所述训练语料的特征数据输入到预设的贝叶斯分类器中进行分类学习。
本实施例中,为了使得训练后的贝叶斯分类器能够识别出语料的格式是否正确,可以通过格式正确的语料对贝叶斯分类器进行训练,
本实施例中,由于格式错误的语料可能会使进行测试的程序进入错误的流程,由此,可以依据通过测试语料在对程序进行模糊测试时产生的一些参数,确定该语料是否为格式错误的语料。
申请人通过的大量的实验发现,格式错误的语料会导致程序在执行过程中报错退出,从而导致测试的代码量较小、EDGE的总量也会较小,程序的运行时间也会较短,不利于程序的测量,因此可以通过代码量特征识别语料的格式,具体的,可以包括:EDGE的种类数、EDGE的总数以及程序执行时间。
并且,测试语料导致的EDGE的分布特性和程序功能相关,格式错误的测试语料因为会执行相同的错误处理逻辑导致其EDGE分布具有一些相似性,因此可以通过EDGE的分布特性识别语料样本的格式,具体的,包括:EDGE的方差、EDGE的均值、EDGE的最大值、EDGE的中位数。
除此之外,申请人还发现格式错误的测试语料是必定会经过错误处理流程,采用格式错误的测试语料和测试正确的测试语料分别执行程序测试时,出现错误处理流程的比例是不同的,因此,可以采用被判断为错误的EDGE占全部错误处理EDGE的比例,来识别测试语料的格式。
举例说明:将提取到的所有EDGE存储到有效EDGE集合中,其中,有效EDGE集合中包含多个EDGE子集,例如:E={e|e∈S,e>0},其中S表示有效EDGE集合,具体的,每个特征的提取方法包括:
1、EDGE的总数:
可以通过统计有效EDGE集合中所有的EDGE子集得到EDGE的总数,例如可以表示为:
total_number=sigma e∈E·e;
2、EDGE的种类数
可以通过计算有效EDGE集合中不为零的EDGE子集得到EDGE的种类数,例如可以表示为:
species_number=|E|
3、EDGE的均值
EDGE均值通过EDGE总数除以EDGE数量即可获得,表示为:
mean=total_number/|S|;
4、EDGE的方差
EDGE方差(variance)通过计算S中每个元素和EDGE的均值的差,求平方和即可获得,标识为:
variance=sigma e∈S(e-mean)2;
5、EDGE最大值和EDGE中位数直接遍历有效EDGE集合中取值最大和处于中间位置的元素即可获得。
6、程序执行时间
本实施例中,将从第一个EDGE执行到最后一个EDGE执行结束的时间作为程序执行时间。
7、判断为错误处理EDGE占程序全部错误处理EDGE的比例
设W为所有格式错误的测试语料的集合,R为所有格式正确的测试语料的集合。那么计算样本的“被判断为错误的EDGE占全部错误处理EDGE的比例”之前,首先需要针对每个EDGE,分别计算格式错误的测试语料和格式正确的测试语料的集合中包含该EDGE的比例,通过如下的公式1)~公式4)计算:
1)WE(e)={testcase|e∈testcase,testcase∈W};
2)RE(e)={testcase|e∈testcase,testcase∈R};
3)Ratio_WE(e)=|WE(e)|/|W|;
4)Ratio_RE(e)=|RE(e)|/|R|;
WE(e)为包含EDGE e的错误样本的集合,RE(e)为包含EDGE e的正确样本的集合。那么Ratio_WE(e)表示包含EDGE e的样本占错误样本的比例,Ratio_RE(e)表示包含EDGE e的样本占正确样本的比例。这里通过设置一个全局的变量Ratio_Threshold(默认为90%)来选取普遍出现在正确和错误集合中的EDGE,并进一步计算出可能的错误处理EDGE的集合,具体的通过公式5)~公式7)计算:
5)WEDGE={e|Ratio_WE(e)>Ratio_Threshold};
6)REDGE={e|Ratio_RE(e)>Ratio_Threshold};
7)ERROR_EDGE=WEDGE-REDGE;
WEDGE表示普遍出现在错误集合中的EDGE的集合,EDGE表示普遍出现在正确集合中的EDGE的集合。本文认为出现在错误样本中的高频EDGE,一部分是所有样本共有的正常逻辑处理EDGE,一部分是格式错误处理EDGE;而在正确样本中的高频EDGE均为所有样本共有的正常逻辑处理EDGE。需要去掉正常逻辑处理的EDGE,只需要通过WEDGE和REDGE集合间的减法操作即可,其结果是可能的错误处理EDGE的集合。
将ERROR_EDGE统计计算得出后,当测试样本的经过的EDGE集合为S时,可以通过如下方式计算得出测试样本的error_ratio:
8)error_ratio=ERROR_EDGE∩S/ERROR_EDGE。
通过以上得到的预设特征对机器学习模型进行训练,训练后的机器学习模型可以根据测试语料的特征数据识别出测试语料的格式,具体的S103包括:
在模糊测试的过程中,获取所述测试语料对应的特征数据;
将所述特征数据输入到预设的机器学习模型中,获取所述测试语料的格式是否正确的结果。
S104:在所述测试语料的格式为正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;
S105:若所述测试语料覆盖了已有测试语料没有覆盖的程序代码,将所述测试语料添加到所述初始语料中。
本实施例中,将所述测试语料输入到程序中,执行模糊测试时,若测试语料导致了程序代码覆盖率发生了变化,即测试语料覆盖了已有测试语料没有覆盖的程序代码,说明该目标语料对该测试的程序是有效的测试样本。因此当测试样本既为格式正确的测试语料也覆盖了已有测试语料没有覆盖的程序代码时,可以将该目标语料添加到语料集中。由于一次灰盒模糊测试需要循环应用语料集中的语料对程序进行测试,这样,保证了语料集中的语料格式的正确性,进而也就保证了,语料在变异前格式的正确性。
本实施例中,首先训练机器学习模型以使该机器学习模型可以识别测试语料的格式。当对程序进行模糊测试时,从语料集中获取初始语料,并将初始语料进行变异后得到测试语料,将测试语料输入到程序中以对该程序进行模糊测试;在程序测试的过程中通过预设的机器学习模型确定该测试语料的格式是否正确的结果;在该测试语料为格式正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;若该测试语料覆盖了已有测试语料没有覆盖的程序代码,将该测试语料添加到所述初始语料中。这样,
将每轮模糊测试确定出的格式正确的语料添加到语料集中,最大程度的保证了语料集中语料的格式的正确性,提高了模糊测试效率。
实施例二:
参考图2,示出了本发明实施例提供的一种从语料集中获取测试语料的过程的流程图,在本实施例中,该方法包括:
S201:创建临时工作集合;
本实施例中,在执行完S201-S206的步骤后,临时工作集合中存储的测试语料为完全覆盖程序的所有EDGE。创建了临时工作集后,初始的临时工作集为空集。
S202:从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
本实施例中,为了保证临时工作集中存储的语料可以完全覆盖程序的所有EDGE,每次选取的目标EDGE为临时工作集合中的测试语料未覆盖到的EDGE。
S203:从所述语料集中选取执行所述目标EDGE时代价最小的语料;
本实施例中,可以通过预设的测试用例的记录得到每个测试语料执行目标EDGE的代价值,并选取出代价最小的测试语料,这样降低了执行该EDGE的执行,提高了测试效率。其中,代价值可以为通过测试语料对程序进行模糊测试时,EDGE的执行时间和语料的长度的乘积。
S204:判断所述程序的EDGE中是否包含所述临时工作集合中的语料未覆盖到的EDGE;
S205:若包含,返回执行S202;
S206:若不包含,将所述临时工作集输出为初始语料。
为了保证临时工作集中的测试语料可以覆盖程序的所有EDGE,可循环的从程序中选取未覆盖到的目标EDGE,并确定出该目标EDGE对应的测试语料,直到临时工作集中的测试语料覆盖到程序的所有EDGE为止。
除此之外,本实施例中的测试语料为从语料集中选取的,由于经过实施例1之后,语料集中的语料均是格式正确的语料,因此通过实施例1和实施例2,选取到的测试语料不仅为格式正确的语料,而且可以覆盖到程序的所有EDGE。
实施例三:
参考图3,示出了本发明实施例提供的一种对所述测试语料进行变异的方法的流程示意图,在本实施例中,该方法包括:
S301:读取所述测试语料的变异位置;
S302:判断预设的位置集合中是否包含所述变异位置;
S303:若所述预设的位置集合中包含所述变异位置,阻止对所述当前的变异位置发生变异。
本实施例中,在对语料进行变异的过程中,会根据变异方式对初始语料的相应位置进行变异,若是在某个位置变异后,得到的测试语料为格式错误的语料,则表示该位置不应该进行变异,为了保证变异过程的正确性,也就是为了保证变异后得到的测试语料的格式的正确性,当检测出某个变异位置不应该进行变异时,可以通过阻止该变异位置,以提高变异后的测试语料的准确率。
其中,对变异位置是否可以变异的检测,可以通过预设的位置集合进行检测,该预设的位置集合中包含会导致格式错误的变异位置,位置集合中的变异位置为通过不断学习得到的,具体的,包括:
若所述测试语料为格式错误的语料,将所述测试语料的变异位置添加到位置集合中。
本实施例中,在初始语料变异后,得到测试语料,依据所述测试语料对预设的程序进行测试,并在程序测试的过程中通过预设的机器学习模型确定所述测试语料的格式的结果,得到的测试语料分为格式正确的语料和格式错误的语料,若是格式错误的语料,说明此次的变异位置为会导致格式错误的变异位置。该变异位置可以用来指导初始语料的变异过程,进而提高变异后的测试语料的准确率。
参考图4,示出了本发明实施例提供的一种用于灰盒模糊测试的数据格式保护的装置的结构示意图,在本实施例中,该装置包括:
获取单元401,用于从语料集中获取初始语料;
变异单元402,用于对所述初始语料进行变异,得到测试语料;
识别单元403,用于将所述测试语料输入到程序中,对所述程序进行模糊测试,并在模糊测试的过程中通过预设的机器学习模型确定所述测试语料的格式是否正确;所述预设的机器学习模型已通过训练语料的预设的特征数据进行了训练;
判断单元404,用于在所述测试语料的格式为正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;
更新单元405,用于若所述测试语料覆盖了已有测试语料没有覆盖的程序代码,将所述测试语料添加到所述初始语料中。
可选的,所述识别单元,包括:
获取子单元,用于在模糊测试的过程中,获取所述测试语料对应的特征数据;
第二输出子单元,用于将所述特征数据输入到预设的机器学习模型中,获取所述测试语料的格式是否正确的结果。可选的,还包括:
训练语料获取单元,用于获取格式正确的训练语料;
提取单元,用于将所述正确的训练语料输入到预设的训练程序中,以对所述训练程序进行模糊测试,并在模糊测试的过程中提取所述训练语料的特征数据;
机器学习单元,用于将所述训练语料的特征数据输入到预设的贝叶斯分类器中进行分类学习。
可选的,所述预设的特征包括:
程序中EDGE的种类数、EDGE的总数、程序执行时间、EDGE的方差、EDGE的均值、EDGE的最大值、EDGE的中位数、被判断为错误处理EDGE占程序全部错误处理EDGE的比例。
通过本实施例的装置,将每轮模糊测试确定出的格式正确的语料添加到语料集中,最大程度的保证了语料集中语料的格式的正确性,提高了模糊测试效率。
参考图5示出了本发明实施例提供的一种从语料集中获取测试语料的装置的结构示意图,在本实施例中,该装置包括:
创建子单元501,用于创建临时工作集合;
第一选取子单元502,用于从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
第二选取子单元503,用于从所述语料集中选取执行所述目标EDGE时代价最小的语料;
判断子单元504,用于判断所述程序的EDGE中是否包含所述临时工作集合中的语料未覆盖到的EDGE;
返回执行子单元505,用于若包含,返回执行从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
第一输出子单元506,用于若不包含,将所述临时工作集输出为初始语料。
通过本实施例的装置,选取到的测试语料不仅为格式正确的语料,而且可以覆盖到预设程序的所有EDGE。
通过本实施例的装置,通过随机贪心算法使得,选取到的测试语料不仅为格式正确的语料,而且可以覆盖到预设程序的所有EDGE。
参考图6,示出了本发明实施例提供的一种对测试语料进行变异的装置的结构示意图,在本实施例中,该装置包括:
读取子单元601,用于读取所述初始语料的变异位置;
第二判断子单元602,用于判断预设的位置集合中是否包含所述变异位置;
阻止子单元603,用于若所述预设的位置集合中包含所述变异位置,阻止对所述当前的变异位置发生变异。
可选的,还包括:
变异位置添加单元,用于若所述测试语料为格式错误的语料,将所述测试语料的变异位置添加到位置集合中。
通过本实施例的装置,通过预设的位置集合对初始语料的变异进行指导,避免了无用的变异操作,进一步提高了测试效率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种用于灰盒模糊测试的样本格式保护方法,其特征在于,包括:
从语料集中获取初始语料;
对所述初始语料进行变异,得到测试语料;
将所述测试语料输入到程序中,对所述程序进行模糊测试,并在模糊测试的过程中通过预设的机器学习模型确定所述测试语料的格式是否正确;所述预设的机器学习模型已通过训练语料的预设的特征数据进行了训练;
在所述测试语料的格式为正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;
若所述测试语料覆盖了已有测试语料没有覆盖的程序代码,将所述测试语料添加到所述初始语料中。
2.根据权利要求1所述的方法,其特征在于,所述从语料集中获取测试语料,包括:
创建临时工作集合;
从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
从所述语料集中选取执行所述目标EDGE时代价最小的语料;
判断所述程序的EDGE中是否包含所述临时工作集合中的语料未覆盖到的EDGE;
若包含,返回执行从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
若不包含,将所述临时工作集输出为初始语料。
3.根据权利要求1所述的方法,其特征在于,所述在模糊测试的过程中通过预设的机器学习模型获取所述测试语料的格式是否正确,包括:
在模糊测试的过程中,获取所述测试语料对应的特征数据;
将所述特征数据输入到预设的机器学习模型中,获取所述测试语料的格式是否正确的结果。
4.根据权利要求1所述的方法,其特征在于,所述对所述初始语料进行变异,得到测试语料,包括:
读取所述初始语料的变异位置;
判断预设的位置集合中是否包含所述变异位置;
若所述预设的位置集合中包含所述变异位置,阻止对所述当前的变异位置发生变异。
5.根据权利要求4所述的方法,其特征在于,还包括:
若所述测试语料为格式错误的语料,将所述测试语料的变异位置添加到位置集合中。
6.根据权利要求1到5中任意一项的方法,其特征在于,机器学习模型的训练过程包括:
获取格式正确的训练语料;
将所述正确的训练语料输入到预设的训练程序中,以对所述训练程序进行模糊测试,并在模糊测试的过程中提取所述训练语料的特征数据;
将所述训练语料的特征数据输入到预设的贝叶斯分类器中进行分类学习。
7.根据权利要求6所述的方法,其特征在于,所述预设的特征包括:所述程序EDGE的种类数、EDGE的总数、程序执行时间、EDGE的方差、EDGE的均值、EDGE的最大值、EDGE的中位数、被判断为错误处理EDGE占程序全部错误处理EDGE的比例。
8.一种用于灰盒模糊测试的数据格式保护装置,其特征在于,包括:
获取单元,用于从语料集中获取初始语料;
变异单元,用于对所述初始语料进行变异,得到测试语料;
识别单元,用于将所述测试语料输入到程序中,对所述程序进行模糊测试,并在模糊测试的过程中通过预设的机器学习模型确定所述测试语料的格式是否正确;所述预设的机器学习模型已通过训练语料的预设的特征数据进行了训练;
判断单元,用于在所述测试语料的格式为正确的情况下,查看所述测试语料是否覆盖了已有测试语料没有覆盖的程序代码;
更新单元,用于若所述测试语料覆盖了已有测试语料没有覆盖的程序代码,将所述测试语料添加到所述初始语料中。
9.根据权利要求8所述的方法,其特征在于,所述获取单元,包括:
创建子单元,用于创建临时工作集合;
第一选取子单元,用于从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
第二选取子单元,用于从所述语料集中选取执行所述目标EDGE时代价最小的语料;
第一判断子单元,用于判断所述程序的EDGE中是否包含所述临时工作集合中的语料未覆盖到的EDGE;
返回执行单元,用于若包含,返回执行从所述程序的EDGE中随机选取一个目标EDGE,所述目标EDGE为所述临时工作集中的测试语料未覆盖到的所述程序的EDGE;
第一输出子单元,用于若不包含,将所述临时工作集输出为初始语料。
10.根据权利要求8所述的装置,其特征在于,所述变异单元,包括:
读取子单元,用于读取所述初始语料的变异位置;
第二判断子单元,用于判断预设的位置集合中是否包含所述变异位置;
阻止子单元,用于若所述预设的位置集合中包含所述变异位置,阻止对所述当前的变异位置发生变异。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810082824.6A CN108171064B (zh) | 2018-01-29 | 2018-01-29 | 一种用于灰盒模糊测试的样本格式保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810082824.6A CN108171064B (zh) | 2018-01-29 | 2018-01-29 | 一种用于灰盒模糊测试的样本格式保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108171064A true CN108171064A (zh) | 2018-06-15 |
CN108171064B CN108171064B (zh) | 2021-03-19 |
Family
ID=62515737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810082824.6A Active CN108171064B (zh) | 2018-01-29 | 2018-01-29 | 一种用于灰盒模糊测试的样本格式保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108171064B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379329A (zh) * | 2018-09-05 | 2019-02-22 | 中国人民解放军战略支援部队信息工程大学 | 基于lstm的网络安全协议模糊测试方法及系统 |
US10915436B2 (en) | 2018-12-08 | 2021-02-09 | International Business Machines Corporation | System level test generation using DNN translation from unit level test |
WO2021146002A1 (en) * | 2020-01-13 | 2021-07-22 | Microsoft Technology Licensing, Llc | Intelligently fuzzing data to exercise a service |
CN114661577A (zh) * | 2022-01-26 | 2022-06-24 | 天津大学 | 一种基于确定性策略与覆盖引导的模糊测试方法及工具 |
CN115774677A (zh) * | 2022-12-20 | 2023-03-10 | 上海安般信息科技有限公司 | 一种基于多参数输入的模糊测试方法及装置 |
CN115905021A (zh) * | 2022-12-30 | 2023-04-04 | 长春吉大正元信息技术股份有限公司 | 一种模糊测试方法、装置、电子设备以及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120166180A1 (en) * | 2009-03-23 | 2012-06-28 | Lawrence Au | Compassion, Variety and Cohesion For Methods Of Text Analytics, Writing, Search, User Interfaces |
CN104142912A (zh) * | 2013-05-07 | 2014-11-12 | 百度在线网络技术(北京)有限公司 | 一种精确的语料类别标注方法及装置 |
CN104182423A (zh) * | 2013-05-27 | 2014-12-03 | 华东师范大学 | 一种基于条件随机场的中文人名自动识别方法 |
US20150066895A1 (en) * | 2004-06-18 | 2015-03-05 | Glenbrook Networks | System and method for automatic fact extraction from images of domain-specific documents with further web verification |
CN104834718A (zh) * | 2015-05-11 | 2015-08-12 | 苏州大学 | 基于最大熵模型的事件论元识别方法及系统 |
CN106970993A (zh) * | 2017-03-31 | 2017-07-21 | 百度在线网络技术(北京)有限公司 | 挖掘模型更新方法和装置 |
-
2018
- 2018-01-29 CN CN201810082824.6A patent/CN108171064B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150066895A1 (en) * | 2004-06-18 | 2015-03-05 | Glenbrook Networks | System and method for automatic fact extraction from images of domain-specific documents with further web verification |
US20120166180A1 (en) * | 2009-03-23 | 2012-06-28 | Lawrence Au | Compassion, Variety and Cohesion For Methods Of Text Analytics, Writing, Search, User Interfaces |
CN104142912A (zh) * | 2013-05-07 | 2014-11-12 | 百度在线网络技术(北京)有限公司 | 一种精确的语料类别标注方法及装置 |
CN104182423A (zh) * | 2013-05-27 | 2014-12-03 | 华东师范大学 | 一种基于条件随机场的中文人名自动识别方法 |
CN104834718A (zh) * | 2015-05-11 | 2015-08-12 | 苏州大学 | 基于最大熵模型的事件论元识别方法及系统 |
CN106970993A (zh) * | 2017-03-31 | 2017-07-21 | 百度在线网络技术(北京)有限公司 | 挖掘模型更新方法和装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379329A (zh) * | 2018-09-05 | 2019-02-22 | 中国人民解放军战略支援部队信息工程大学 | 基于lstm的网络安全协议模糊测试方法及系统 |
CN109379329B (zh) * | 2018-09-05 | 2021-12-21 | 中国人民解放军战略支援部队信息工程大学 | 基于lstm的网络安全协议模糊测试方法及系统 |
US10915436B2 (en) | 2018-12-08 | 2021-02-09 | International Business Machines Corporation | System level test generation using DNN translation from unit level test |
WO2021146002A1 (en) * | 2020-01-13 | 2021-07-22 | Microsoft Technology Licensing, Llc | Intelligently fuzzing data to exercise a service |
US11321219B2 (en) | 2020-01-13 | 2022-05-03 | Microsoft Technology Licensing, Llc | Intelligently fuzzing data to exercise a service |
CN114661577A (zh) * | 2022-01-26 | 2022-06-24 | 天津大学 | 一种基于确定性策略与覆盖引导的模糊测试方法及工具 |
CN114661577B (zh) * | 2022-01-26 | 2023-09-26 | 天津大学 | 一种基于确定性策略与覆盖引导的模糊测试方法 |
CN115774677A (zh) * | 2022-12-20 | 2023-03-10 | 上海安般信息科技有限公司 | 一种基于多参数输入的模糊测试方法及装置 |
CN115774677B (zh) * | 2022-12-20 | 2024-02-23 | 上海安般信息科技有限公司 | 一种基于多参数输入的模糊测试方法及装置 |
CN115905021A (zh) * | 2022-12-30 | 2023-04-04 | 长春吉大正元信息技术股份有限公司 | 一种模糊测试方法、装置、电子设备以及存储介质 |
CN115905021B (zh) * | 2022-12-30 | 2023-11-28 | 长春吉大正元信息技术股份有限公司 | 一种模糊测试方法、装置、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108171064B (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108171064A (zh) | 一种用于灰盒模糊测试的样本格式保护方法及装置 | |
CN102736979B (zh) | 一种基于符号执行的带反馈测试用例生成方法 | |
CN102473660B (zh) | 等离子加工系统自动瑕疵检测和分类及其方法 | |
CN107122806A (zh) | 一种敏感图像识别方法及装置 | |
CN106407809A (zh) | 一种Linux平台恶意软件检测方法 | |
CN109144882A (zh) | 一种基于程序不变量的软件故障定位方法及装置 | |
CN103827853A (zh) | 最小化规则管理系统中的规则集 | |
CN115148299B (zh) | 一种基于XGBoost的矿床类型鉴别方法及系统 | |
CN112364352A (zh) | 可解释性的软件漏洞检测与推荐方法及系统 | |
CN109325792A (zh) | 信用评估变量的分箱方法及分箱装置、设备和存储介质 | |
CN110046647A (zh) | 一种验证码机器行为识别方法及装置 | |
CN104165630B (zh) | 离散点的道路匹配方法和道路匹配装置 | |
CN107153610A (zh) | 一种程序语句错误检测方法和装置 | |
CN108896804A (zh) | 窃电检测方法、装置及电子设备 | |
CN110895409B (zh) | 避让障碍物的控制方法 | |
WO2024087428A1 (zh) | 一种存储产品参数配置推荐方法、装置、设备及介质 | |
CN112561859A (zh) | 基于单目视觉的锚护用钢带钻孔与锚网识别方法及装置 | |
CN108021507A (zh) | 符号执行的并行路径搜索方法及装置 | |
CN104317721A (zh) | 一种基于改进和声搜索算法的回归测试用例选择方法 | |
CN107247668A (zh) | 代码自动检测和校正方法 | |
JP2014015746A5 (zh) | ||
CN106126882A (zh) | 基于肯德尔和谐系数排序的勘查区元素地球化学数据优选方法 | |
CN108229586B (zh) | 一种数据中的异常数据点的检测方法及系统 | |
CN105159826B (zh) | 一种定位目标程序中的错误语句的方法和装置 | |
CN110347570A (zh) | 一种ide环境下代码自动生成工具分析方法 |
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 |