一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质技术

技术编号:26065356 阅读:28 留言:0更新日期:2020-10-28 16:38
本发明专利技术涉及一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质,通过在测试平台中增加四类组件达到优化测试用例的效果:1、基于测试脚本模型变异策略标记污点数据;2、扩展测试引擎支持调用污点传播路径分析模块;3、测试引擎增加测试用例评价筛选组件;4、污点数据追踪表的设计与存储。使用动态污点跟踪技术进行模糊测试用例的目标是减少测试用例冗余度,减少不同测试用例执行目标程序相同路径的情况,保证尽量少的测试用例覆盖尽量多的测试程序路径。本发明专利技术将使用动态污点跟踪技术的原理进行模块化设计,使测试平台能够根据协议实现的程序特点差异化定制动态污点传播分析技术中的各项要素和测试用例筛选模型。

【技术实现步骤摘要】
一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质
本专利技术涉及模糊测试领域,具体涉及一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质。
技术介绍
模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。当传统工业网络借助互联互通技术飞速发展,功能日渐强大,效率大幅提升的同时,工业互联网安全也越来越受到关注,一旦工业互联网中的关键协议设备被攻击导致工控设备无法正常工作,将会导致企业重大经济损失等严重后果。在对工业互联网安全的研究中,其中一个很重要的思路是对网络中的关键设备进行协议安全测试,模糊测试是安全测试的一个常用方法,它是一项简单的技术,但是却能够找出许多协议实现过程中的重要bug,及时预警或采取规避措施,确保在设备上线之前,协议漏洞得到及时修复或有效追踪,从而提高网络系统的整体安全性。工业互联网、物联网发展迅速,国际上知名的工控协议测试平台在专业技术上比较权威,但面对国内越来越繁杂的设备检测需求,存在定制开发周期长、检测费用高、不支持添加自定义协议等问题,并不能完全满足国内工控物联网发展的测试需求,国内相关的企事业单位都在自主研发网络安全测试平台,其中包含一种用于工控物联网协议的模糊测试平台(以下简称“测试平台”),国内工控物联网领域尚没有一款针对协议测试的通用工具,该测试平台开发了一套高效的模糊测试语言,根据工控和物联网协议面向控制、高度结构化的特点,提供专用变异方法如结构变异、错误注入、上下文不一致等,保证快速高效地构建协议测试模型,由测试引擎基于模型自动生成大量测试用例。该测试平台不仅能满足传统工控协议的测试需求,也能快速应用于医学数字影像通信协议、轨道交通安全通信协议等行业协议,为相关设备提供检测服务。模糊测试在安全测试方面有它的优势,也存在难以避免的缺陷。因为模糊测试是黑盒测试的一种,测试过程与目标程序紧密度比较差,缺乏针对性,模糊测试脚本往往冗余量大,而漏洞检出率低,隐藏较深的漏洞无法检出等问题。本专利技术在上述测试平台基础上提供了一种基于机器学习的模糊测试用例生成方法,基于现有测试平台框架,扩展测试脚本的变异函数接口,支持使用机器学习算法生成测试用例库,升级测试引擎的数据接收模块,支持对目标设备返回数据进行解析,记录本条测试用例对应的执行目标程序的路径信息,实现对测试用例的评价,达到筛选最优测试用例的目标。
技术实现思路
专利技术目的:提供一种基于机器学习的模糊测试用例生成方法,进一步目的是提出一种运行上述方法的计算机设备与可读存储介质,以解决现有技术存在的上述问题。技术方案:一种基于机器学习的模糊测试用例生成方法,包括污点跟踪、污点分析、测试用例筛选、以及存储污点数据追踪表四个步骤,具体如下:步骤1、污点跟踪:标记污点源,跟踪目标程序运行;步骤2、污点分析:存储污点跟踪信息,分析污点路径的相似度;步骤3、测试用例筛选:标记有效测试用例,生成新的测试用例库;步骤4、存储污点数据追踪表。在进一步的实施例中,步骤1进一步包括:将taint_data指定为污点源数据指定接口,当测试引擎解析到字段taint_data接口时,调用污点初始化模块initialize_fun1,将污点源数据映射到内存空间,并存储于污点数据追踪表中;当测试引擎获得污点跟踪信息后调用dress_fun1进行测试用例筛选模块。在进一步的实施例中,步骤2进一步包括:对使用污点跟踪技术的测试用例的回包进行污点传播路径分析;对使用动态污点跟踪技术的目标程序做二进制插桩处理,或者在源代码中加入插桩代码,将污点数据在执行目标程序过程中涉及的路径记录并返回给测试平台;如果目标程序是开源代码,则在分支中插入插桩代码记录路径;如果是二进制目标程序,采用第三方插桩平台对二进制代码进行插桩;当测试用例数据执行完目标程序后,记录污点数据的传播和清除状态,并作为回包数据的一部分返回给测试平台。在进一步的实施例中,步骤3进一步包括:步骤3-1、当数据库中记录了所有污点源数据的传播路径后,获得每一个污点源数据在目标程序中的执行指令序列,在内存中形成污点跟踪指令路径链表;步骤3-2、根据筛选目标使用各种算法对内存中的指令路径链表进行评价,当存在相同或相似的指令路径链表,则说明不同的测试用例在目标程序中执行了相似的路径,此时判定存在无效的测试用例;采用聚类分析方法对指令路径链表集进行评价,找到路径相似度高的测试用例进行过滤;步骤3-3、过滤无效的测试用例,减少模糊测试用例的冗余度,标记有效的测试用例以提高测试效率。在进一步的实施例中,步骤3-2进一步包括:采用海明码距离分析方法将每个测试用例的指令路径链表使用哈希算法进行签名,用海明码距离计算两个签名值的距离,距离值越小,表示指令路径越相似,反之则为不相似。在进一步的实施例中,步骤4进一步包括:创建taint_trace表以存储污点源数据在目标程序执行过程的跟踪路径信息;其中字段名为Test_case_id,对应类型为INT,键约束为主键,表示测试用例编号;字段名为Taint_source,对应类型为HexString,键约束为主键,表示污染源数据;字段名为InsNum,对应类型为Hex,表示执行路径中指令序列编号;字段名为Ins,对应类型为varchar,表示污染源数据传播的指令;字段名为Status,对应类型为Hex,表示污点传播或污点清除。一种基于机器学习的模糊测试用例生成系统,包括用于标记污点数据的测试脚本模型;用于扩展测试引擎、且支持调用污点传播路径的分析模块;用于测试引擎增加测试用例评价的筛选组件;以及用于存储污点数据追踪表的存储模块。在进一步的实施例中,所述测试脚本模型进一步将taint_data指定为污点源数据指定接口,当测试引擎解析到字段taint_data接口时,调用污点初始化模块initialize_fun1,将污点源数据映射到内存空间,并存储于污点数据追踪表中;当测试引擎获得污点跟踪信息后调用dress_fun1进行测试用例筛选模块;所述分析模块进一步对使用污点跟踪技术的测试用例的回包进行污点传播路径分析;对使用动态污点跟踪技术的目标程序做二进制插桩处理,或者在源代码中加入插桩代码,将污点数据在执行目标程序过程中涉及的路径记录并返回给测试平台;判断目标程序是否为开源代码;如果目标程序是开源代码,则在分支中插入插桩代码记录路径;如果是二进制目标程序,采用第三方插桩平台对二进制代码进行插桩;当测试用例数据执行完目标程序后,记录污点数据的传播和清除状态,并作为回包数据的一部分返回给测试平台;所述筛选组件进一步用于在数据库中记录了所有污点源数据的传播路径后,获得每一个污点源数据在目标程序中的执行指令序列,在内存中形成污点跟踪指令路径链表;根据筛选目标使用各种算法对内存中的指令路径链表进行评价,当存在相同或相似的指令路径链表,则说明不同的测试用例在目本文档来自技高网
...

【技术保护点】
1.一种基于机器学习的模糊测试用例生成方法,其特征是包括以下步骤:/n步骤1、污点跟踪:标记污点源,跟踪目标程序运行;/n步骤2、污点分析:存储污点跟踪信息,分析污点路径的相似度;/n步骤3、测试用例筛选:标记有效测试用例,生成新的测试用例库;/n步骤4、存储污点数据追踪表。/n

【技术特征摘要】
1.一种基于机器学习的模糊测试用例生成方法,其特征是包括以下步骤:
步骤1、污点跟踪:标记污点源,跟踪目标程序运行;
步骤2、污点分析:存储污点跟踪信息,分析污点路径的相似度;
步骤3、测试用例筛选:标记有效测试用例,生成新的测试用例库;
步骤4、存储污点数据追踪表。


2.根据权利要求1所述的一种基于机器学习的模糊测试用例生成方法,其特征在于,步骤1进一步包括:将taint_data指定为污点源数据指定接口,当测试引擎解析到字段taint_data接口时,调用污点初始化模块initialize_fun1,将污点源数据映射到内存空间,并存储于污点数据追踪表中;当测试引擎获得污点跟踪信息后调用dress_fun1进行测试用例筛选模块。


3.根据权利要求1所述的一种基于机器学习的模糊测试用例生成方法,其特征在于,步骤2进一步包括:对使用污点跟踪技术的测试用例的回包进行污点传播路径分析;对使用动态污点跟踪技术的目标程序做二进制插桩处理,或者在源代码中加入插桩代码,将污点数据在执行目标程序过程中涉及的路径记录并返回给测试平台;如果目标程序是开源代码,则在分支中插入插桩代码记录路径;如果是二进制目标程序,采用第三方插桩平台对二进制代码进行插桩;当测试用例数据执行完目标程序后,记录污点数据的传播和清除状态,并作为回包数据的一部分返回给测试平台。


4.根据权利要求1所述的一种基于机器学习的模糊测试用例生成方法,其特征在于,步骤3进一步包括:
步骤3-1、当数据库中记录了所有污点源数据的传播路径后,获得每一个污点源数据在目标程序中的执行指令序列,在内存中形成污点跟踪指令路径链表;
步骤3-2、根据筛选目标使用各种算法对内存中的指令路径链表进行评价,当存在相同或相似的指令路径链表,则说明不同的测试用例在目标程序中执行了相似的路径,此时判定存在无效的测试用例;采用聚类分析方法对指令路径链表集进行评价,找到路径相似度高的测试用例进行过滤;
步骤3-3、过滤无效的测试用例,减少模糊测试用例的冗余度,标记有效的测试用例以提高测试效率。


5.根据权利要求4所述的一种基于机器学习的模糊测试用例生成方法,其特征在于,步骤3-2进一步包括:采用海明码距离分析方法将每个测试用例的指令路径链表使用哈希算法进行签名,用海明码距离计算两个签名值的距离,距离值越小,表示指令路径越相似,反之则为不相似。


6.根据权利要求1所述的一种基于机器学习的模糊测试用例生成方法,其特征在于,步骤4进一步包括:创建taint_trace表以存储污点源数据在目标程序执行过程的跟踪路径信息;
其中字段名为Test_case_id,对应类型为INT,键约束为主键,表示测试用例编号;
字段名为Taint_source,对应类型为HexString,键约束为...

【专利技术属性】
技术研发人员:叶青郭涛李明柱
申请(专利权)人:信联科技南京有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1