基于加权随机的模糊测试方法、装置、设备及存储介质与流程

文档序号:33337647发布日期:2023-03-04 01:39阅读:50来源:国知局
基于加权随机的模糊测试方法、装置、设备及存储介质与流程

1.本发明涉及模糊测试技术领域,尤其涉及一种基于加权随机的模糊测试方法、装置、设备及存储介质。


背景技术:

2.模糊测试(fuzz testing,fuzzing)技术是安全测试技术的一种,通过构造畸形输入数据使得软件发生异常如崩溃等情况,从而发现软件中存在的安全问题。由于模糊测试技术具有可以充分遍历所有输入数据、代码覆盖全面、测试自动化、能够有效地发现软件中存在的安全问题等特点,受到信息安全中漏洞分析领域的研究人员的广泛欢迎。
3.现有的产品推荐技术多为基于简单随机算法的测试字段随机变异,进而实现模糊测试。实际应用中,测试样本的字段之间的重要性不同,每个字段的可用变异算法较多,简单随机算法的测试样本无法在已知整点灾区无法做到重点测试,从而导致进行模糊测试时的效率较低。


技术实现要素:

4.本发明提供一种基于加权随机的模糊测试方法、装置、设备及存储介质,其主要目的在于解决进行模糊测试时的效率较低的问题。
5.为实现上述目的,本发明提供的一种基于加权随机的模糊测试方法,包括:
6.根据预设的测试协议生成数据包模板;
7.从所述数据包模板中提取出可变字段集以及所述可变字段集对应的字段权值集;
8.利用预设的加权随机算法根据所述字段权值集对所述可变字段集进行加权随机变异,得到测试用例;
9.对所述测试用例进行自动化测试,得到测试结果。
10.为了解决上述问题,本发明还提供一种基于加权随机的模糊测试装置,所述装置包括:
11.模板生成模块,用于根据预设的测试协议生成数据包模板;
12.字段提取模块,用于从所述数据包模板中提取出可变字段集以及所述可变字段集对应的字段权值集;
13.加权变异模块,用于利用预设的加权随机算法根据所述字段权值集对所述可变字段集进行加权随机变异,得到测试用例;
14.模糊测试模块,用于对所述测试用例进行自动化测试,得到测试结果。
15.为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
16.至少一个处理器;以及,
17.与所述至少一个处理器通信连接的存储器;其中,
18.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述所述的基于加权随机
的模糊测试方法。
19.为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的基于加权随机的模糊测试方法。
20.本发明实施例通过根据预设的测试协议生成数据包模板,能够得到用于测试的正常模板文件,方便后续的变异测试操作;通过从所述数据包模板中提取出可变字段集能够实现有针对性的进行模糊测试,并通过提取出字段权值集,能够保证后续模糊算法能够在重点灾区做到重点测试,通过利用预设的加权随机算法根据所述字段权值集对所述可变字段集进行加权随机变异,得到测试用例,能够在模糊测试的字段选取和变异算法的选取中增加选择的针对性,从而提高模糊测试的测试效率。因此本发明提出的基于加权随机的模糊测试方法、装置、电子设备及计算机可读存储介质,可以提高模糊测试的效率问题。
附图说明
21.图1为本发明一实施例提供的基于加权随机的模糊测试方法的流程示意图;
22.图2为本发明一实施例提供的基于加权随机的模糊测试装置的功能模块图;
23.图3为本发明一实施例提供的实现所述基于加权随机的模糊测试方法的电子设备的结构示意图。
24.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
25.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
26.本技术实施例提供一种基于加权随机的模糊测试方法。基于加权随机的模糊测试方法的执行主体包括但不限于服务端、终端等能够被配置为执行本技术实施例提供的该方法的电子设备中的至少一种。换言之,基于加权随机的模糊测试方法可以由安装在终端设备或服务端设备的软件或硬件来执行,软件可以是区块链平台。服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
27.参照图1所示,为本发明一实施例提供的基于加权随机的模糊测试方法的流程示意图。在本实施例中,基于加权随机的模糊测试方法包括:
28.s1、根据预设的测试协议生成数据包模板。
29.本发明实施例中,测试协议是指控制规范协议或工业控制网络协议,例如xml格式协议或者tcp通信协议等协议。
30.详细地,数据包模板是指符合测试协议的正常数据文件,例如应用程序的更新包、传输测试的数据包等文件。
31.本发明实施例中,根据预设的测试协议生成数据包模板,包括:捕获测试协议下的文件信息流;获取用户对文件信息流进行字段类型标定生成的标定文件;将标定文件封装为数据包模板。
32.详细地,文件信息流可以是符合测试协议的历史数据文件,例如应用程序的历史版本数据或历史xml文件。
33.详细地,获取用户对文件信息流进行字段类型标定生成的标定文件是指通过用户根据测试协议标定文件信息流中的字段类型,例如,对于文件信息流中的“public void setobjs(collection objs)”进行标定,“public”为访问权限修饰符;“void”是返回值修饰符;“setobjs”为函数名修饰符;“()”为函数括号修饰符;“collection”和“objs”为函数元素修饰符。
34.本发明实施例中,通过根据预设的测试协议生成数据包模板,能够得到用于测试的正常模板文件,方便后续的变异测试操作。
35.s2、从数据包模板中提取出可变字段集以及可变字段集对应的字段权值集。
36.本发明实施例中,可变字段集是指由数据包模板中可以用来变异进行模糊测试的字段构成的集合。
37.详细地,字段权值集是指由与可变字段集中每个可变字段的字段权值组成的数据集,其中,字段权值是对应的可变字段的重要性的体现,代表着字段的重要性。
38.本发明实施例中,从数据包模板中提取出可变字段集以及可变字段集对应的字段权值集,包括:根据数据包模板中每个字段的字段类型从数据包模板中提取出可变字段集;获取用户对可变字段集进行字段权值标定生成的标定权值集;对标定权值集中的字段权值进行权重适配,得到字段权值集。
39.详细地,字段类型是指标定文件的字段类型,例如上述的函数元素、函数括号以及函数名等类型。
40.具体地,根据数据包模板中每个字段的字段类型从数据包模板中提取出可变字段集是指将字段类型进行分类,得到可变字段类型,并将可变字段类型对应的字段汇集成可变字段集。
41.详细地,可以利用预设的适配算法对标定权值集中的字段权值进行权重适配,得到字段权值集,例如,适配算法packet的代码如下:
[0042][0043]
其中,field1和field2分别为可变字段集中的两个字段,field1对应的字段值为a,field2对应的字段值为b,field1的字段权值为1,field2的字段权值为10,则在多次模糊测试后,field1与field2两个字段的变异概率会趋近于1:10。
[0044]
本发明实施例中,通过从数据包模板中提取出可变字段集能够实现有针对性的进行模糊测试,并通过提取出字段权值集,能够保证后续模糊算法能够在重点灾区做到重点测试。
[0045]
s3、利用预设的加权随机算法根据字段权值集对可变字段集进行加权随机变异,得到测试用例。
[0046]
本发明实施例中,测试用例是指变异后用于进行模糊测试的数据文件。
[0047]
本发明实施例中,利用预设的加权随机算法根据字段权值集对可变字段集进行加权随机变异,得到测试用例,包括:生成可变字段集中的每个字段对应的字段算法集和算法权重集;根据算法权重集对每个字段算法集中的字段变异算法进行权重升序排序,得到字段算法升序集;根据字段算法升序集以及字段权值集对可变字段集中每个字段的权重进行归一化处理,得到加权字段集;利用预设的加权随机算法对加权字段集进行随机变异,得到测试用例。
[0048]
具体地,字段算法集是指一个字段对应的所有的变异算法的集合,其中,变异算法有反转变异、替换变异以及乱序变异等。
[0049]
详细地,算法权重集是由字段的所有变异算法的算法权重组成的集合,其中,算法权重是由用户指定或适配算法确定的。
[0050]
详细地,为可变字段集中的每个字段生成对应的字段算法集和算法权重集是指逐个选取可变字段集中的字段作为目标字段,根据目标字段的字段类型选取适配的变异算法,并获取每个变异算法的算法权重,将所有适配的变异算法组成目标字段的字段算法集,将所有的算法权重组成算法权重集。
[0051]
详细地,根据算法权重集对每个字段算法集中的字段变异算法进行权重升序排序,得到字段算法升序集,包括:逐个选取可变字段集中的字段作为目标字段,将目标字段的字段算法集作为目标字段算法集,将目标字段算法集对应的算法权重集作为目标算法权重集;对目标算法权重集中的每个算法权重进行对数处理,得到目标对数权重集;根据目标对数权重集中的对数权重的大小对目标字段算法集中的变异算法进行升序排列,得到字段算法升序集。
[0052]
详细地,对目标算法权重集中的每个算法权重进行对数处理,得到目标对数权重集是指将算法权重对数化,得到对数权重,例如,当算法权重为20时,对数化后的对数权重可以是loga20,其中,a可以是任意常数,并将所有的对数权重汇集成目标对数权重集。
[0053]
具体地,通过对目标算法权重集中的每个算法权重进行对数处理,得到目标对数权重集可以降低算法权重的度量尺度,减轻算法的计算量,提高算法效率。
[0054]
本发明实施例中,根据字段算法升序集以及字段权值集对可变字段集中每个字段的权重进行归一化处理,得到加权字段集,包括:逐个选取可变字段集中的字段作为目标字段,从字段权值集中选取目标字段对应的字段权值作为目标字段权值;从字段速算法升序集中选取位于序列首位的变异算法作为目标变异算法,并将目标变异算法对应的对数权重作为目标对数权重;利用如下的字段权重算法计算目标字段的标准字段权重:f=weight*mutator其中,f是指标准字段权重,weight是指目标字段权值,mutator是指目标对数权重;将可变字段集中的字段按照标准字段权重的大小进行升序排序,得到加权字段集。
[0055]
详细地,位于序列首尾的变异算法即为对数权重最大的变异算法。
[0056]
详细地,利用预设的加权随机算法对加权字段集进行随机变异,得到测试用例,包括:利用预设的加权随机算法从加权字段集中随机筛选出多个字段组成随机字段集;利用加权随机算法为随机字段集中的每个字段筛选出变异算法作为随机变异算法;逐一利用随机变异算法对随机变异算法对应的字段进行随机变异,得到变异字段;利用变异字段对数据包模板中对应的可变字段进行替换,得到测试用例。
[0057]
详细地,利用预设的加权随机算法从加权字段集中随机筛选出多个字段组成随机
字段集,包括:将加权字段集中所有的标准字段权重之和作为权重总和,利用随机算法生成多个小于权重总和的正整数组成随机数集合,逐一选取随机数集合中的随机数作为目标随机数;按照次序逐一选取加权字段集中的字段作为目标加权字段,将目标加权字段的标准字段权重加上预设的历史权重得到目标标准权重,判断目标标准权重是否大于或等于目标随机数;当目标标准权重小于目标随机数时,利用目标标准权重更新历史权重,并返回按照次序逐一选取加权字段集中的字段作为目标加权字段的步骤;当目标标准权重大于或等于目标随机数时,将目标加权字段添加到随机字段集中。
[0058]
详细地,加权随机算法的golang的代码如下:
[0059]
[0060][0061]
其中,choice结构体用于获取加权字段集中的字段和对应的标准字段权重,newchooser用于对可变字段集中的字段按照标准字段权重的大小进行升序排列,并将序列
号作为数组cs的下标,totals用于计算权重总和,rand.intn用于生成小于权重总和的正整数r,sort.searchints用于使用二分法判断目标标准权重是否大于或等于目标随机数,进而确定随机字段集。
[0062]
具体地,通过利用加权随机算法从加权字段集中随机筛选出多个字段组成随机字段集,可以提高随机筛选的效率,节省了筛选时间,同时降低了算法的时间复杂度。
[0063]
详细地,预设的历史权重的权重值为0。
[0064]
详细地,利用加权随机算法为随机字段集中的每个字段筛选出变异算法作为随机变异算法的方法与上述步骤利用预设的加权随机算法从加权字段集中随机筛选出多个字段组成随机字段集的方法一致,这里不再赘述。
[0065]
本发明实施例中,通过利用预设的加权随机算法根据字段权值集对可变字段集进行加权随机变异,得到测试用例,能够在模糊测试的字段选取和变异算法的选取中增加选择的针对性,从而提高模糊测试的测试效率。
[0066]
s4、对测试用例进行自动化测试,得到测试结果。
[0067]
本发明实施例中,对测试用例进行自动化测试,得到测试结果是指将测试用例输入预设的模糊测试程序中进行执行,并利用监测软件对测试用例的执行状态进行监控,得到监测结果,并对所述监测结果进行错误分析得到测试结果。
[0068]
详细地,所述监测测软件可以是oss-fuzz。
[0069]
本发明实施例中,通过对测试用例进行自动化测试,得到测试结果,可以保证用户能够更加直观地检测到数据漏洞,提高模糊测试的效率。
[0070]
如图2所示,是本发明一实施例提供的基于加权随机的模糊测试装置的功能模块图。
[0071]
本发明基于加权随机的模糊测试装置200可以安装于电子设备中。根据实现的功能,基于加权随机的模糊测试装置200可以包括模板生成模块201、字段提取模块202、加权变异模块203及加权变异模块204。本发明模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
[0072]
在本实施例中,关于各模块/单元的功能如下:
[0073]
模板生成模块201,用于根据预设的测试协议生成数据包模板;
[0074]
字段提取模块202,用于从数据包模板中提取出可变字段集以及可变字段集对应的字段权值集;
[0075]
加权变异模块203,用于利用预设的加权随机算法根据字段权值集对可变字段集进行加权随机变异,得到测试用例;
[0076]
模糊测试模块204,用于对测试用例进行自动化测试,得到测试结果。
[0077]
详细地,本发明实施例中基于加权随机的模糊测试装置100中的各模块在使用时采用与上述图1中的基于加权随机的模糊测试方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
[0078]
如图3所示,是本发明一实施例提供的实现基于加权随机的模糊测试方法的电子设备的结构示意图。
[0079]
电子设备301可以包括处理器310、存储器311、通信总线312以及通信接口313,还
可以包括存储在存储器311中并可在处理器310上运行的计算机程序,如基于加权随机的模糊测试程序。
[0080]
其中,处理器310在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器310是电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在存储器311内的程序或者模块(例如执行基于加权随机的模糊测试程序等),以及调用存储在存储器311内的数据,以执行电子设备的各种功能和处理数据。
[0081]
存储器311至少包括一种类型的可读存储介质,可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器311在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。存储器311在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,存储器311还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器311不仅可以用于存储安装于电子设备的应用软件及各类数据,例如基于加权随机的模糊测试程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
[0082]
通信总线312可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。总线被设置为实现存储器311以及至少一个处理器310等之间的连接通信。
[0083]
通信接口313用于上述电子设备与其他设备之间的通信,包括网络接口和用户接口。可选地,网络接口可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light-emitting diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
[0084]
图中仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图中示出的结构并不构成对电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
[0085]
例如,尽管未示出,电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与至少一个处理器310逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。电子设备还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。
[0086]
应该了解,实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
[0087]
具体地,处理器310对上述指令的具体实现方法可参考附图对应实施例中相关步骤的描述,在此不赘述。
[0088]
进一步地,电子设备301集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)。
[0089]
本发明还提供一种计算机可读存储介质,可读存储介质存储有计算机程序,计算机程序在被电子设备的处理器所执行时,可以实现上述基于加权随机的模糊测试方法。
[0090]
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0091]
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0092]
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
[0093]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
[0094]
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
[0095]
本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
[0096]
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
[0097]
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1