System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及工控协议模糊测试,特别是涉及一种基于状态的工控协议模糊测试方法。
技术介绍
1、模糊测试是一种常见的漏洞挖掘技术,通过向被测对象输入大量随机或半随机的测试用例,并监视执行状态来检测异常,探索被测对象可能存在的脆弱性。灰盒协议模糊测试技术是模糊测试技术在协议领域的一种应用。
2、现有的灰盒协议模糊测试工具存在一些不足,包括协议状态机推断不够准确等,导致模糊测试执行时间长、测试效率低,因此需要展开有针对性的研究。
技术实现思路
1、本专利技术的目的在于针对现有的灰盒协议模糊测试工具的不足,提出一种基于状态的工控协议模糊测试方法。
2、本专利技术的目的是通过以下技术方案实现的:一种基于状态的工控协议模糊测试方法,该方法包括以下步骤:
3、步骤1:构造初始测试用例形成初始种子池;
4、步骤2:利用程序静态分析方法对工控协议程序源码进行分析,制定启发式规则提取程序中的状态变量;
5、步骤3:采用程序插桩技术,实现覆盖率的插桩,同时在程序的状态变量位点插入桩点,以实现状态变量的追踪;
6、步骤4:执行初始模糊测试循环,在程序运行时状态变量桩点被触发,从而收集每个变异生成的测试用例对应的一组状态变量值数据,完成状态变量矩阵的构建;
7、步骤5:采用无监督的聚类方法建立状态变量矩阵对应的状态模型,每组数据代表一个状态,相同的状态聚为一类,每类保留至少一个测试用例,并用相同的数值进行标签,不同的状态用不
8、步骤6:再次执行模糊测试循环,使用状态选择算法挑选状态,向运行的程序发送挑选出的状态保留的测试用例,使程序进入所选状态;
9、步骤7:从种子池中选择一个测试用例并进行变异以生成若干新测试用例发送到运行的程序中,将产生新状态或新状态转换的新测试用例视为有趣的,添加到种子池中,利用新状态或新状态转换更新状态模型与协议程序状态机,以进行新一轮循环重新选择测试用例进行变异,最终输出模糊测试结果。
10、进一步地,所述步骤2中,采用的程序静态分析方法为分析调用关系图与构建抽象语法树。
11、进一步地,所述步骤2具体为:分析工控协议程序源码的工作逻辑,制定一组启发式规则用来识别与协议状态相关的变量,记为状态变量;根据所制定的启发式规则对所构建的抽象语法树进行遍历,查找出状态变量及其位置。
12、进一步地,所述步骤2中,所述启发式规则为:①状态变量可能在分支语句中;②状态变量可能在循环语句中;③状态变量可能会在程序运行时的交互过程中产生值的变化。
13、进一步地,所述步骤4中,假设提取了n个状态变量,且输入了m个测试用例,则将收集的m个测试用例对应的m组状态变量值以状态变量矩阵的形式表示为:
14、
15、其中,xmn表示第m组第n个状态变量的值。
16、进一步地,所述步骤5中,采用无监督的聚类方法将每组数据用一个状态参数yi来表示,其中i=1,2,...,m,得到状态模型表示为:
17、
18、进一步地,所述步骤6中,状态选择算法具体为:初始时按顺序选择状态;之后收集每个状态所对应的覆盖率上升程度并归一化到[0,1]作为每个状态的分值,覆盖率上升越多的状态分值越高,在后续模糊测试中状态分值大小与状态被选择的概率相对应。
19、进一步地,所述步骤7中,产生新状态指将新测试用例对应的状态变量值加入状态变量矩阵中,作为第m+1行数据,重新进行无监督的聚类,若其类别属于已有类别则舍弃,若其类别为新增类别,即状态参数出现新的值,说明产生新状态;产生新状态转换指状态参数值的转换出现新的情形。
20、进一步地,模糊测试循环过程中,通过状态信息反馈不断更新状态模型与协议程序状态机,通过覆盖率反馈不断更新状态选择算法中的状态分值。
21、本专利技术还提供一种基于状态的工控协议模糊测试装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,用于实现上述的基于状态的工控协议模糊测试方法。
22、本专利技术还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述的基于状态的工控协议模糊测试方法。
23、与现有技术相比,本专利技术具有以下优势:
24、1.通过提取工控协议程序中的状态变量,构建协议程序状态机,提出一种新的工控协议状态识别方法。
25、2.制定状态选择算法,并基于协议程序的状态信息对协议程序执行状态引导的模糊测试,提高模糊测试的效率。
26、3.本专利技术对能够获取到源码的工控协议具有通用性与普适性。
本文档来自技高网...【技术保护点】
1.一种基于状态的工控协议模糊测试方法,其特征在于,包括:
2.根据权利要求1所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤2中,采用的程序静态分析方法为分析调用关系图与构建抽象语法树。
3.根据权利要求2所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤2具体为:分析工控协议程序源码的工作逻辑,制定一组启发式规则用来识别与协议状态相关的变量,记为状态变量;根据所制定的启发式规则对所构建的抽象语法树进行遍历,查找出状态变量及其位置。
4.根据权利要求1所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤2中,所述启发式规则为:①状态变量可能在分支语句中;②状态变量可能在循环语句中;③状态变量可能会在程序运行时的交互过程中产生值的变化。
5.根据权利要求1所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤4中,假设提取了n个状态变量,且输入了m个测试用例,则将收集的m个测试用例对应的m组状态变量值以状态变量矩阵的形式表示为:
6.根据权利要求5所述的基于状态的工控协议模糊测试方法,其特征在
7.根据权利要求1所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤6中,状态选择算法具体为:初始时按顺序选择状态;之后收集每个状态所对应的覆盖率上升程度并归一化到[0,1]作为每个状态的分值,覆盖率上升越多的状态分值越高,在后续模糊测试中状态分值大小与状态被选择的概率相对应。
8.根据权利要求5所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤7中,产生新状态指将新测试用例对应的状态变量值加入状态变量矩阵中,作为第m+1行数据,重新进行无监督的聚类,若其类别属于已有类别则舍弃,若其类别为新增类别,即状态参数出现新的值,说明产生新状态;产生新状态转换指状态参数值的转换出现新的情形。
9.根据权利要求8所述的基于状态的工控协议模糊测试方法,其特征在于,模糊测试循环过程中,通过状态信息反馈不断更新状态模型与协议程序状态机,通过覆盖率反馈不断更新状态选择算法中的状态分值。
10.一种基于状态的工控协议模糊测试装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,其特征在于,所述处理器执行所述可执行代码时,用于实现如权利要求1-9中任一项所述的基于状态的工控协议模糊测试方法。
...【技术特征摘要】
1.一种基于状态的工控协议模糊测试方法,其特征在于,包括:
2.根据权利要求1所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤2中,采用的程序静态分析方法为分析调用关系图与构建抽象语法树。
3.根据权利要求2所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤2具体为:分析工控协议程序源码的工作逻辑,制定一组启发式规则用来识别与协议状态相关的变量,记为状态变量;根据所制定的启发式规则对所构建的抽象语法树进行遍历,查找出状态变量及其位置。
4.根据权利要求1所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤2中,所述启发式规则为:①状态变量可能在分支语句中;②状态变量可能在循环语句中;③状态变量可能会在程序运行时的交互过程中产生值的变化。
5.根据权利要求1所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤4中,假设提取了n个状态变量,且输入了m个测试用例,则将收集的m个测试用例对应的m组状态变量值以状态变量矩阵的形式表示为:
6.根据权利要求5所述的基于状态的工控协议模糊测试方法,其特征在于,所述步骤5中,采用无监督的聚类方法将每组数据用一个状态参数yi来表示,其中i=1,2,.....
【专利技术属性】
技术研发人员:王羽纯,车欣,胡玉娇,朱恒晔,孟捷,邓瑞龙,程鹏,陈积明,
申请(专利权)人:浙江大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。