一种有状态协议的规则化状态机模型设计方法

文档序号:6620025阅读:187来源:国知局
一种有状态协议的规则化状态机模型设计方法
【专利摘要】一种有状态协议的规则化状态机模型设计方法,本发明针对有状态网络协议,对传统模糊测试进行了改进,使其生成的测试用例不是杂乱无章的,而是有针对性,覆盖面广并且高效的。步骤一、获取待测试网络协议的协议规范,通过对协议的格式解析得到协议规则和初步的协议状态机模型;步骤二、通过初步的协议状态机模型和状态规则信息,生成简化状态空间的规则化状态机模型;步骤三、通过协议规则和规则化状态机模型生成结合状态和规则的状态生成树,通过状态生成树简化状态和消息之间的关系,排除无意义的组合;步骤四、生成初始测试用例;步骤五、对初始测试用例进行有规则的变异,得到最终的测试用例集。
【专利说明】一种有状态协议的规则化状态机模型设计方法

【技术领域】
[0001] 本发明涉及一种有状态协议的规则化状态机模型设计方法,属于安全漏洞检测技 术领域。

【背景技术】
[0002] 由于网络协议的安全设计与实现,不仅关系着人们的隐私和财产安全,更关系着 国家的利益。网络协议漏洞已成为信息安全领域的一个研究热点。对于网络协议的漏洞挖 掘技术目前有:模糊测试技术,手工测试,二进制比对,静态分析,动态分析。其中,应用最 广,研究最多的是模糊测试技术。
[0003] 模糊测试是目前进行安全测试和漏洞挖掘的最有效的方法。目前公布的安全漏洞 中有许多都是使用模糊测试技术检测发现的,并且有许多模糊测试工具可以用于测试应用 程序的安全性。与其它技术相比,模糊测试技术具有思想简单,容易理解、从发现漏洞到漏 洞重现容易、不存在误报的优点。
[0004] 现有的网络漏洞挖掘技术中,模糊测试已经成为网络协议检测的主要方法,但对 于有复杂交互过程状态的网络协议,绝大多数网络协议模糊测试数据不能对目标应用的深 层协议状态进行有效的覆盖,严重影响测试效率和测试用例的覆盖率。模糊测试数据的生 成通常采用的是随机生成的方法。即在程序的输入域上随机生成测试用例,这种方式导致 测试用例的生成过程变为在一个过大的空间上随机搜索过程,由于空间过大,和随机数据 的统计分布特性,导致大量的测试数据冗余。
[0005] 安全漏洞:指软件设计实现过程中被引入的、在数据访问或行为逻辑等方面的缺 陷,它可能被攻击者利用从而使程序行为违背一定的安全策略。
[0006] 网络协议:网络上所有设备(例如:网络服务器、交换机、路由器等)之间通信规 则的集合,规定了通信时信息所必须采用的格式和这些格式的意义。
[0007] 有限状态机:表示有限个状态以及在这些状态之间的转移和动作等行为的数学模 型。
[0008] 传统模糊测试虽然是最有效的并且是善于发现最高级别的危险漏洞的,在漏洞检 测领域被广泛的应用,但其也存在着测试数据量大,效率低等问题。


【发明内容】

[0009] 本发明主要是针对有状态网络协议,对传统模糊测试进行了改进,使其生成的测 试用例不是杂乱无章的,而是有针对性,覆盖面广并且高效的。
[0010] 为了解决上述技术问题,本发明采用如下技术方案:
[0011] 一种有状态协议的规则化状态机模型设计方法,包括以下步骤:
[0012] 步骤一、获取待测试网络协议的协议规范,通过对协议的格式解析得到协议规则 和初步的协议状态机模型;
[0013] 步骤二、通过初步的协议状态机模型和状态规则信息,生成简化状态空间的规则 化状态机模型;
[0014] 步骤三、通过协议规则和规则化状态机模型生成结合状态和规则的状态生成树, 通过状态生成树简化状态和消息之间的关系,排除无意义的组合;
[0015] 步骤四、生成初始测试用例,其中一条测试用例是状态轨迹和消息的组合,测试时 不是仅仅针对协议的一个状态进行测试,而是针对协议的一系列状态轨迹进行测试,生成 的测试数据除了每一状态对应的消息外,还包括状态轨迹;构造测试数据即将每一状态的 消息与测试状态轨迹结合起来;
[0016] 步骤五、对初始测试用例进行有规则的变异,得到最终的测试用例集。
[0017] 与现有技术相比,本发明具有以下有益效果:
[0018] 本发明结合传统模糊测试的思想和有状态网络协议的特性,提出规则化状态机模 型,用以保存目标协议的状态信息和状态轨迹信息。结合规则化状态机模型和传统模糊 测试技术,提出基于规则化状态机模型的模糊测试框架,通过规则化状态机到测试用例的 一一映射,生成用于测试的测试数据,已完成针对有状态网络高覆盖率,小规模测试数据, 高效的测试,发现协议漏洞。

【专利附图】

【附图说明】
[0019] 图1为本发明有状态协议的规则化状态机模型设计方法框图;
[0020] 图2为原状态空间示意图;
[0021] 图3为去掉安全路径的状态空间示意图;
[0022] 图4为状态规则树结构示意图;
[0023] 图5为状态规则树生成方式示意图;
[0024] 图6为运算后的状态机示意图;
[0025] 图7为一条测试用例数据模型示意图;
[0026] 图8为测试用例生成示例示意图。

【具体实施方式】
[0027] 下面将结合附图及【具体实施方式】对本发明做进一步的描述。
[0028] 1.规则化状态机模型
[0029] 网络协议的形式化描述模型在网络协议模糊测试中占据着重要的地位。形式化描 述模型就是将网络协议根据其协议规范书(如RFC文档等)的文字描述,以一种更加容易 理解,更加方便分析其特性的方式表述出来的一种数据模型,方便网络协议的测试。
[0030] 有状态网络协议是一种上下文信息,数据信息和历史轨迹有关的网络协议。有状 态网络协议的通信过程非常复杂,通常包括握手,认证等过程,一般模糊测试对其的支持还 不完善,多数生成的测试数据仅能覆盖第一个交互状态,很难覆盖后续状态轨迹。因此,有 状态网络协议的形式化描述方式的选择,必须要考虑有状态网络协议的状态特性。
[0031] 有限状态机模型适合于描述网络协议的状态变迁特性,是最常用的形式化描述方 式。有限状态机模型一般用一个有向图来表不,顶点表不状态,有向边表不状态的迁移。有 向边上面标记输入和输出,是状态变迁的条件。在此基础上,针对有限状态机可以再进行一 些扩充,以提高其描述能力,适应不同的需求,如通信有限状态机,扩展有限状态机。有限状 态机模型不仅直观性强,而且方便于自动实现,但是对于描述复杂的系统往往力所不及,当 描述大规模,复杂的协议时,常面临状态爆炸问题。所以有状态网络协议自身的特殊性和复 杂性决定了需要一种特殊的形式化描述模型来表现这些特性。
[0032] 本发明针对有状态网络协议有限状态机形式化描述进行深入的研究,并针对有状 态协议的状态迁移和协议属性的特殊性,设计能够完整表述有状态网络协议的状态机模 型,称为规则化状态机模型[27]。规则化状态机模型可以记录有状态网络协议在某一状态下 的所有状态信息。
[0033] 规则化状态机模型是一个6元组,用M = <S0, S, I,0,F, V>来表示,其中:
[0034] 1) S0表示初始状态,是整个状态空间的开端。
[0035] 2) S表示整个状态空间所有状态的集合,规则化状态机是一个特殊的有限状态机, 因此状态空间状态的数量也是有限个。
[0036] 3) I表示输入测试数据的数据格式集合。集合中每一个元素 Ik代表第k个输入数 据的数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数。
[0037] 4)0表示输出测试数据的数据格式集合。集合中每一个输出0k表示第k个输出数 据的数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数。
[0038] 5) F是状态迁移函数,表示状态间的迁移关系。
[0039] 6) V是用来表示协议状态规则的变量,V包括所有能够表示状态特性的属性,例如 验证ID、cookie等。V的具体描述取决于协议的规范。
[0040] 规则化状态机模型是有状态网络协议有效的形式化描述理论模型,能够保存测试 协议的状态和轨迹信息。规则化状态机不仅能够将有状态网络协议的状态特性很好的描述 出来,还能够跟据规则,在状态空间构建的同时对协议的状态轨迹进行筛选优化。
[0041] 如图2,状态空间有两条状态轨迹:S0 - S1 - S3和S0 - S2 - S3。根据生成规 贝U,如果从一个状态到另一个状态没有因不安全数据产生的异常,就可以把这两条轨迹表 示为安全轨迹。安全轨迹对于生成测试用例无意义,可以被忽略,以减少状态空间规模。假 设路径S0 - S2 - S3是安全轨迹,缩减后的状态空间如图3所示。
[0042] 2.状态规则树算法
[0043] 状态规则树是一种结合规则化状态机模型和协议规范描述的分层树。形式化描述 为一个 7 元组 T = (S, M, Sub, H, F" F2, F3),其中:
[0044] 1)S表示的是状态集合,表示的是有状态协议的状态空间。
[0045] 2)M表示消息集合,表示有状态协议规定的所有协议消息。
[0046] 3) Sub表示子消息集合,表示有状态协议规定的所有协议子消息。在有状态协议规 范中一条消息由多个子消息组成。
[0047] 4) Η表示消息头集合,表示有状态协议中所有的消息头。
[0048] 5)Fi = SXM,表示状态与消息的映射关系。
[0049] 6)F2 = MX Sub,表示消息与子消息的映射关系。
[0050] 7)F3 = SubXH,表示子消息与消息头的映射关系。
[0051] 状态规则树的结构如图4所示,树的第一层是协议的规则化状态机图,第二层是 指定状态下的消息通讯,说明某一状态下可以接受和发送的消息类型。第三层是具体的消 息,表示请求消息,确认消息等。第四层是消息的消息头,包含一些属性字段。还可以在往 下分第五层是属于那个字段的子字段。
[0052] 状态规则树可以很清楚的表示出协议状态与消息组合之间的关系。通过这种关系 描述可以很快的去除一些无意义测试数据。状态规则树表示了状态与消息之间的相关性, 如果在一个状态S下有可能接收或者发送消息M,那么在S和Μ之间就可以有一条路径相 连,表示S和Μ有相关性。如果在状态S下没有可能接收或者发送消息Μ,那么在S和Μ之 间就没有路径相连,表示S和Μ是没有相关性的。例如,如果当前状态S下,不会发送M2,但 会接收Ml,则构造状态规则树如图5所示。
[0053] 对于有状态网络协议生成的测试用例,在生成过程中有很多不符合协议逻辑的测 试用例,通过对测试用例空间的规则算法进行筛选,可以将不必要的用例个体扼杀在萌芽 中,由此防止状态空间爆炸,生成更有效率的测试用例集。对于已经生成的状态规则树,使 用合适的启发式搜索算法,还可以有效地去除某个状态下没有意义的测试数据,以提高测 试的效率。
[0054] 3.测试用例数据模型生成
[0055] 状态规则树是一颗表现状态与消息,消息头关系的树,经过剪枝算法简化的状态 规则树可以看成是一颗表示消息路径的树。测试用例数据模型是测试用例数据生成的模 板,规定了测试用例的数据格式。一个测试用例数据模型对应这样一条消息路径,该路径规 定了测试过程中消息的先后次序。
[0056] 测试用例数据模型生成过程如下:假设一个有状态网络协议的经过简化算法的规 则化状态机如图6所示,这个状态机总共有3个状态,状态0是初始状态,接收消息1,状态 0迁移到状态1 ;接收消息4,状态0迁移到状态2 ;在状态1时,接收消息2或者消息3,状 态1迁移到状态2。
[0057] 表1状态-消息路径表
[0058]

【权利要求】
1. 一种有状态协议的规则化状态机模型设计方法,其特征在于,包括以下步骤: 步骤一、获取待测试网络协议的协议规范,通过对协议的格式解析得到协议规则和初 步的协议状态机模型; 步骤二、通过初步的协议状态机模型和状态规则信息,生成简化状态空间的规则化状 态机模型; 步骤三、通过协议规则和规则化状态机模型生成结合状态和规则的状态生成树,通过 状态生成树简化状态和消息之间的关系,排除无意义的组合; 步骤四、生成初始测试用例,其中一条测试用例是状态轨迹和消息的组合,测试时不是 仅仅针对协议的一个状态进行测试,而是针对协议的一系列状态轨迹进行测试,生成的测 试数据除了每一状态对应的消息外,还包括状态轨迹;构造测试数据即将每一状态的消息 与测试状态轨迹结合起来; 步骤五、对初始测试用例进行有规则的变异,得到最终的测试用例集。
2.如权利要求1所述的一种有状态协议的规则化状态机模型设计方法,其特征在于, 其中规则化状态机模型用M = <S0, S, I,0,F, V>来表示,其中: 1)S0表示初始状态,是整个状态空间的开端; 2. S表示整个状态空间所有状态的集合,规则化状态机是一个有限状态机,因此状态空 间状态的数量也是有限个; 3. I表示输入测试数据的数据格式集合,集合中每一个元素 Ik代表第k个输入数据的 数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数。 4)0表示输出测试数据的数据格式集合,集合中每一个输出0k表示第k个输出数据的 数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数; 5. F是状态迁移函数,表示状态间的迁移关系; 6. V是用来表示协议状态规则的变量,V包括所有能够表示状态特性的属性。
3.如权利要求1或2所述的一种有状态协议的规则化状态机模型设计方法,其特征在 于,状态规则树是一种结合规则化状态机模型和协议规范描述的分层树,形式化描述为一 个 7 元组 T = (S, M, Sub, H, F" F2, F3),其中: 1)S表不的是状态集合,表不的是有状态协议的状态空间; 2)Μ表示消息集合,表示有状态协议规定的所有协议消息; 3. Sub表示子消息集合,表示有状态协议规定的所有协议子消息,在有状态协议规范中 一条消息由多个子消息组成; 4) Η表示消息头集合,表示有状态协议中所有的消息头; 5)Fi = SXM,表示状态与消息的映射关系; 6)F2 = MX Sub,表不消息与子消息的映射关系; 7)F3 = Sub XH,表示子消息与消息头的映射关系。
【文档编号】G06F11/36GK104142888SQ201410333944
【公开日】2014年11月12日 申请日期:2014年7月14日 优先权日:2014年7月14日
【发明者】胡昌振, 马锐, 韩雪, 单纯, 王勇 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1