CN117667749A - 一种模糊测试用例优化方法及*** - Google Patents
一种模糊测试用例优化方法及*** Download PDFInfo
- Publication number
- CN117667749A CN117667749A CN202410134598.7A CN202410134598A CN117667749A CN 117667749 A CN117667749 A CN 117667749A CN 202410134598 A CN202410134598 A CN 202410134598A CN 117667749 A CN117667749 A CN 117667749A
- Authority
- CN
- China
- Prior art keywords
- test
- protocol
- test case
- fuzzy
- model
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 445
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000005457 optimization Methods 0.000 title claims abstract description 32
- 238000010801 machine learning Methods 0.000 claims abstract description 71
- 238000012549 training Methods 0.000 claims abstract description 52
- 238000004422 calculation algorithm Methods 0.000 claims description 48
- 238000004590 computer program Methods 0.000 claims description 23
- 230000007704 transition Effects 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 17
- 230000007246 mechanism Effects 0.000 claims description 13
- 230000035772 mutation Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 12
- 239000013598 vector Substances 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 8
- 230000002159 abnormal effect Effects 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 7
- 238000002372 labelling Methods 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 claims description 4
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 230000000306 recurrent effect Effects 0.000 claims description 3
- 230000001502 supplementing effect Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 15
- 230000000875 corresponding effect Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 230000006854 communication Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 239000000047 product Substances 0.000 description 5
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 4
- 238000002790 cross-validation Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 238000000227 grinding Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
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
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/043—Architecture, e.g. interconnection topology based on fuzzy logic, fuzzy membership or fuzzy inference, e.g. adaptive neuro-fuzzy inference systems [ANFIS]
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Automation & Control Theory (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computational Mathematics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
本申请实施例提供了一种模糊测试用例优化方法及***,该方法包括:基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,其中,第一测试用例包含测试目标在多个协议状态下的测试用例;根据测试目标的模糊测试结果确定有效测试用例;基于有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型;基于测试用例生成模型生成第二测试用例。本申请实施例基于自动状态机进行第一轮模糊测试,使模糊测试能够覆盖更多协议状态下的测试用例,并基于有效测试用例训练机器学习模型,提高生成测试用例的有效性,进而可以解决相关技术中生成的模糊测试用例有效率低,严重影响模糊测试效率的问题,提高了模糊测试效率。
Description
技术领域
本申请涉及通信领域,具体而言,涉及一种模糊测试用例优化方法及***。
背景技术
模糊测试是一种通过向目标***提供非预期的输入并监视异常结果来发现软件漏洞的方法。模糊测试有两种主流测试用例生成方式:基于变异的测试用例生成方式:通过改变已有的数据样本去生成测试数据,有覆盖率高、时间成本高、不适用于黑盒测试等特点;基于生成的测试用例生成方式:通过对程序输入的建模来生成新的测试数据,具备有效率高、建模成本高、需人工学习协议规则等特点。
模糊测试技术作为安全漏洞检测的有效手段,对科研及生产都具有重要的安全防护意义。模糊测试技术具有易用性高以及检测效果较好等优势,模糊测试技术已成为目前业界常用的安全漏洞检测技术之一,针对网络协议、门户网站、应用程序接口(ApplicationProgramming Interface,简称API)等目标,已经进行了众多的研究和应用。但目前模糊测试技术仍存在测试用例冗余较严重、测试时间较长、目标对象类型覆盖范围小等主要问题。
如何高效地生成一些可能引发程序错误的异常输入,找到非预期的执行路径,成为了解决模糊测试技术存在问题的关键环节。面向有状态网络协议(如WiFi、BT、TCP等有状态迁移的网络协议)的模糊测试同样如此,需要针对网络设备的多样性和网络协议的复杂性设计高效的模糊测试用例。现有的一些网络协议模糊测试工具的协议分析过程不能自动化,且构造的模糊测试数据不符合网络协议格式规范和各个报文之间也不具有关联性,当测试用例与协议实体状态不匹配时,测试用例可能会被协议实体直接丢弃,导致协议设备需要执行大量的无效测试用例,无法全面探索有状态网络协议中的更深层次问题,严重影响有状态网络协议模糊测试效率。
综上所述,针对上述问题还没有很好的解决方案。
发明内容
本申请实施例提供了一种模糊测试用例优化方法及***,以至少解决相关技术中生成的模糊测试用例有效率低,严重影响模糊测试效率的问题。
根据本申请的一个实施例,提供了一种模糊测试用例优化方法,该方法包括:基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,其中,第一测试用例包含测试目标在多个协议状态下的测试用例;根据测试目标的模糊测试结果确定有效测试用例;基于有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型;基于测试用例生成模型生成第二测试用例。
根据本申请的另一个实施例,提供了一种模糊测试用例优化***,该***包括:模糊测试模块,用于基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,其中,第一测试用例包含测试目标在多个协议状态下的第一测试用例;有效测试用例池,用于存储根据测试目标的模糊测试结果确定的有效测试用例;机器学习模块,用于基于有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型,并基于测试用例生成模型生成第二测试用例。
根据本申请的又一个实施例,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一项方法实施例中的步骤。
在本申请实施例中设计了一种模糊测试用例优化方法及***,通过基于自动状态机进行第一轮模糊测试,使模糊测试能够覆盖更多协议状态下的测试用例,并基于有效测试用例训练机器学习模型,提高生成测试用例的有效性,进而可以解决相关技术中生成的模糊测试用例有效率低,严重影响模糊测试效率的问题,提高了模糊测试效率。
附图说明
图1是本申请实施例的模糊测试用例优化方法的硬件结构框图;
图2是根据本申请实施例的模糊测试用例优化方法的流程图;
图3是本申请一实施例中的模糊测试用例优化方法的整体流程图;
图4是根据本申请实施例的基于WiFi协议的自动状态机的示意图;
图5是根据本申请实施例的规则树模型建立流程的示意图;
图6是根据本申请实施例的Teacher Forcing机制的Seq2Seq模型的示意图;
图7是根据本申请实施例的基于Attention机制的解码器示意图;
图8是根据本申请实施例的机器学习模型生成及应用流程示意图;
图9是根据本申请实施例的一种模糊测试用例优化***的框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例应用于模糊测试场景,涵盖的测试目标包括支持5G空口、802.11、蓝牙、低功耗蓝牙(Bluetooth Low Energe,简称BLE)、近场通信(Near FieldCommunication,简称NFC)、安全外壳协议(Secure Shell,简称SSH)、超文本传输协议(Hypertext Transfer Protocol,简称HTTP)等协议的大多数设备/产品,包括但不限于5G基站、智能手机、笔记本电脑、蓝牙耳机/音箱、蓝牙鼠标/键盘、路由器、无线网卡、NFC智能设备、物联网智能生态家居系列产品及WEB网站等。
本申请的使用场景为用户/开发人员/测试人员对上述测试目标进行的功能测试、健壮性测试、渗透测试等工作,目的在于发现测试目标的安全漏洞,从而提高测试目标的安全性,为用户正常使用产品保驾护航。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的模糊测试用例优化方法的硬件结构框图,如图1所示,硬件单板可以包括一个或多个(图1中仅示出一个)处理器12(处理器12可以包括但不限于微处理器MCU或可编程逻辑器件等的处理装置)和用于存储数据的存储器14,其中,上述计算机终端还可以包括用于通信功能的传输设备16以及输入输出设备18。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器14可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的模糊测试用例优化方法对应的计算机程序,处理器12通过运行存储在存储器14内的计算机程序,从而执行各种功能应用以及模糊测试用例优化方法,即实现上述的方法。存储器14可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器14可进一步包括相对于处理器12远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备16用于经由一个网络接收或者发送数据。上述的网络具体实例可包括通信供应商提供的无线网络。在一个实例中,传输设备16包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备16可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本申请一实施例中提供了一种模糊测试用例优化方法,图2是根据本申请实施例的模糊测试用例优化方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,其中,所述第一测试用例包含所述测试目标在多个协议状态下的测试用例;
步骤S204,根据所述测试目标的模糊测试结果确定有效测试用例;
步骤S206,基于所述有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型;
步骤S208,基于所述测试用例生成模型生成第二测试用例。
在本申请实施例中,通过上述步骤S202至步骤S208,基于自动状态机进行第一轮模糊测试,使模糊测试能够覆盖更多协议状态下的测试用例,并基于有效测试用例训练机器学习模型,提高生成测试用例的有效性,进而可以解决相关技术中生成的模糊测试用例有效率低,严重影响模糊测试效率的问题,提高了模糊测试效率。
在一些实施例,测试目标包括但并不限制于网络协议、门户网站、应用程序接口(Application Programming Interface,简称API)等,网络协议可以包括但并不限制于WiFi、点对点传输协议(BitTorrent,简称BT)、传输控制协议(Transmission ControlProtocol,简称TCP)等有状态迁移的网络协议。
在一些实施例中,在步骤S202基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试之前,该方法还可以包括:步骤S201,生成第一测试用例。
具体地,步骤S201可以包括如下步骤:
步骤S2011,收集所述测试目标的协议流量文件;
步骤S2012,基于所述协议流量文件构建所述测试目标的自动状态机,其中,所述自动状态机用于指示所述测试目标在所述多个协议状态之间的状态转移;
步骤S2013,基于所述协议流量文件和所述自动状态机建立多个规则树模型,其中,每一个所述规则树模型对应一个所述协议状态;
步骤S2014,基于所述多个规则树模型和预设的变异策略生成所述第一测试用例。
在一些实施例中,步骤S2012基于所述协议流量文件构建所述测试目标的自动状态机,可以包括如下步骤:
步骤S2012-1,基于状态提取算法从所述协议流量文件中提取所述多个协议状态;
步骤S2012-2,基于所述多个协议状态对所述协议流量文件中每条流量消息进行标注;
步骤S2012-3,基于标注结果和所述流量消息之间的关联关***计所述多个协议状态之间的状态转移概率;
步骤S2012-4,基于所述状态转移概率构建马尔可夫模型;
步骤S2012-5,简化所述马尔可夫模型,得到所述自动状态机。
在一些实施例中,状态提取算法可以采用层次聚类算法、非负矩阵分解(Non-negative Matrix Factorization,简称NMF)算法或其他能够提取协议状态的算法,本申请对此不做限制。
在本实施例中,马尔可夫模型是指基于马尔可夫性质的模型,其假设一个给定过程的未来状态仅取决于当前状态。根据测试目标的不同,可以采用二阶马尔可夫模型或多阶马尔可夫模型,本申请对此不做限制。
在一些实施例中,自动状态机可以采用确定有限自动机(Deterministic finiteautomation,简称DFA),也可以称为确定有效状态自动机。
在一些实施例中,所述自动状态机的五元组包括:状态集合、输入集合∑、转移函数/>、初始状态/>以及可接受状态集合/>,因此,自动状态机可以表示为/>。
在本实施例中,所述自动状态机用于从所述初始状态开始,每当从所述输入集合中读入一个输入元素时,根据所述转移函数将所述自动状态机转移至所述状态集合中的下一个状态,并在所述下一个状态属于所述可接受状态集合的情况下,确定所述输入元素符合要求。
在一些实施例中,步骤S2013基于所述协议流量文件和所述自动状态机建立多个规则树模型,可以包括如下步骤:
步骤S2013-1,从所述协议流量文件中提取所述测试目标的报文格式特征;
步骤S2013-2,根据所述报文格式特征和所述自动状态机构建模型自动生成算法,其中,所述模型自动生成算法用于生成符合所述报文格式特征且协议状态依据所述自动状态机进行转移的多个规则树模型;
步骤S2013-3,通过所述模型自动生成算法生成所述多个规则树模型。
在一些实施例中,步骤S2014基于所述多个规则树模型和预设的变异策略生成所述第一测试用例,可以包括如下步骤:
步骤S2014-1,基于所述协议流量文件和标准协议从所述测试目标的报文格式特征中确定多个可变异协议字段;
步骤S2014-2,基于所述变异策略对每一个所述规则树模型中的所述多个可变异协议字段分别进行变异,得到每一个所述协议状态对应的多个所述第一测试用例。
在一示例性实施中,步骤S2014中的变异策略包括以下至少之一:比特移位、冗余值补充、随机值替换、特殊字符生成、不可见字符生成、超长字符串、格式化字符串。
在一些实施例中,步骤S202基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,可以包括如下步骤:
步骤S2021,从预设的初始状态开始,基于所述自动状态机遍历所述多个协议状态,每次选择对应协议状态下的一个所述第一测试用例进行请求报文的发送;
步骤S2022,监控所述测试目标在发送所述请求报文后接收的响应报文,根据所述响应报文和所述自动状态机进行模式匹配,得到模式匹配结果,其中,所述模式匹配结果包括所述测试目标的当前协议状态;
步骤S2023,基于所述模式匹配结果从所述第一测试用例中选择对应协议状态下的测试用例发送下一条所述请求报文。
在一些实施例中,步骤S204根据所述测试目标的模糊测试结果确定有效测试用例,可以包括:在所述模式匹配结果为异常状态的情况下,将所述请求报文和所述响应报文确定为一组有效测试用例。
进一步的,由于模糊测试的目的是为了找到非预期的执行路径,因此本申请将可能引发程序错误的异常输入设为有效测试用例,有效测试用例可以放入专用的有效测试用例池中进行存储。
在一些实施例中,在步骤S206基于所述有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型之前,所述方法还包括如下步骤:
步骤S2051,判断是否触发预设的机器学习训练阈值;
步骤S2052,在判断结果为是的情况下,停止基于所述第一测试用例和所述自动状态机进行第一轮模糊测试,并触发所述机器学习模型开始训练;
步骤S2053,在判断结果为否的情况下,继续基于所述第一测试用例和所述自动状态机进行第一轮模糊测试。
在一示例性实施例中,步骤S2051判断是否触发预设的机器学习训练阈值,包括但并不限制于以下任一判断步骤:
步骤S2051-1,判断所述有效测试用例的数量是否大于或等于预设的数据集阈值;
步骤S2051-2,判断所述模糊测试所覆盖的协议状态和状态转移路径的比例是否大于或等于预设的覆盖比例阈值;
步骤S2051-3,判断所述模糊测试是否已遍历预设的基本协议状态;
步骤S2051-4,判断所述第一测试用例是否已全部完成模糊测试。
通过步骤S2051至步骤S2053,可以保证第一轮模糊测试满足模型性能需求、满足协议测试需求和/或已能够覆盖大多数协议字段,保障了有效测试用例的覆盖范围以及用这些有效测试用例训练得到的机器学习模型的准确性。
在一些实施例中,步骤S206基于所述有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型,可以包括如下步骤:
步骤S2061,基于所述有效测试用例和所述机器学习模型进行无监督学习;
步骤S2062,基于预设的算法优化策略对所述机器学习模型进行优化,得到所述测试用例生成模型。
在一示例性实施例中,算法优化策略可以包括Adam算法、K折交叉验证、超参数优化等,本申请对此不做限制。
在一些实施例中,所述机器学习模型包括基于循环神经网络(Recurrent NeuralNetwork,简称RNN)的Seq2Seq模型,其中,所述Seq2Seq模型包括编码器结构和解码器结构,所述编码器结构用于将输入序列编码为特征向量,所述解码器结构用于将所述特征向量解码为输出序列。
在一示例性实施例中,所述Seq2Seq模型包括:基于教师强制机制(TeacherForcing)的Seq2Seq模型和基于注意力机制(Attention)的Seq2Seq模型。
在一些实施例中,在步骤S208基于所述测试用例生成模型生成第二测试用例之后,所述方法还可以包括如下步骤:
步骤S2091,基于所述第二测试用例和所述自动状态机对所述测试目标进行第二轮模糊测试;
步骤S2092,根据所述第二轮模糊测试的测试结果确定新的有效测试用例;
步骤S2093,基于所述新的有效测试用例更新所述测试用例生成模型。
通过步骤S2091至步骤S2093,可以持续扩大有效测试用例池,不断更新完善测试用例生成模型,进一步提高测试用例生成的有效性和模糊测试的测试效率。
通过本申请实施例,设计了一种模糊测试用例优化方法,通过基于自动状态机进行第一轮模糊测试,使模糊测试能够覆盖更多协议状态下的测试用例,并基于有效测试用例训练机器学习模型,提高生成测试用例的有效性,进而可以解决相关技术中生成的模糊测试用例有效率低,严重影响模糊测试效率的问题,有效避免了产生大量无效用例数据,使用尽可能少的测试用例减轻***负荷,在规定时间内大大提升测试效率。
本申请的实施例还提供了一种模糊测试工具,该模糊测试工具基于上述申请实施例中的模糊测试用例优化方法实现,具体可以通过自研软件或者自研软件与开源硬件结合的方式实现,可在Linux内核的计算机终端上部署、也可以使用其它设备通过虚拟机搭建应用环境,在自研软件的基础上需要配置对应的硬件设备,示例性的,测试802.11协议,则需要支持监控模式的无线网卡。
图3是本申请一实施例中的模糊测试用例优化方法的整体流程图,如图3所示,该流程包括如下步骤:
步骤S301,选择测试目标和网络协议;
步骤S302,枚举功能及抓取协议流量文件;
步骤S303,生成自动状态机;
步骤S304,建立规则树模型;
步骤S305,生成测试用例;
步骤S306,底层发包模块发送测试用例;
步骤S307,监控测试目标状态;
步骤S308,判断测试目标状态是否异常;
步骤S309,采集有效测试用例放入有效测试用例池;
步骤S310,判断是否触发机器学习训练阈值;
步骤S311,训练机器学习模型。
在本实施例中,步骤S302中抓取的协议流量文件也会被补充至有效测试用例池。
在本实施例中,步骤S306中的底层发包模块每次仅发送一条测试用例进行测试,在步骤S310触发机器学习训练阈值之前,会重复步骤S306至步骤S309直至触发机器学习训练阈值。
在本实施例中,步骤S311在得到训练好的机器学习模型(即上述的测试用例生成模型)后,会重复执行步骤S305至步骤S309进行第二轮模糊测试,并使用新的有效测试用例更新机器学习模型。
在一些实施例中,该模糊测试用例优化方法的流程具体包括以下几个关键步骤:
步骤S1,收集测试目标的协议流量文件(包含协议参数信息和流量报文),采用状态提取算法,根据DFA生成自动状态机。
步骤S2,根据网络协议的报文格式特征和自动状态机,采用模型自动生成算法建立规则树模型,并设计适用于网络协议的变异策略。
步骤S3,根据规则树模型和变异策略生成第一测试用例,对网络协议的待测试字段进行第一轮模糊测试,监控测试目标的协议状态和异常情况,采集有效测试用例放入有效测试用例池,通信过程中基于自动状态机对测试目标的协议状态进行识别和规则树遍历,以到达更深入的协议执行路径并覆盖更多的网络协议字段。
步骤S4,当触发机器学习训练阈值时,采用机器学习算法对有效测试用例池中的数据集开始训练(无监督学习),训练得到测试用例生成模型。
步骤S5,通过机器学习模型生成的第二测试用例进行第二轮模糊测试,并随着数据集的增加不断训练优化机器学习模型,进而提升测试用例有效性。
在一些实施例中,步骤S1中的信息收集是尽可能全面的捕获网络流量文件(即协议流量文件)并进行解析,把每个数据包中的五元组信息和各种类型的数据包文件保存下来,以便调整其模糊策略以匹配测试目标的功能。
在一示例性实施例中,网络流量文件的获取可以使用Wireshark、tcpdump等软件来实现,也可以调用libpcap、WinPcap等网络截包库来实现,网络流量文件可以是pcap文件格式,也可以是其他文件格式。网络流量文件可能来自目标网络,也可能是事先通过其他方式生成的。
在一示例性实施例中,步骤S1中的状态提取算法可以采用层次聚类算法、NMF算法或者其他能够提取状态的算法。
具体的,层次聚类算法通过构建树形结构来对数据进行分层聚类,它将给定数据样本视为一个单独的聚类,计算当前聚类中样本的相似度或距离,选择当前聚类中相似度最低的一部分数据样本,将其划分为两个新的聚类,更新相似度矩阵(特征^轨迹)以反映新的聚类之间的相似度,重复以上步骤,直到每个数据样本都成为一个单独的聚类,直到将数据集中的样本逐渐合并成越来越大的聚类,形成一个层次结构。由于大多数网络协议都是由多种特征组成,采用层次聚类可以形成基于特征的层次结构,消息中的每个单独的n-gram(即特定长度的字节序列)被映射到特征向量中的相应维度。
在本实施例中,步骤S1中的DFA(确定有限状态自动机或确定有限自动机)是一个能实现状态转移的自动机,它是从初始状态开始,每当从输入集合中读入一个输入元素时,DFA便根据转移函数自动转移至下一个状态。当输入完毕时,自动机的状态如果为可接受状态,则表示输入合法;反之即为非法。
具体的,确定有限状态自动机组成的五元组可以表示为,其中包括以下五种元素:
(1)一个非空有限的状态集合;
(2)一个输入字母表(非空有限的字符集合)∑;
(3)一个转移函数。其决定了当前状态在某输入的作用下自动进入的下一个状态(例如:/>);
(4)一个开始状态;
(5)一个可接受状态的集合。
由于确切的状态机只能从网络协议的实现中推断出来,根据跟踪到的网络轨迹来近似状态机,因此需要对每条流量消息进行标注,指示它所处的网络状态(或协议状态)在状态机的哪个阶段。对于这个带标注的流量消息,可以使用大小为2的滑动窗口(表征了网络流量的动态变动特征)将每个消息链接到之前跟踪到的痕迹。通过计算这些链接消息的概率,最终得到了马尔可夫模型,它提供了真实状态机的概率近似,接下来将此马尔可夫模型最小化为DFA。为此,保留概率大于零的转移及其相关状态,并且在每次转移时修正DFA以达到下一个状态的事件,以此达到网络协议状态迁移的目的。其中,马尔可夫模型是指基于马尔可夫性质的模型,其假设一个给定过程的未来状态仅取决于当前状态。
在一示例性实施例中,以WiFi协议作为测试目标构建自动状态机。图4是根据本申请实施例的基于WiFi协议的自动状态机的示意图,如图4所示,为WiFi协议下的各个协议状态之间的转移关系。
如图4所示,在WiFi协议状态中,Deauth表示断开认证,即向已连接的客户端发送断开连接的消息;Disasso表示解除关联,即向已连接的客户端发送解除关联的消息;0、0xd0、0x84可以分别表示一种特定的协议状态。
在本实施例中,***启动后可以直接调用预先构建的模型自动生成算法,自动生成规则树模型,减少人为干预,提高模型有效率。
图5是根据本申请实施例的规则树模型建立流程的示意图,如图5所示,该流程具体可以包括:
借助Wireshark等工具解析协议流量文件得到协议报文的报文格式特征(如分层结构、协议字段位置、协议字段类型及长度等特征);基于报文格式特征进行建模,根据建模结果设计模型自动生成算法,再人工开发代码实现算法功能,并将基于DFA生成的自动状态机导入代码流程,完成模型自动生成的功能;通过模型自动生成算法自动生成多个规则树模型。
在本实施例中,通过模型自动生成算法可以解决业内模糊测试先编写模型、基于模型进行测试,导致测试用例的有效性较差、覆盖率低甚至很多协议状态完全无法覆盖的痛点。
在一些实施例中,每个规则树模型都可以对应自动状态机中的一条状态转移路径。通过模型自动生成算法生成的多个规则树模型可以覆盖测试目标的全部状态转移路径。例如,发送与规则树模型1对应的测试用例,可以使测试目标从状态A转移到状态B。
在本实施例中,模型自动生成算法中嵌入了自动状态机(DFA),从初始状态开始,每当从输入测试用例集合中读入一个输入测试用例时,DFA便根据转移函数判断其是否满足条件转移至下一个状态,以此来满足多种协议状态迁移,进行更深层次的协议遍历,这些方法可以使被测设备的模糊测试执行的路径更深入,从而揭示更多难以识别的漏洞。
本申请实施例中的方法可以根据信息收集阶段的数据结合协议规范定制化协议规则树模型,有效避免产生大量实际无用用例数据,使用尽可能少的测试用例减轻***负荷,在规定时间内大大提升测试效率。
在一示例性实施例中,上述步骤S3中的变异策略是依据协议字段特征设计的,包括:根据协议流量文件和标准协议分析得出不可变异协议字段及可能引发问题的协议字段,设计对可能引发问题的协议字段进行变异并不断修正协议规则树模型;采用比特移位、冗余值补充、随机值替换、特殊字符/不可见字符生成、超长字符串、格式化字符串等变异策略;简化变异字段,提升测试效率。
在一些实施例中,上述步骤S3可通过如下方式实现:根据网络协议特征及DFA建立的协议规则树模型生成测试用例,然后进行第一轮模糊测试,对网络协议的待测试字段进行模糊测试,通信过程中进行测试目标状态的识别和规则树的遍历,从根节点开始遍历节点和边构成的状态图,按顺序遍历完所有可能的路径,以到达更深入的协议执行路径和覆盖更多协议字段。在此阶段为了全面覆盖协议的各种场景,采用简化变异策略可以尽可能减少主流程模糊测试用例数量,提升测试效率。
在本实施例中,对测试目标的协议状态的识别和对规则树模型的遍历是当数据流量通过监控模块时,会监控测试目标的响应报文,根据响应报文与自动状态机进行模式匹配,当匹配到规则树的某种规则时,说明它是对应的某种预设的状态,是一种应用场景或者是某一种攻击,目标网络设备会根据用户配置和模式匹配的结果来触发相应的动作。
在一示例性实施例中,模式匹配可以采用单模匹配的KMP算法,也可以采用BM算法或者Sunday算法,本申请对此不做限制。
在一些实施例中,步骤S4中机器学习模型的训练阈值可以根据模型的性能和应用需求来设定,训练阈值设定可以包括但并不限制于以下方法:
(1)数据集达到可训练阈值时,触发机器学习流程开始训练,示例性的,阈值设定为测试用例完成3000个有效测试用例,此时WiFi协议交叉验证得出的超参数和模型性能为最优解;
(2)第一轮模糊测试覆盖较多节点和边时,触发机器学习流程开始训练,示例性的,遍历完成自动状态机中80%的节点和边,此时能满足模型性能和协议测试需求且已能够覆盖大多数协议字段;
(3)第一轮模糊测试满足某状态的全部变化时,触发机器学习流程开始训练,示例性的,遍历完成自动状态机中预置的全部正常业务状态,此时满足协议测试需求且已能够覆盖基本全部协议字段;
(4)第一轮模糊测试完成时,触发机器学习流程开始训练,此时满足协议测试需求且已能够覆盖全部待测协议字段。
在一些实施例中,步骤S4中的机器学习模型采用RNN算法中的Seq2Seq模型。Seq2Seq模型是编码器-解码器(Encoder-Decoder)结构的网络,可进行序列化预测,输入一个序列,用一个RNN的Encode编码成一个向量,再用另一个RNN的Decoder解码成一个序列输出,且输出序列的长度是可变的。在Encoder中,将序列转换成一个固定长度的向量,然后通过Decoder将该向量转换成预期的序列输出。
在一些实施例中,为了改进Seq2Seq模型训练出效率更高的机器学习模型,还可以引入Teacher Forcing(教师强制)机制和Attention机制。
图6是根据本申请实施例的Teacher Forcing机制的Seq2Seq模型的示意图,如图6所示,在该机制中,将训练数据中的输入序列作为模型的输入,并将相应的目标序列作为模型的期望输出,在每个时间步,计算模型的输出与目标输出之间的损失。
示例性的,可以使用交叉熵损失或其他适当的损失函数,将损失反向传播到Seq2Seq模型,更新Seq2Seq模型的权重以减小损失。
本申请实施例通过在Seq2Seq模型中引入Teacher Forcing训练策略,解决了Decoder每一次解码又会作为下一次解码的输入导致的错误累计问题,可以加速模型的收敛并提高生成序列的准确性。
图7是根据本申请实施例的基于Attention机制的解码器示意图,如图7所示,注意力机制通过每次输入不同的(上下文信息)来解决无法有效处理长序列问题。每个/>自动为当前输出的/>选择最合适的上下文信息。
在本实施例中,可以使用来测量编码器第j阶段的/>(隐藏状态)与解码器第i阶段的/>相关性。解码器第i级输入的上下文信息/>来自于所有/>到/>的加权和,其中,i为时间,j为输入序列。
在一示例性实施例中,假设编码器每个隐藏状态为,序列长度为T,那么在第i个时刻/>向量的计算方式如下:
;
其中,权重系数采用点积矩阵法进行计算。给定i,/>就是在/>时刻的一个概率分布。
在一示例性实施例中,权重系数可以使用/>进行计算:
;
其中,为解码器在i时刻的隐状态,函数/>为距离计算函数,示例性的,可以采用内积或欧式距离。
在Attention机制中,在每个解码时间步都会计算一个权重分布,指示模型在当前时间步应该关注输入序列中的哪些部分。这个权重分布是通过计算输入序列中每个位置与当前解码位置的相关性来得到的。然后,通过将输入序列的表示加权求和,生成一个上下文向量,该上下文向量用于当前时间步的解码。
Attention机制允许模型在处理输入序列时,将更多的注意力集中在输入的特定部分,以便更有效地生成相应的输出序列。它还可以提高模型的性能,使其更好地捕捉输入和输出之间的复杂关系,进而解决了Seq2Seq模型无法有效处理长序列的问题。
在一示例性实施例中,在模型训练过程中可以采用Adam算法进行模型优化。Adam算法是一种不同于随机梯度下降的优化算法,它通过调整每个参数的学习率,对不同参数采用不同的更新步长,从而提高模型训练的效率。
具体的,可以在模型训练过程中计算模型的交叉熵损失函数,并通过Adam算法再将输出L最小化:
,其中/>为实际值,/>为预测值。
图8是根据本申请实施例的机器学习模型生成及应用流程示意图,如图8所示,第一轮模糊测试后会收集模糊测试中发送的请求报文及接收的响应报文,放至有效测试用例池,再使用机器学习算法进行模型训练,生成新的测试用例。
在本实施例中,机器学习模型通过机器学习算法自动训练得到。根据机器学习模型生成的第二测试用例可以进行第二轮模糊测试。重复进行模糊测试并基于新的有效测试用例继续训练机器学习模型,可以进一步提高测试用例的生成有效性,提高模糊测试效率。
在一示例性实施例中,机器学习模型训练可以在Ubuntu 18.04***上使用NVIDIAGeForce 1080 Ti进行,并使用python编程语言实现,训练后的机器学习模型可以直接被模糊测试工具调用来生成模糊测试用例。
在一些实施例中,可以采用交叉验证的K折交叉验证方法,通过多次构建不同的训练集和验证集来评估模型性能,进而调整超参数实现模型优化。示例性的,可以将数据分成12个子集,然后进行12次模型训练和验证,每次使用不同的子集作为验证集,其余的作为训练集。
表1为WiFi协议的超参数优化数据表,如表1所示,以WiFi协议为例,可以选择AP接入过程中50000条收发用例,获取其中3000条进行模型训练和超参数优化,依据生成的测试用例进行模糊测试。通过多次使用不同的训练和验证集,减少模型对特定数据分布的过度拟合。对模型性能进行多次验证,提供更可靠的性能估计,减少由于数据集划分不当导致的评估误差。模型训练的过程中使用验证集,在每个训练周期之后,使用验证集评估模型性能,以及进行调整超参数等优化操作。
表1
在一示例性实施例中,对超参数进行优化调整后,可以选取以下超参数来为保证新测试用例可用性:
(1)每次训练的样本数目batch_size=512(优化测试速度,但会增加内存);
(2)rnn隐层结点数量rnn_size=100(决定测试用例多样性,减少重复,太大会影响内存且过拟合);
(3)rnn cell数量num_layers=10(决定测试用例多样性,太少会出现大量重复用例,太大会使模型过拟合);
(4)模型学习训练集的速度learning_rate=0.05(对测试用例影响不大,但会影响测试速度)。
本申请并不限制于上述参数,不同测试目标或不同测试场景下的超参数优化结果可能存在差异,本申请对此不做限制。
在另一些实施例中,为保证新测试用例数量,需要将平均欧几里得距离(Euclidean distance)较大的收发报文作为数据集,简单来说希望数据集差距相对较大;为保证新测试用例有效性和正确发送,需要将新测试用例的radio tap头进行替换。
在一些实施例中,第一轮测试结束后,可以在有效测试用例池中筛选出一定数量的测试用例,使用以上训练出的机器学习模型生成测试用例,用于第二轮模糊测试,以此提升测试用例有效性和测试效率。随着模糊测试工具的不断应用,机器学习模型会随着训练数据集的增加而更加精确,机器学习模型也能够得到不断完善。
本申请实施例中技术方案,具备以下有益效果:
效果1:通过自研软件、或者自研软件与商业化硬件结合,可以支持多种协议的模糊测试,并专注于通信领域公有协议或自研协议测试。
效果2:收集测试目标(如待测设备)的协议参数信息和流量报文,采用状态提取算法提取状态,根据DFA生成协议状态机,可以使得模糊测试覆盖功能更加全面。
效果3:根据网络协议特征及协议状态机设计了带有状态机的协议规则树模型,能够覆盖更多的协议状态。
效果4:采用多轮测试模式,确定训练边界,使用机器学习算法对采集的数据集进行训练,训练出适用于网络协议的机器学习模型,提升测试用例的有效性。
根据本申请的另一个实施例,还提供了一种模糊测试用例优化***。
图9是根据本申请实施例的一种模糊测试用例优化***的框图,如图9所示,该***包括以下模块:
模糊测试模块92、有效测试用例池94以及机器学习模块96。
模糊测试模块92,用于基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,其中,第一测试用例包含测试目标在多个协议状态下的第一测试用例;
有效测试用例池94,用于存储根据所述测试目标的模糊测试结果确定的有效测试用例;
机器学习模块96,用于基于有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型,并基于测试用例生成模型生成第二测试用例。
在一些实施例中,该***还包括第一测试用例生成模块,用于生成第一测试用例。
其中,第一测试用例生成模块包括:
采集模块,用于收集所述测试目标的协议流量文件;
状态机模块,用于基于所述协议流量文件构建所述测试目标的自动状态机,其中,所述自动状态机用于指示所述测试目标在所述多个协议状态之间的状态转移;
规则树模块,用于基于所述协议流量文件和所述自动状态机建立多个规则树模型,其中,每一个所述规则树模型对应一个所述协议状态;
用例生成模块,用于基于所述多个规则树模型和预设的变异策略生成所述第一测试用例。
在一些实施例中,状态机模块,用于基于状态提取算法从所述协议流量文件中提取所述多个协议状态;基于所述多个协议状态对所述协议流量文件中每条流量消息进行标注;基于标注结果和所述流量消息之间的关联关***计所述多个协议状态之间的状态转移概率;基于所述状态转移概率构建马尔可夫模型;简化所述马尔可夫模型,得到所述自动状态机。
在一些实施例中,所述自动状态机的五元组包括:状态集合、输入集合、转移函数、初始状态以及可接受状态集合,其中,所述自动状态机用于从所述初始状态开始,每当从所述输入集合中读入一个输入元素时,根据所述转移函数将所述自动状态机转移至所述状态集合中的下一个状态,并在所述下一个状态属于所述可接受状态集合的情况下,确定所述输入元素符合要求。
在一些实施例中,规则树模块,用于从所述协议流量文件中提取所述测试目标的报文格式特征;根据所述报文格式特征和所述自动状态机构建模型自动生成算法,其中,所述模型自动生成算法用于生成符合所述报文格式特征且协议状态依据所述自动状态机进行转移的多个规则树模型;通过所述模型自动生成算法生成所述多个规则树模型。
在一些实施例中,用例生成模块,用于基于所述协议流量文件和标准协议从所述测试目标的报文格式特征中确定多个可变异协议字段;基于所述变异策略对每一个所述规则树模型中的所述多个可变异协议字段分别进行变异,得到每一个所述协议状态对应的多个所述第一测试用例。
在一些实施例中,模糊测试模块92,用于从预设的初始状态开始,基于所述自动状态机遍历所述多个协议状态,每次选择对应协议状态下的一个所述第一测试用例进行请求报文的发送;监控所述测试目标在发送所述请求报文后接收的响应报文,根据所述响应报文和所述自动状态机进行模式匹配,得到模式匹配结果,其中,所述模式匹配结果包括所述测试目标的当前协议状态;基于所述模式匹配结果从所述第一测试用例中选择对应协议状态下的测试用例发送下一条所述请求报文。
在一些实施例中,模糊测试模块92,还用于在所述模式匹配结果为异常状态的情况下,将所述请求报文和所述响应报文确定为一组有效测试用例。
在一些实施例中,模糊测试模块92,还用于判断是否触发预设的机器学习训练阈值;在判断结果为是的情况下,停止基于所述第一测试用例和所述自动状态机进行第一轮模糊测试,并触发所述机器学习模型开始训练;在判断结果为否的情况下,继续基于所述第一测试用例和所述自动状态机进行第一轮模糊测试。
在一些实施例中,机器学习模块96,用于基于所述有效测试用例和所述机器学习模型进行无监督学习;基于预设的算法优化策略对所述机器学习模型进行优化,得到所述测试用例生成模型。
在一些实施例中,模糊测试模块92,还用于基于所述第二测试用例和所述自动状态机对所述测试目标进行第二轮模糊测试;根据所述第二轮模糊测试的测试结果确定新的有效测试用例。机器学习模块96,还用于基于所述新的有效测试用例更新所述测试用例生成模型。
在一示例性实施例中,该模糊测试用例优化***还可以由前端用户界面(UserInterface,简称UI)、后台服务端以及中间件构成,采用B/S架构,并在单一主机上同时搭建交互UI和后台服务端,其集成了数据变异、协议规则树模型自动生成、协议规则树模型导入、测试状态监控与模型更新、有效测试用例收集、测试用例机器学习训练等功能,前端UI由Django框架和Vue语言编写,后台使用Python语言编写。后台服务端可以包含上述任一项实施例中的模块。
通过本申请实施例中设计的模糊测试用例优化***,可以自动生成多种协议状态下的测试用例,模糊测试也能够覆盖更多协议状态下的测试用例,通过机器学习模型可以提高生成测试用例的有效性,进而可以解决相关技术中生成的模糊测试用例有效率低,严重影响模糊测试效率的问题,提高了模糊测试效率。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本申请的实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一项方法实施例中的步骤。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (19)
1.一种模糊测试用例优化方法,其特征在于,所述方法包括:
基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,其中,所述第一测试用例包含所述测试目标在多个协议状态下的测试用例;
根据所述测试目标的模糊测试结果确定有效测试用例;
基于所述有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型;
基于所述测试用例生成模型生成第二测试用例。
2.根据权利要求1所述的方法,其特征在于,在基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试之前,所述方法还包括:
收集所述测试目标的协议流量文件;
基于所述协议流量文件构建所述测试目标的自动状态机,其中,所述自动状态机用于指示所述测试目标在所述多个协议状态之间的状态转移;
基于所述协议流量文件和所述自动状态机建立多个规则树模型,其中,每一个所述规则树模型对应一个所述协议状态;
基于所述多个规则树模型和预设的变异策略生成所述第一测试用例。
3.根据权利要求2所述的方法,其特征在于,基于所述协议流量文件构建所述测试目标的自动状态机,包括:
基于状态提取算法从所述协议流量文件中提取所述多个协议状态;
基于所述多个协议状态对所述协议流量文件中每条流量消息进行标注;
基于标注结果和所述流量消息之间的关联关***计所述多个协议状态之间的状态转移概率;
基于所述状态转移概率构建马尔可夫模型;
简化所述马尔可夫模型,得到所述自动状态机。
4.根据权利要求3所述的方法,其特征在于,所述自动状态机的五元组包括:状态集合、输入集合、转移函数、初始状态以及可接受状态集合,其中,所述自动状态机用于从所述初始状态开始,每当从所述输入集合中读入一个输入元素时,根据所述转移函数将所述自动状态机转移至所述状态集合中的下一个状态,并在所述下一个状态属于所述可接受状态集合的情况下,确定所述输入元素符合要求。
5.根据权利要求2所述的方法,其特征在于,基于所述协议流量文件和所述自动状态机建立多个规则树模型,包括:
从所述协议流量文件中提取所述测试目标的报文格式特征;
根据所述报文格式特征和所述自动状态机构建模型自动生成算法,其中,所述模型自动生成算法用于生成符合所述报文格式特征且协议状态依据所述自动状态机进行转移的多个规则树模型;
通过所述模型自动生成算法生成所述多个规则树模型。
6.根据权利要求2所述的方法,其特征在于,基于所述多个规则树模型和预设的变异策略生成所述第一测试用例,包括:
基于所述协议流量文件和标准协议从所述测试目标的报文格式特征中确定多个可变异协议字段;
基于所述变异策略对每一个所述规则树模型中的所述多个可变异协议字段分别进行变异,得到每一个所述协议状态对应的多个所述第一测试用例。
7.根据权利要求6所述的方法,其特征在于,所述变异策略包括以下至少之一:比特移位、冗余值补充、随机值替换、特殊字符生成、不可见字符生成、超长字符串、格式化字符串。
8.根据权利要求1所述的方法,其特征在于,基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,包括:
从预设的初始状态开始,基于所述自动状态机遍历所述多个协议状态,每次选择对应协议状态下的一个所述第一测试用例进行请求报文的发送;
监控所述测试目标在发送所述请求报文后接收的响应报文,根据所述响应报文和所述自动状态机进行模式匹配,得到模式匹配结果,其中,所述模式匹配结果包括所述测试目标的当前协议状态;
基于所述模式匹配结果从所述第一测试用例中选择对应协议状态下的测试用例发送下一条所述请求报文。
9.根据权利要求8所述的方法,其特征在于,根据所述测试目标的模糊测试结果确定有效测试用例,包括:
在所述模式匹配结果为异常状态的情况下,将所述请求报文和所述响应报文确定为一组有效测试用例。
10.根据权利要求1所述的方法,其特征在于,在基于所述有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型之前,所述方法还包括:
判断是否触发预设的机器学习训练阈值;
在判断结果为是的情况下,停止基于所述第一测试用例和所述自动状态机进行第一轮模糊测试,并触发所述机器学习模型开始训练;
在判断结果为否的情况下,继续基于所述第一测试用例和所述自动状态机进行第一轮模糊测试。
11.根据权利要求10所述的方法,其特征在于,判断是否触发预设的机器学习训练阈值,包括以下之一:
判断所述有效测试用例的数量是否大于或等于预设的数据集阈值;
判断所述模糊测试所覆盖的协议状态和状态转移路径的比例是否大于或等于预设的覆盖比例阈值;
判断所述模糊测试是否已遍历预设的基本协议状态;
判断所述第一测试用例是否已全部完成模糊测试。
12.根据权利要求1所述的方法,其特征在于,基于所述有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型,包括:
基于所述有效测试用例和所述机器学习模型进行无监督学习;
基于预设的算法优化策略对所述机器学习模型进行优化,得到所述测试用例生成模型。
13.根据权利要求1所述的方法,其特征在于,所述机器学习模型包括基于循环神经网络的Seq2Seq模型,其中,所述Seq2Seq模型包括编码器结构和解码器结构,所述编码器结构用于将输入序列编码为特征向量,所述解码器结构用于将所述特征向量解码为输出序列。
14.根据权利要求13所述的方法,其特征在于,所述Seq2Seq模型包括:基于教师强制机制的Seq2Seq模型和基于注意力机制的Seq2Seq模型。
15.根据权利要求1所述的方法,其特征在于,在基于所述测试用例生成模型生成第二测试用例之后,所述方法还包括:
基于所述第二测试用例和所述自动状态机对所述测试目标进行第二轮模糊测试;
根据所述第二轮模糊测试的测试结果确定新的有效测试用例;
基于所述新的有效测试用例更新所述测试用例生成模型。
16.一种模糊测试用例优化***,其特征在于,所述***包括:
模糊测试模块,用于基于预先生成的第一测试用例和自动状态机对测试目标进行第一轮模糊测试,其中,所述第一测试用例包含所述测试目标在多个协议状态下的第一测试用例;
有效测试用例池,用于存储根据所述测试目标的模糊测试结果确定的有效测试用例;
机器学习模块,用于基于所述有效测试用例对机器学习模型进行训练,得到训练好的测试用例生成模型,并基于所述测试用例生成模型生成第二测试用例。
17.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器运行时执行所述权利要求1至15任一项中所述的方法。
18.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至15任一项中所述的方法。
19.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至15任一项中所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410134598.7A CN117667749B (zh) | 2024-01-31 | 2024-01-31 | 一种模糊测试用例优化方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410134598.7A CN117667749B (zh) | 2024-01-31 | 2024-01-31 | 一种模糊测试用例优化方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117667749A true CN117667749A (zh) | 2024-03-08 |
CN117667749B CN117667749B (zh) | 2024-06-07 |
Family
ID=90066423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410134598.7A Active CN117667749B (zh) | 2024-01-31 | 2024-01-31 | 一种模糊测试用例优化方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667749B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118132453A (zh) * | 2024-05-10 | 2024-06-04 | 中移(杭州)信息技术有限公司 | 固件测试方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120210426A1 (en) * | 2009-10-30 | 2012-08-16 | Sun Yat-Sen University | Analysis system for unknown application layer protocols |
CN104142888A (zh) * | 2014-07-14 | 2014-11-12 | 北京理工大学 | 一种有状态协议的规则化状态机模型设计方法 |
US20190004926A1 (en) * | 2017-06-29 | 2019-01-03 | Nicira, Inc. | Methods and systems that probabilistically generate testing loads |
CN109525457A (zh) * | 2018-11-14 | 2019-03-26 | 中国人民解放军陆军工程大学 | 一种基于状态迁移遍历的网络协议模糊测试方法 |
CN113326181A (zh) * | 2020-02-29 | 2021-08-31 | 华为技术有限公司 | 有状态网络协议的模糊测试方法、装置及存储介质 |
CN113542299A (zh) * | 2021-07-29 | 2021-10-22 | 国家工业信息安全发展研究中心 | 一种基于模糊测试的工业互联网漏洞挖掘方法及*** |
US20230044281A1 (en) * | 2021-07-21 | 2023-02-09 | Korea Advanced Institute Of Science And Technology | Protocol state fuzzing method and system for security of distributed software-defined network control plane |
CN116094972A (zh) * | 2023-01-18 | 2023-05-09 | 重庆邮电大学 | 基于QRNN神经网络的Modbus TCP协议模糊测试方法 |
CN116248337A (zh) * | 2022-12-23 | 2023-06-09 | 中国人民解放军战略支援部队信息工程大学 | 一种基于测试用例自动化生成的协议模糊测试方法及装置 |
CN116662184A (zh) * | 2023-06-05 | 2023-08-29 | 福建师范大学 | 一种基于Bert的工控协议模糊测试用例筛选方法及*** |
CN117435506A (zh) * | 2023-12-15 | 2024-01-23 | 中兴通讯股份有限公司 | 模糊测试方法、电子设备及计算机可读存储介质 |
-
2024
- 2024-01-31 CN CN202410134598.7A patent/CN117667749B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120210426A1 (en) * | 2009-10-30 | 2012-08-16 | Sun Yat-Sen University | Analysis system for unknown application layer protocols |
CN104142888A (zh) * | 2014-07-14 | 2014-11-12 | 北京理工大学 | 一种有状态协议的规则化状态机模型设计方法 |
US20190004926A1 (en) * | 2017-06-29 | 2019-01-03 | Nicira, Inc. | Methods and systems that probabilistically generate testing loads |
CN109525457A (zh) * | 2018-11-14 | 2019-03-26 | 中国人民解放军陆军工程大学 | 一种基于状态迁移遍历的网络协议模糊测试方法 |
CN113326181A (zh) * | 2020-02-29 | 2021-08-31 | 华为技术有限公司 | 有状态网络协议的模糊测试方法、装置及存储介质 |
US20230044281A1 (en) * | 2021-07-21 | 2023-02-09 | Korea Advanced Institute Of Science And Technology | Protocol state fuzzing method and system for security of distributed software-defined network control plane |
CN113542299A (zh) * | 2021-07-29 | 2021-10-22 | 国家工业信息安全发展研究中心 | 一种基于模糊测试的工业互联网漏洞挖掘方法及*** |
CN116248337A (zh) * | 2022-12-23 | 2023-06-09 | 中国人民解放军战略支援部队信息工程大学 | 一种基于测试用例自动化生成的协议模糊测试方法及装置 |
CN116094972A (zh) * | 2023-01-18 | 2023-05-09 | 重庆邮电大学 | 基于QRNN神经网络的Modbus TCP协议模糊测试方法 |
CN116662184A (zh) * | 2023-06-05 | 2023-08-29 | 福建师范大学 | 一种基于Bert的工控协议模糊测试用例筛选方法及*** |
CN117435506A (zh) * | 2023-12-15 | 2024-01-23 | 中兴通讯股份有限公司 | 模糊测试方法、电子设备及计算机可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118132453A (zh) * | 2024-05-10 | 2024-06-04 | 中移(杭州)信息技术有限公司 | 固件测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117667749B (zh) | 2024-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | Semantic communications for future internet: Fundamentals, applications, and challenges | |
CN117667749B (zh) | 一种模糊测试用例优化方法及*** | |
Li et al. | An intelligent fuzzing data generation method based on deep adversarial learning | |
Aldosari et al. | Fusion in sensor networks with communication constraints | |
CN107978311A (zh) | 一种语音数据处理方法、装置以及语音交互设备 | |
CN110324170B (zh) | 数据分析设备、多模型共决策***及方法 | |
CN114039870B (zh) | 基于深度学习的蜂窝网络中视频流应用实时带宽预测方法 | |
US20210027167A1 (en) | Model structure extraction for analyzing unstructured text data | |
CN112134873B (zh) | 一种IoT网络异常流量实时检测方法及*** | |
Ni et al. | Spectrum sensing via temporal convolutional network | |
CN116306780B (zh) | 一种动态图链接生成方法 | |
CN117272017A (zh) | 异质图数据节点嵌入特征提取模型训练方法、嵌入特征提取方法、节点分类方法及装置 | |
Singhal et al. | Greedy Shapley Client Selection for Communication-Efficient Federated Learning | |
CN115577797B (zh) | 一种基于本地噪声感知的联邦学习优化方法及*** | |
Jameel et al. | Deep learning for frame error prediction using a DARPA spectrum collaboration challenge (SC2) dataset | |
CN116980356A (zh) | 一种网络流量识别方法、装置、电子设备及存储介质 | |
CN113360772B (zh) | 一种可解释性推荐模型训练方法与装置 | |
CN109657907A (zh) | 地理国情监测数据的质量控制方法、装置和终端设备 | |
Yang et al. | Conventional Neural Network‐Based Radio Frequency Fingerprint Identification Using Raw I/Q Data | |
Xie et al. | Research and application of intrusion detection method based on hierarchical features | |
Ren et al. | Deep Learning Based Identification Method for Signal-Level Wireless Protocol | |
Siemens et al. | Internet of Things Data Transfer Method Using Neural Network Autoencoder | |
Boloursaz Mashhadi et al. | Efficient codebook design for digital communication through compressed voice channels | |
Zhang et al. | Spectrum usage anomaly detection from sub-sampled data stream via deep neural network | |
CN116957067B (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 |