CN104142888B - 一种有状态协议的规则化状态机模型设计方法 - Google Patents
一种有状态协议的规则化状态机模型设计方法 Download PDFInfo
- Publication number
- CN104142888B CN104142888B CN201410333944.0A CN201410333944A CN104142888B CN 104142888 B CN104142888 B CN 104142888B CN 201410333944 A CN201410333944 A CN 201410333944A CN 104142888 B CN104142888 B CN 104142888B
- Authority
- CN
- China
- Prior art keywords
- state
- message
- data
- protocol
- rule
- 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.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
一种有状态协议的规则化状态机模型设计方法,本发明针对有状态网络协议,对传统模糊测试进行了改进,使其生成的测试用例不是杂乱无章的,而是有针对性,覆盖面广并且高效的。步骤一、获取待测试网络协议的协议规范,通过对协议的格式解析得到协议规则和初步的协议状态机模型;步骤二、通过初步的协议状态机模型和状态规则信息,生成简化状态空间的规则化状态机模型;步骤三、通过协议规则和规则化状态机模型生成结合状态和规则的状态生成树,通过状态生成树简化状态和消息之间的关系,排除无意义的组合;步骤四、生成初始测试用例;步骤五、对初始测试用例进行有规则的变异,得到最终的测试用例集。
Description
技术领域
本发明涉及一种有状态协议的规则化状态机模型设计方法,属于安全漏洞检测技术领域。
背景技术
由于网络协议的安全设计与实现,不仅关系着人们的隐私和财产安全,更关系着国家的利益。网络协议漏洞已成为信息安全领域的一个研究热点。对于网络协议的漏洞挖掘技术目前有:模糊测试技术,手工测试,二进制比对,静态分析,动态分析。其中,应用最广,研究最多的是模糊测试技术。
模糊测试是目前进行安全测试和漏洞挖掘的最有效的方法。目前公布的安全漏洞中有许多都是使用模糊测试技术检测发现的,并且有许多模糊测试工具可以用于测试应用程序的安全性。与其它技术相比,模糊测试技术具有思想简单,容易理解、从发现漏洞到漏洞重现容易、不存在误报的优点。
现有的网络漏洞挖掘技术中,模糊测试已经成为网络协议检测的主要方法,但对于有复杂交互过程状态的网络协议,绝大多数网络协议模糊测试数据不能对目标应用的深层协议状态进行有效的覆盖,严重影响测试效率和测试用例的覆盖率。模糊测试数据的生成通常采用的是随机生成的方法。即在程序的输入域上随机生成测试用例,这种方式导致测试用例的生成过程变为在一个过大的空间上随机搜索过程,由于空间过大,和随机数据的统计分布特性,导致大量的测试数据冗余。
安全漏洞:指软件设计实现过程中被引入的、在数据访问或行为逻辑等方面的缺陷,它可能被攻击者利用从而使程序行为违背一定的安全策略。
网络协议:网络上所有设备(例如:网络服务器、交换机、路由器等)之间通信规则的集合,规定了通信时信息所必须采用的格式和这些格式的意义。
有限状态机:表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
传统模糊测试虽然是最有效的并且是善于发现最高级别的危险漏洞的,在漏洞检测领域被广泛的应用,但其也存在着测试数据量大,效率低等问题。
发明内容
本发明主要是针对有状态网络协议,对传统模糊测试进行了改进,使其生成的测试用例不是杂乱无章的,而是有针对性,覆盖面广并且高效的。
为了解决上述技术问题,本发明采用如下技术方案:
一种有状态协议的规则化状态机模型设计方法,包括以下步骤:
步骤一、获取待测试网络协议的协议规范,通过对协议的格式解析得到协议规则和初步的协议状态机模型;
步骤二、通过初步的协议状态机模型和状态规则信息,生成简化状态空间的规则化状态机模型;
步骤三、通过协议规则和规则化状态机模型生成结合状态和规则的状态生成树,通过状态生成树简化状态和消息之间的关系,排除无意义的组合;
步骤四、生成初始测试用例,其中一条测试用例是状态轨迹和消息的组合,测试时不是仅仅针对协议的一个状态进行测试,而是针对协议的一系列状态轨迹进行测试,生成的测试数据除了每一状态对应的消息外,还包括状态轨迹;构造测试数据即将每一状态的消息与测试状态轨迹结合起来;
步骤五、对初始测试用例进行有规则的变异,得到最终的测试用例集。
与现有技术相比,本发明具有以下有益效果:
本发明结合传统模糊测试的思想和有状态网络协议的特性,提出规则化状态机模型,用以保存目标协议的状态信息和状态轨迹信息。结合规则化状态机模型和传统模糊测试技术,提出基于规则化状态机模型的模糊测试框架,通过规则化状态机到测试用例的一一映射,生成用于测试的测试数据,已完成针对有状态网络高覆盖率,小规模测试数据,高效的测试,发现协议漏洞。
附图说明
图1为本发明有状态协议的规则化状态机模型设计方法框图;
图2为原状态空间示意图;
图3为去掉安全路径的状态空间示意图;
图4为状态规则树结构示意图;
图5为状态规则树生成方式示意图;
图6为运算后的状态机示意图;
图7为一条测试用例数据模型示意图;
图8为测试用例生成示例示意图。
具体实施方式
下面将结合附图及具体实施方式对本发明做进一步的描述。
1.规则化状态机模型
网络协议的形式化描述模型在网络协议模糊测试中占据着重要的地位。形式化描述模型就是将网络协议根据其协议规范书(如RFC文档等)的文字描述,以一种更加容易理解,更加方便分析其特性的方式表述出来的一种数据模型,方便网络协议的测试。
有状态网络协议是一种上下文信息,数据信息和历史轨迹有关的网络协议。有状态网络协议的通信过程非常复杂,通常包括握手,认证等过程,一般模糊测试对其的支持还不完善,多数生成的测试数据仅能覆盖第一个交互状态,很难覆盖后续状态轨迹。因此,有状态网络协议的形式化描述方式的选择,必须要考虑有状态网络协议的状态特性。
有限状态机模型适合于描述网络协议的状态变迁特性,是最常用的形式化描述方式。有限状态机模型一般用一个有向图来表示,顶点表示状态,有向边表示状态的迁移。有向边上面标记输入和输出,是状态变迁的条件。在此基础上,针对有限状态机可以再进行一些扩充,以提高其描述能力,适应不同的需求,如通信有限状态机,扩展有限状态机。有限状态机模型不仅直观性强,而且方便于自动实现,但是对于描述复杂的系统往往力所不及,当描述大规模,复杂的协议时,常面临状态爆炸问题。所以有状态网络协议自身的特殊性和复杂性决定了需要一种特殊的形式化描述模型来表现这些特性。
本发明针对有状态网络协议有限状态机形式化描述进行深入的研究,并针对有状态协议的状态迁移和协议属性的特殊性,设计能够完整表述有状态网络协议的状态机模型,称为规则化状态机模型[27]。规则化状态机模型可以记录有状态网络协议在某一状态下的所有状态信息。
规则化状态机模型是一个6元组,用M=<S0,S,I,O,F,V>来表示,其中:
1)S0表示初始状态,是整个状态空间的开端。
2)S表示整个状态空间所有状态的集合,规则化状态机是一个特殊的有限状态机,因此状态空间状态的数量也是有限个。
3)I表示输入测试数据的数据格式集合。集合中每一个元素Ik代表第k个输入数据的数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数。
4)O表示输出测试数据的数据格式集合。集合中每一个输出Ok表示第k个输出数据的数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数。
5)F是状态迁移函数,表示状态间的迁移关系。
6)V是用来表示协议状态规则的变量,V包括所有能够表示状态特性的属性,例如验证ID、cookie等。V的具体描述取决于协议的规范。
规则化状态机模型是有状态网络协议有效的形式化描述理论模型,能够保存测试协议的状态和轨迹信息。规则化状态机不仅能够将有状态网络协议的状态特性很好的描述出来,还能够跟据规则,在状态空间构建的同时对协议的状态轨迹进行筛选优化。
如图2,状态空间有两条状态轨迹:S0→S1→S3和S0→S2→S3。根据生成规则,如果从一个状态到另一个状态没有因不安全数据产生的异常,就可以把这两条轨迹表示为安全轨迹。安全轨迹对于生成测试用例无意义,可以被忽略,以减少状态空间规模。假设路径S0→S2→S3是安全轨迹,缩减后的状态空间如图3所示。
2.状态规则树算法
状态规则树是一种结合规则化状态机模型和协议规范描述的分层树。形式化描述为一个7元组T=(S,M,Sub,H,F1,F2,F3),其中:
1)S表示的是状态集合,表示的是有状态协议的状态空间。
2)M表示消息集合,表示有状态协议规定的所有协议消息。
3)Sub表示子消息集合,表示有状态协议规定的所有协议子消息。在有状态协议规范中一条消息由多个子消息组成。
4)H表示消息头集合,表示有状态协议中所有的消息头。
5)F1=S×M,表示状态与消息的映射关系。
6)F2=M×Sub,表示消息与子消息的映射关系。
7)F3=Sub×H,表示子消息与消息头的映射关系。
状态规则树的结构如图4所示,树的第一层是协议的规则化状态机图,第二层是指定状态下的消息通讯,说明某一状态下可以接受和发送的消息类型。第三层是具体的消息,表示请求消息,确认消息等。第四层是消息的消息头,包含一些属性字段。还可以在往下分第五层是属于那个字段的子字段。
状态规则树可以很清楚的表示出协议状态与消息组合之间的关系。通过这种关系描述可以很快的去除一些无意义测试数据。状态规则树表示了状态与消息之间的相关性,如果在一个状态S下有可能接收或者发送消息M,那么在S和M之间就可以有一条路径相连,表示S和M有相关性。如果在状态S下没有可能接收或者发送消息M,那么在S和M之间就没有路径相连,表示S和M是没有相关性的。例如,如果当前状态S下,不会发送M2,但会接收M1,则构造状态规则树如图5所示。
对于有状态网络协议生成的测试用例,在生成过程中有很多不符合协议逻辑的测试用例,通过对测试用例空间的规则算法进行筛选,可以将不必要的用例个体扼杀在萌芽中,由此防止状态空间爆炸,生成更有效率的测试用例集。对于已经生成的状态规则树,使用合适的启发式搜索算法,还可以有效地去除某个状态下没有意义的测试数据,以提高测试的效率。
3.测试用例数据模型生成
状态规则树是一颗表现状态与消息,消息头关系的树,经过剪枝算法简化的状态规则树可以看成是一颗表示消息路径的树。测试用例数据模型是测试用例数据生成的模板,规定了测试用例的数据格式。一个测试用例数据模型对应这样一条消息路径,该路径规定了测试过程中消息的先后次序。
测试用例数据模型生成过程如下:假设一个有状态网络协议的经过简化算法的规则化状态机如图6所示,这个状态机总共有3个状态,状态0是初始状态,接收消息1,状态0迁移到状态1;接收消息4,状态0迁移到状态2;在状态1时,接收消息2或者消息3,状态1迁移到状态2。
表1状态-消息路径表
由此,从状态0到状态2可以得出3条状态-消息路径,如表3.1所示。这3条路径对应3个测试用例数据模型分别是消息1→消息2,消息1→消息3,消息4,每一组模型中的消息不能调换位置。
确定了消息序列之后还要规定消息数据格式,根据网络协议规范,能够确定消息格式,一条消息可以分成若干个域,每个域代表一个协议属性,每个属性都有规则约束,限制数据类型,长度等,根据这些协议规则,可以确定每条消息的数据格式。
图7给出了一条生成的测试用例数据模型,消息1和消息2有前后次序关系,每个消息中的各个域都规定了协议格式。
测试用例数据模型规定了消息序列和消息数据格式。测试用例的生成就是根据测试用例数据模型规定的顺序和格式,生成测试用例。网络协议模糊测试用例生成可以根据测试用例数据模型规定的规则,通过各种数据生成算法(如遗传算法,组合算法等)将协议各个域中的需要生成的数据进行生成,最终生成测试用例。一个测试用例数据模型能够生成若干个不同的测试用例,如图8所示。
有状态网络协议所有测试用例数据模型所生成的测试用例集合起来,生成的就是有状态网络协议的测试用例集。
Claims (1)
1.一种有状态协议的规则化状态机模型设计方法,其特征在于,包括以下步骤:
步骤一、获取待测试网络协议的协议规范,通过对协议的格式解析得到协议规则和初步的协议状态机模型;
步骤二、通过初步的协议状态机模型和状态规则信息,生成简化状态空间的规则化状态机模型;
所述规则化状态机模型用M=<S0,S,I,O,F,V>来表示,其中:
1)S0表示初始状态,是整个状态空间的开端;
2)S表示整个状态空间所有状态的集合,规则化状态机是一个有限状态机,因此状态空间状态的数量也是有限个;
3)I表示输入测试数据的数据格式集合,集合中每一个元素Ik代表第k个输入数据的数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数;
4)O表示输出测试数据的数据格式集合,集合中每一个输出Ok表示第k个输出数据的数据格式信息,其中k表示大于等于0,小于集合中元素总数量的数;
5)F是状态迁移函数,表示状态间的迁移关系;
V是用来表示协议状态规则的变量,V包括所有能够表示状态特性的属性;
步骤三、通过协议规则和规则化状态机模型生成结合状态和规则的状态规则树,通过状态规则树简化状态和消息之间的关系,排除无意义的组合;
所述状态规则树是一种结合规则化状态机模型和协议规范描述的分层树,形式化描述为一个7元组T=(S,M,Sub,H,F1,F2,F3),其中:
1)S表示的是状态集合,表示的是有状态协议的状态空间;
2)M表示消息集合,表示有状态协议规定的所有协议消息;
3)Sub表示子消息集合,表示有状态协议规定的所有协议子消息,在有状态协议规范中一条消息由多个子消息组成;
4)H表示消息头集合,表示有状态协议中所有的消息头;
5)F1=S×M,表示状态与消息的映射关系;
6)F2=M×Sub,表示消息与子消息的映射关系;
F3=Sub×H,表示子消息与消息头的映射关系;
步骤四、生成初始测试用例,其中一条测试用例是状态轨迹和消息的组合,测试时不是仅仅针对协议的一个状态进行测试,而是针对协议的一系列状态轨迹进行测试,生成的测试数据除了每一状态对应的消息外,还包括状态轨迹;构造测试数据即将每一状态的消息与测试状态轨迹结合起来;
测试用例数据模型生成过程如下:一个有状态网络协议的经过简化算法的规则化状态机总共有3个状态,状态0是初始状态,接收消息1,状态0迁移到状态1;接收消息4,状态0迁移到状态2;在状态1时,接收消息2或者消息3,状态1迁移到状态2;
则从状态0到状态2可以得出3条状态-消息路径,分别为路径1:状态0→消息1→状态1→消息2→状态2;路径2:状态0→消息1→状态1→消息3→状态2;路径3:状态0→消息4→状态2;
这3条路径对应3个测试用例数据模型分别是消息1→消息2,消息1→消息3,消息4,每一组模型中的消息不能调换位置;
确定了消息序列之后还要规定消息数据格式,根据网络协议规范,确定消息格式,一条消息可以分成多个域,每个域代表一个协议属性,每个属性都有规则约束,限制数据类型和长度,根据这些协议规则,确定每条消息的数据格式;
测试用例数据模型规定了消息序列和消息数据格式,测试用例的生成就是根据测试用例数据模型规定的顺序和格式,生成测试用例;网络协议模糊测试用例生成根据测试用例数据模型规定的规则,通过遗传算法或者组合算法,将协议各个域中的需要生成的数据进行生成,最终生成测试用例;一个测试用例数据模型能够生成多个不同的测试用例;
步骤五、对初始测试用例进行有规则的变异,得到最终的测试用例集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410333944.0A CN104142888B (zh) | 2014-07-14 | 2014-07-14 | 一种有状态协议的规则化状态机模型设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410333944.0A CN104142888B (zh) | 2014-07-14 | 2014-07-14 | 一种有状态协议的规则化状态机模型设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104142888A CN104142888A (zh) | 2014-11-12 |
CN104142888B true CN104142888B (zh) | 2017-06-27 |
Family
ID=51852068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410333944.0A Active CN104142888B (zh) | 2014-07-14 | 2014-07-14 | 一种有状态协议的规则化状态机模型设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104142888B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104767744B (zh) * | 2015-03-25 | 2018-05-15 | 中国人民解放军理工大学 | 基于协议知识的协议状态机主动推断方法 |
CN104796240B (zh) * | 2015-04-30 | 2018-06-05 | 北京理工大学 | 一种有状态网络协议的模糊测试系统 |
CN105160163B (zh) * | 2015-08-24 | 2019-03-26 | 珠海格力电器股份有限公司 | 一种用于机组的覆盖度测试方法、装置和系统 |
CN106484611B (zh) * | 2015-09-02 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 基于自动化协议适配的模糊测试方法和装置 |
CN106412067B (zh) * | 2016-09-30 | 2019-02-15 | 广东电网有限责任公司电力科学研究院 | 基于工控协议模糊测试的数据分层生成方法 |
CN107046526A (zh) * | 2016-12-28 | 2017-08-15 | 北京邮电大学 | 基于Fuzzing算法的分布式异构网络漏洞挖掘方法 |
CN109426239B (zh) * | 2017-08-31 | 2020-05-08 | 株洲中车时代电气股份有限公司 | 一种机车顺序控制系统及方法 |
CN108009092B (zh) * | 2017-12-04 | 2021-03-09 | 武汉保华显示科技有限公司 | 一种车载网络管理通用测试用例协议的设计方法 |
CN108259493B (zh) * | 2018-01-16 | 2019-09-10 | 中南民族大学 | 一种安全协议消息构造方法 |
CN108256334B (zh) * | 2018-01-26 | 2019-06-04 | 平安科技(深圳)有限公司 | 漏洞测试方法、装置、计算机设备和存储介质 |
CN109347696B (zh) * | 2018-09-30 | 2020-10-20 | 中国人民解放军国防科技大学 | 一种基于分级变异的网络协议模糊测试方法 |
CN109525457B (zh) * | 2018-11-14 | 2020-08-04 | 中国人民解放军陆军工程大学 | 一种基于状态迁移遍历的网络协议模糊测试方法 |
CN111934948B (zh) * | 2020-07-20 | 2022-04-12 | 浙江理工大学 | 基于蒙特卡洛树搜索的efsm可执行测试序列生成方法 |
CN112019403B (zh) * | 2020-08-24 | 2021-10-01 | 杭州弈鸽科技有限责任公司 | 一种物联网消息协议状态机的跨平台自动化挖掘方法与系统 |
CN113572760B (zh) * | 2021-07-22 | 2023-05-30 | 全球能源互联网研究院有限公司 | 一种设备协议漏洞检测方法及装置 |
CN113923268B (zh) * | 2021-09-08 | 2023-11-14 | 山东信通电子股份有限公司 | 一种针对多版本通信规约的解析方法、设备及存储介质 |
CN115174441B (zh) * | 2022-09-06 | 2022-12-13 | 中国汽车技术研究中心有限公司 | 基于状态机的tcp模糊测试方法、设备和存储介质 |
CN117667749A (zh) * | 2024-01-31 | 2024-03-08 | 中兴通讯股份有限公司 | 一种模糊测试用例优化方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888462A (zh) * | 2014-03-26 | 2014-06-25 | 南京邮电大学 | 基于局部偏序规约的控制器局域网模型验证方法 |
-
2014
- 2014-07-14 CN CN201410333944.0A patent/CN104142888B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888462A (zh) * | 2014-03-26 | 2014-06-25 | 南京邮电大学 | 基于局部偏序规约的控制器局域网模型验证方法 |
Non-Patent Citations (4)
Title |
---|
"SIPAD:SIP-VoIP Anomaly Detection using a Stateful Rule Tree";Dongwon Seo等;《Computer Communications》;20130112;第563页左栏第3段,第565页5.2节,第568页6.2节以及图2-3、7 * |
"基于FSM的测试理论、方法及评估";刘攀等;《计算机学报》;20110630;第34卷(第6期);I138-221 * |
"基于动态污点分析的状态协议实现软件模糊测试方法研究";赖志权;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120215(第02期);论文第4.1.1节,第4.1.2节,图4.1-4.2,表4.1 * |
"基于状态图与Z的测试用例生成研究";乔木;《中国优秀博硕士学位论文全文数据库 (硕士)》;20050315(第01期);第965-984页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104142888A (zh) | 2014-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104142888B (zh) | 一种有状态协议的规则化状态机模型设计方法 | |
Borge-Holthoefer et al. | Absence of influential spreaders in rumor dynamics | |
US8646085B2 (en) | Apparatus for reconfiguration of a technical system based on security analysis and a corresponding technical decision support system and computer program product | |
Fefferman et al. | How disease models in static networks can fail to approximate disease in dynamic networks | |
De Choudhury et al. | Inferring relevant social networks from interpersonal communication | |
CN109800573B (zh) | 基于度匿名与链路扰动的社交网络保护方法 | |
CN112468347B (zh) | 一种云平台的安全管理方法、装置、电子设备及存储介质 | |
Asano et al. | -space and polynomial-time algorithm for planar directed graph reachability | |
Lu et al. | Towards user-oriented RBAC model | |
Adiga et al. | Sensitivity of diffusion dynamics to network uncertainty | |
CN109657330A (zh) | 基于分布式平台的大规模网络信息传播计算方法及装置 | |
CN110705045A (zh) | 一种利用网络拓扑特性构建加权网络的链路预测方法 | |
Chen et al. | Distributed community detection over blockchain networks based on structural entropy | |
Neumann et al. | Computing minimum cuts by randomized search heuristics | |
CN104283736A (zh) | 一种基于改良自动状态机的网络通信五元组快速匹配算法 | |
Milling et al. | Distinguishing infections on different graph topologies | |
Zhang et al. | Performance improvement of distributed systems by autotuning of the configuration parameters | |
Braga Flôr et al. | Tactics for improving computational performance of criticality analysis in state estimation | |
Hu et al. | Secure friend discovery via privacy-preserving and decentralized community detection | |
TAQI et al. | Forecasting The Number of Dengue Fever Cases in Malang Regency Indonesia Using Fuzzy Inference System Models | |
Wang et al. | The microcosmic model of worm propagation | |
Lee et al. | Spectral bounds for independent cascade model with sensitive edges | |
Lu et al. | Framework of industrial networking sensing system based on edge computing and artificial intelligence | |
Dagdeviren et al. | BICOT: Big data analysis approach for clustering cloud based IoT systems | |
Zhao et al. | Parallel algorithms for anomalous subgraph detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |