CN109525457A - 一种基于状态迁移遍历的网络协议模糊测试方法 - Google Patents

一种基于状态迁移遍历的网络协议模糊测试方法 Download PDF

Info

Publication number
CN109525457A
CN109525457A CN201811356253.7A CN201811356253A CN109525457A CN 109525457 A CN109525457 A CN 109525457A CN 201811356253 A CN201811356253 A CN 201811356253A CN 109525457 A CN109525457 A CN 109525457A
Authority
CN
China
Prior art keywords
state
protocol
protocol entity
migration
test
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
Application number
CN201811356253.7A
Other languages
English (en)
Other versions
CN109525457B (zh
Inventor
洪征
张洪泽
周振吉
冯文博
李华波
付梦琳
黄康宇
吴礼发
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Army Engineering University of PLA
Original Assignee
Army Engineering University of PLA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Army Engineering University of PLA filed Critical Army Engineering University of PLA
Priority to CN201811356253.7A priority Critical patent/CN109525457B/zh
Publication of CN109525457A publication Critical patent/CN109525457A/zh
Application granted granted Critical
Publication of CN109525457B publication Critical patent/CN109525457B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

本发明提出一种基于状态迁移遍历的网络协议模糊测试方法,包括以下步骤:协议状态机获取、状态机最优遍历路径获取、遍历路径标记和动态模糊测试。本发明以遍历协议状态机所有迁移的最短路径为基础,依次针对各个状态迁移进行测试,保证了测试范围的全面。发明依据协议实体的协议状态发送测试用例,减少无效的报文交互,提高了模糊测试的有效性。发明将测试用例的输入与协议状态的判断相结合,依据协议状态的UIO序列及时发现协议实体的状态异常,提高了模糊测试的工作效率。

Description

一种基于状态迁移遍历的网络协议模糊测试方法
技术领域
本发明涉及网络技术领域,尤其是一种基于状态迁移遍历的网络协议模糊测试方法,该方法在获取网络协议状态机的基础上,获取遍历协议状态机所有状态迁移的最短路径,基于各个状态迁移构造测试用例,针对协议实体程序实施模糊测试,挖掘协议实体程序存在的安全漏洞。
背景技术
计算机网络日益普及,新兴的网络协议日趋复杂,各种变种协议层出不穷。网络协议在协议设计、协议模型描述、协议验证、协议实现的每个环节都可能存在潜在错误或漏洞。这些漏洞有可能被攻击者所利用,使协议实体程序执行攻击者指定的恶意代码,导致攻击者在未授权的情况下访问协议实体甚至实施破坏。及早发现网络通信协议具体漏洞和错误,有助于及时进行针对性的安全防护,降低安全风险。
模糊测试是目前最常用的协议漏洞挖掘方法,它通过向协议实体输入变异的报文,监控协议实体的运行状况,分析协议实体发生的异常来发现潜在的安全漏洞。模糊测试具有自动化程度高、发现的漏洞实际可用等优点。
网络通信协议依据输入报文相互之间是否存在关联关系,可分为无状态协议和有状态协议两类。无状态协议是指报文发送方输出的各个报文之间没有关联性。例如,ICMP协议的每个请求报文各自独立,相互之间没有关联关系。而对于有状态协议,协议实体会记录所接收到的报文信息,在处理报文后可能会出现协议状态的变化。例如,FTP协议与SMTP协议都属于有状态协议。
相比于无状态协议模糊测试,对有状态协议进行模糊测试更复杂,因为当测试用例与协议实体状态不匹配时,测试用例会被直接丢弃,为了保证测试用例尽可能被协议实体接受,测试时需要依赖协议的状态模型,根据协议实体所处的协议状态输入测试用例。
网络通信协议的模糊测试最早可追溯到1999年芬兰Oulu大学研发的网络协议安全测试软件PROTOS,该软件检测出了不少协议实体程序的安全漏洞,但是PROTOS不是通用的测试框架,软件灵活性较差,应用范围狭窄。2002年,Dave Aitel开发了一款通用协议测试框架工具SPIKE,SPIKE是一款可以定制的模糊测试器框架,能够方便地实现代码重用,但是不能灵活描述报文中字段之间的约束关系,并且SPIKE只适用于无状态网络协议的测试,应用范围存在限制。2013年,IOACTIVE发布了著名模糊测试框架Peach 3.0,Peach 3.0是一个灵活的模糊测试框架,Peach使用XML文件作为测试脚本来定义测试对象以及测试方法,充分利用了XML文件低耦合、易分离的优点,促进了模糊测试代码的重用。除了上述测试工具,研究学者也提出不少针对网络协议模糊测试的优化方法。例如,AspFuzz测试方法可以自动构造与正常报文交互顺序相违背的测试序列,发现报文异常输入顺序引起的协议缺陷,但是这种测试方法存在组合爆炸的问题。RFSM-Fuzzing测试方法通过状态引导对每个协议状态进行测试,对协议漏洞挖掘有较好的效果,但是测试过程存在报文冗余交互较多、测试效率低下的问题。
评价模糊测试方法的优劣可以通过测试效率与测试覆盖率两个指标评价。总体上看,现有的各种模糊测试方法在应用于有状态协议的模糊测试时,主要存在以下3方面的不足。
(1)辅助报文开销高,测试效率低下。
网络协议模糊测试需要将报文通过网络传输到协议实体程序,报文在传输节点的等待、处理以及在网络中的传输都需要时间,每个发送的报文时间耗费是不能忽略的问题。现有的测试方法通常只侧重于提高测试用例的有效性,没有考虑到测试流程的优化,导致测试序列中只有少部分报文属于测试用例,其他大部分是将协议实体引导至特定状态的辅助报文。这些辅助报文会产生较高的时间开销,使得单位时间内成功完成测试的测试用例数量很少,引发协议实体异常概率相应偏小,测试效率偏低。
(2)模糊测试属于黑盒测试,测试覆盖率难以保证。
在对有状态协议进行模糊测试的时,需要考虑被测协议实体程序的代码覆盖率,程序代码覆盖得越充分,表明测试越完善。但是模糊测试作为一种黑盒测试方法,难以确定测试过程的代码覆盖率。协议状态机是协议实体程序工作流程的一种映射。一些测试方法基于协议状态进行测试,将协议实体依次引导到每个协议状态后对实体程序进行模糊测试,但只能保证在每个协议状态下都产生了测试用例,并不能由此说明模糊测试的覆盖范围全面了。
(3)无法保证输入报文与协议实体状态相对应,造成无效交互。
协议实体程序在处理报文时,需要经过语法解析、语义解析与程序执行三个步骤,测试用例触发协议实体程序异常或者正常处理输入报文必须首先通过前两步,即测试用例或者正常报文需要满足两个条件:协议格式语法约束以及是与协议实体状态相对应。而目前模糊测试方法采用的主要是固定模式的测试方法,即在每次测试之前预先生成测试序列,测试时不再对测试序列进行调整。这种方法存在很大的盲目性。因为测试用例被协议实体直接抛弃还是接收处理是不确定的,输入测试用例后协议实体状态无法预知,可能出现后续报文与协议实体状态不对应的情形。如果不在输入测试用例后,对协议实体所处的协议状态进行判断,将导致无效的报文交互。
发明内容
发明目的:针对现有技术中存在的技术问题,本发提供一种基于状态迁移遍历的网络协议模糊测试方法。在协议状态机中,状态迁移更好地体现了协议实体程序的处理逻辑,如果模糊测试覆盖了每个协议状态迁移,则可认为测试涵盖了协议实体程序中主要的处理逻辑,能够对测试目标实现较为充分的覆盖。因此,本发明基于状态迁移对协议实体程序实施模糊测试。本发明在掌握网络协议的协议状态机的基础上,首先求解获取遍历协议状态机所有迁移的最短路径,并依据该最短路径依次针对各个状态迁移进行测试。在测试过程中,将测试用例的输入与协议状态的判断相结合,依据协议状态的UIO序列(UniqueInput/Output Sequences,唯一输入/输出序列)及时发现协议实体的状态异常,有效检测测试用例所导致的异常状态迁移。本发明有助于扩展模糊测试的覆盖范围,提高模糊测试的工作效率。此外,本发明将测试用例与协议实体的协议状态相对应,避免无效的报文交互,提高了模糊测试的有效性。
技术方案:为实现上述技术效果,本发明提出一种基于状态迁移遍历的网络协议模糊测试方法,包括以下步骤:
(1)协议状态机获取阶段。依据协议规范,或者采用协议逆向分析方法,获得协议实体程序的协议状态机信息。
(2)协议状态机最优遍历路径获取,并记录最优遍历路径中每个状态迁移所对应的输入/输出信息;
(3)对最优遍历路径上的状态迁移进行标记:为了保证模糊测试的有效实施,在输入测试用例后需要对协议实体程序进行状态判断,根据协议实体程序所处的协议状态确定下一步输入的测试用例。本发明进行标记的目的是为了在后续的模糊测试过程中,将模糊测试与测试后对协议实体的状态判断结合在一起,提高整体工作效率。
标记的原理为:在实际测试过程中,对于最优遍历路径上的两个相邻状态si与sj,如果在协议实体处于状态si时,向其输入im,协议实体正常会跳转到sj状态,并输出om。在对si与sj之间的迁移实施测试后,协议实体可能处于状态si或者si之外的其他状态。如果协议实体处于si之外的其他状态,则有可能发生了状态的异常迁移,需要分析确定。具体来看,如果输入测试用例后,程序没有出现内存访问错误、程序崩溃等需要判断是否触发漏洞的情况,将继续实施测试。此时协议实体程序所处的状态可以依据UIO序列来具体确认。如果协议实体程序处于si状态,可以继续实施测试。如果由于状态异常迁移处于其他未知协议状态,则需要停止测试。因为状态异常迁移是一种严重错误,需要判断是否存在可利用的安全漏洞。如果依据协议状态机,在最优遍历路径中,si至sj之后的报文序列是sj的UIO序列,可以对si至sj的状态迁移进行标记。因为在对si至sj这段状态迁移进行测试后,协议实体所处状态可以分为两类,一类是si状态,另一类是si之外的状态。在测试后可以先假定协议实体处于si状态,再输入im,使协议实体迁移到sj状态,由于其后紧跟着sj状态的UIO序列,可以依据UIO序列判断协议实体是否直接跳转进入了sj状态。如果不是,则说明测试后协议实体并不处于si状态,可以对之前的测试用例进行分析,确定是否出现了状态异常迁移。对最优遍历路径上的状态迁移进行标记,意味着在最优遍历路径上有报文序列可以作为UIO判断协议实体的状态,在实际测试过程中,针对相应状态迁移进行测试时,不再需要引入专门构造的UIO序列确定协议实体的状态。如果si至sj之后的报文序列不是sj的UIO序列,则需要专门构造sj的UIO序列对协议实体的状态进行判断。在标记过程中,依次分析最优遍历路径上的每个状态。例如,对于最优遍历路径上的某个状态sj,从该状态出发顺序遍历,寻找下一个对应于状态sj的节点,或者对应于状态机终止状态的节点,如果找到一个节点符合以上任意一种条件,则停止下来,对这段路径进行分析。如果这段路径对应的输入序列是sj状态的UIO序列,那么对状态si至状态sj之间的状态迁移进行标记,否则不进行任何标记。
根据上述原理,依据最优遍历路径判断有哪些状态迁移在实施模糊测试之后,存在相应的UIO序列可以判断协议实体所处的状态,并对这些状态迁移进行标记,具体步骤包括(3-1)至(3-3):
(3—1)对于最优遍历路径中的某一个状态si,以sj表示其邻接状态;判断si是否为原始状态机中的终止状态,如果是终止状态,那么si与状态sj之间迁移是虚拟迁移,不进行标记,并转入步骤(3-3);如果不是终止状态,则执行步骤(3-2);
(3-2)从状态sj出发,沿最优遍历路径顺序遍历,查看遇到的第一个状态sj或者第一个原始状态机终止状态,若先遇到状态sj,则查看状态sj与其之后的第一个状态sj之间的迁移路径;若先遇到终止状态,则查看状态si与终止状态之间的迁移路径;如果依据协议状态机,确定迁移路径对应的输入序列是状态sj的UIO序列,那么对状态si至邻接状态si之间的迁移进行标记,然后执行步骤(3-3);否则,不进行任何标记,直接进入步骤(3-3);
(3-3)判断状态si是否为最优遍历路径的终止状态,如果是,则终止最优遍历路径的标记;否则,返回步骤(3-1),对状态si与其下一个邻接状态之间的迁移进行标记;
(4)动态模糊测试阶段:动态模糊测试的过程中,向协议实体程序输入测试用例后,将根据协议实体程序的响应报文,确定协议实体所处的状态,并依据协议状态实施测试。测试过程强调测试用例与协议实体状态的匹配。对于最优遍历路径上的一段状态迁移,以状态si至其相邻状态sj为例,当协议实体处于状态si时,如果向其输入im,正常会输出om。在对这段状态迁移进行模糊测试时,首先,输入基于im构造的测试用例,同时将测试用例信息记录在队列中便于后期分析。监测协议实体在处理测试用例后是否发生内存访问错误、程序崩溃等异常,如果出现异常,依据记录的测试用例信息对协议实体进行分析,确定测试用例对应的安全漏洞。如果协议实体未表现出异常,理论上需要判定协议实体在接收测试用例后所处的状态,以进行下一步测试。但是,如果每输入一个测试用例就进行协议状态的判断,将发送大量辅助报文,并耗费大量测试时间。因此,本发明在测试时将协议状态的判断与进一步的模糊测试相结合。
如果si至sj的状态迁移已经经过标记,意味着其后存在相应的UIO序列,可以在测试结束后对sj的状态进行确定。在进一步测试时,先假定协议实体处于状态si,向其输入im,协议实体相应会迁移到sj的状态;而后对最优遍历路径上sj及相邻状态sk之间的迁移进行模糊测试,同时依据UIO序列对协议实体的状态进行判定;因为在输入测试用例后,还将输入属于UIO序列的正常报文,例如,前面的测试中在输入一个测试用例后,会输入代表正常报文的im。可以根据正常报文相应的输出,推断之前预想的协议状态是否准确。如果报文输出与UIO序列对应的正常输出不同,则可以确定对协议状态的判断有问题,需要回溯判断。在回溯过程中,对所有包含该正常报文的UIO序列进行分析,其中必定有协议状态与预想的协议状态有差异,可能出现了状态异常迁移。由于正常协议的UIO序列通常较短,因此,能够很容易确定预判错误可能源于哪几个测试用例。
若si到sj之间的迁移未标记,则先将协议实体恢复到初始状态,然后输入前置引导序列将协议实体引导到sj状态,再对sj及相邻状态sk之间的状态迁移进行动态模糊测试。
进一步的,所述协议实体程序的协议状态机信息的获取方法为:如果被测实体程序的协议规范信息是公开的,则其中的协议状态机信息可以直接用于指导模糊测试。如果涉及的通信协议属于私有协议,协议规范信息没有公开,则需要通过协议逆向分析方法获得程序的状态机信息。在获得协议状态机之后,将依据状态机信息对协议实体实施模糊测试。
进一步的,所述获取最优遍历路径的方法为:
为了高效地针对协议实体程序实施模糊测试,需要在协议状态机上寻找遍历协议状态机所有迁移,并且尽可能短的路径,我们将这种路径称为最优遍历路径。在模糊测试过程中,依据最优遍历路径依次对每个状态迁移进行测试,可以保证所有状态迁移都能够被测试到。将协议状态机的所有状态迁移映射为有向图;将协议状态机的终结状态返回初始状态作为一次状态迁移,并将这种迁移记为虚拟迁移;将虚拟迁移添加到有向图中,再采用DCPP求解算法遍历有向图,找出遍历协议状态机所有状态迁移的最短路径作为最优遍历路径。
有益效果:与现有技术相比,本发明具有以下优势:
本发明依据遍历协议状态机所有迁移的最短路径进行模糊测试,可以保证模糊测试范围的全面。测试过程中确保测试用例与协议实体状态的匹配,减少无效交互。此外,将测试过程与协议状态的判定过程相结合,减少了辅助报文的发送,缩减了测试时间,提高了整体测试效率。
附图说明
图1为本发明的整体实现流程示意图;
图2为FTP协议状态机的状态迁移有向图;
图3为添加虚拟迁移后的FTP协议状态机的状态迁移有向图;
图4为图3所对应的最优遍历路径;
图5为经过标记后的最优遍历路径;
具体实施方式
下面结合附图对本发明作更进一步的说明。
如图1所示,根据本发明的较优实施例,基于状态迁移遍历的网络协议模糊测试方法,包括以下步骤:
(1)协议状态机获取:根据被测协议实体程序公布的协议规范信息,或者通过协议逆向分析方法推断获得协议实体程序的协议状态机信息。
(2)状态机最优遍历路径获取:在协议状态机上寻找遍历协议状态机所有迁移并且尽可能短的路径,这种路径被称为最优遍历路径。采用中国邮路问题的求解方法获得最优遍历路径。
(3)遍历路径标记:在获取最优遍历路径的基础上,需要确定在最优遍历路径上有哪些状态迁移在实施模糊测试之后,存在相应的UIO序列可以判断协议实体所处的状态,对这些状态迁移进行相应标记。
(4)动态模糊测试:依据最优遍历路径,依次对遍历路径上的各个状态迁移实施模糊测试。在测试过程中,向协议实体程序输入测试用例,监测协议实体在处理测试用例后的表现,当发现协议实体出现异常时及时进行分析判断,确定漏洞信息。如果协议实体没有表现出异常,则将进一步的测试与协议状态的判断结合在一起实施。一边输入新的测试用例,一边利用标记阶段确定的UIO序列,确定协议实体所处的协议状态。如果发现协议状态与预想的协议状态有差异,则判断是否出现了状态异常迁移等问题。
参考图1所示的整体实现流程,本实施例的基于状态迁移遍历的网络协议模糊测试方法主要包括协议状态机获取、状态机最优遍历路径获取、遍历路径标记、以及动态模糊测试等4个部分,具体的实施方式以下分别说明。
(1)协议状态机获取
如果被测实体程序的协议规范信息是完全公开的,可以通过提取协议规范中的协议状态机指导模糊测试。如果被测实体程序的通信协议属于私有协议,协议规范信息并没有公开,则可以基于Netzob等开放平台,利用协议逆向分析方法推断获得程序的状态机信息。在掌握被测实体程序的协议状态机信息之后,依据协议状态机对协议实体程序实施模糊测试。
(2)状态机最优遍历路径获取
有向图的中国邮路问题(Digraph Chinese Postman Problem,DCPP)是寻找经历有向图中每条有向边至少一次并且长度最短的遍历路线,这种遍历路线也被称为最优邮递路线。可将协议状态机映射为有向图,然后再基于DCPP的求解方法,寻找一条经历有向图中所有有向边并且长度最小的遍历路线,根据获取的有向图遍历路线,找到遍历协议状态机所有迁移的最短路径。依据该遍历路径上状态迁移的先后顺序进行测试,即可以对所有状态迁移进行测试,有效避免漏测问题。
DCPP求解算法的适用条件是有向图为强连通图。强连通图是指有向图的每个顶点都可以到达其他任意顶点,然而协议状态机映射而成的有向图并不一定是强连通图。例如,图2中FTP协议状态机映射而成的有向图中,状态s2所对应的顶点v2无法到达s1对应的顶点v1,该有向图不满足DCPP求解条件。为了解决这一问题,本实施例采用了如下策略:在模糊测试过程中,一次会话结束之后需要启动新的会话,所以将状态机M的终结状态返回初始状态作为一次状态迁移,本实施例将这种迁移称为虚拟迁移,并将虚拟迁移添加到状态机中。添加虚拟迁移后的状态机以V-M表示,如图3所示。在V-M中,每个状态可以到达其他任意状态,V-M所对应的有向图是强联通图,其对应的DCPP可以求解。
在对V-M中遍历所有状态迁移的最短路径进行求解的过程中,以状态s0对应的v0结点出发,优先遍历每个顶点的自循环边。根据DCCP求解方法得到遍历有向图中所有有向边的最短路线,进而寻找到遍历协议状态机所有状态迁移的最短路径,即最优遍历路径。由图3对应的状态机求得最优遍历路径,如图4所示。最优遍历路径中包含协议状态与状态迁移,其中最优遍历路径的第一个协议状态s0称为初始状态,最后一个协议状态s7称为终止状态,从初始状态开始遍历至终止状态,期间经历了协议状态机M的所有状态迁移。
(3)遍历路径标记
在实际模糊测试的过程中,在测试状态si与sj之间的状态迁移之后,如果未发现异常将继续进行测试。在测试过程中输入的报文序列将由正常报文与测试用例共同构成。如果sj之后的一段正常报文所构成的序列是状态sj对应的UIO序列,则根据UIO序列的特点,包含测试用例的报文序列也是sj的UIO序列。基于这种考虑,从提高测试效率的角度出发,对最优遍历路径上的状态迁移依次分析,并对符合相应条件的迁移进行标记,以便于将协议状态的判断与模糊测试过程相融合。
如果在最优遍历路径中,si至sj之后的报文序列是sj的UIO序列,可以对si至sj的状态迁移进行标记。因为在对si至sj这段状态迁移进行测试后,协议实体所处状态可以分为两类,一类是si状态,另一类是si之外的状态。在测试后可以先假定协议实体处于si状态,再输入im,使协议实体迁移到sj状态,由于其后紧跟着sj状态的UIO序列,可以依据UIO序列判断协议实体是否跳转进入了sj状态。如果不是,则说明测试后协议实体并不处于si状态,可以对之前的测试用例进行分析,确定是否出现了状态异常迁移。
本实施例的具体标记过程如下:
步骤1:对于最优遍历路径中的某一个状态si,以sj表示其邻接状态。首先判断si是否为原始状态机M中的终止状态,如果是终止状态,那么si与状态sj之间迁移是虚拟迁移,虚拟迁移不被标记,跳至执行步骤3;否则继续执行步骤2。
步骤2:从状态sj出发顺序遍历,查看最优遍历路径中第一个状态sj或者第一个遇到的原始状态机终止状态,先遇到哪类状态对应的节点,就以其作为标记时所考虑的迁移路径;如果依据协议状态机,所查看的迁移路径对应的输入序列是状态sj的UIO序列,那么对状态si至邻接状态sj之间的迁移进行标记,然后执行步骤3;否则,不进行任何标记,直接进入步骤3。
步骤3:判断状态sj是否为最优遍历路径的终止状态,如果状态sj是最优遍历路径的终止状态,那么完成最优遍历路径的标记;否则,跳至执行步骤1,对状态sj与其下一个邻接状态递归进行标记。
例如对图4最优遍历路径进行标记,第一个s4状态至其之后第一个s4状态(即最优遍历路径的第二个s4状态)之间迁移需要输入i5,i7,i11,i3与i4,依次经过状态s5、s6、s2与s3,并且输出为o5,o5,o4,o3,o4,其中报文序列(i5,i7,i11,i3,i4)是状态s4的UIO序列,所以对第一个s3至邻接状态s4之间的迁移进行标记,然后再以同样的方法继续判断状态s4以及其邻接状态之间的迁移是否应被标记,直至对所有状态都进行判断并标记相应迁移,标记后的遍历路径如图5所示。
(4)动态模糊测试
模糊测试过程强调测试用例与协议实体状态的匹配。在刚开始实施测试时,协议实体的状态是明确的。但是协议实体在处理测试用例后其状态就难以判定了。如果每输入一个测试用例就进行协议状态的判断或者把协议实体设置到特定的一个协议状态,将需要发送大量辅助报文,并耗费大量测试时间。因此,在测试时利用前一阶段实施的路径标记,将协议实体状态的判断与进一步的模糊测试相结合。
具体来看,以状态si至其相邻状态sj为例,当协议实体处于状态si时,如果向其输入im,正常会输出om。在对这段状态迁移进行模糊测试时,首先,输入基于im变异生成的测试用例,同时将测试用例信息记录在队列中便于后期分析。监测协议实体在处理测试用例后是否发生内存访问错误、程序崩溃等异常,如果出现异常,依据记录的测试用例信息对协议实体进行分析,确定测试用例对应的安全漏洞。如果协议实体未表现出异常,则需要依据协议状态进行下一步测试。后续的处理可以分为两种情况。第一种情况,si至sj的状态迁移已经经过标记,这意味着这段状态迁移之后存在sj的UIO序列可以判定协议实体是否处于sj状态。在进一步测试时,先假定协议实体处于状态si,向其输入im,协议实体相应会迁移到sj的状态;而后,对最优遍历路径上sj及相邻状态sk之间的迁移进行测试,以此类推。因为在每次输入测试用例后,都将输入属于UIO序列的正常报文,可以根据正常报文相应的输出,确定推断之前预想的协议状态是否准确。如果对于某个输入报文ik,协议实体的输出与UIO序列对应的正常输出不同,则可以断定之前对协议状态的判断有问题。需要回溯,对所有包含输入报文ik的UIO序列进行分析,其中在之前的推断中必定有协议状态判断错误的地方,协议实体程序可能出现了状态异常迁移。由于正常协议的UIO序列通常较短,因此,能够很容易确定预判错误可能源于哪几个测试用例。
下面举例进一步说明协议状态的判定方法,UIO序列是能够标识实体程序协议状态的一个输入报文序列。举例来看,协议实体程序处于某一个协议状态s1时,按顺序输入i1,i2,i3,依据协议状态机中的信息,可以知道该程序会输出o1,o2,o3构成的输出序列。如果协议实体处于s1以外的其他状态,输入i1,i2,i3的序列,则输出不会正好是o1,o2,o3的输出序列。这是UIO序列的主要特性。在进行报文输入的过程中,协议状态也在不断变化,但UIO序列关注的是输入UIO时的协议实体的初始状态是什么,根据输出结果能够判断初始状态是否是s1状态。发明方法将UIO序列与测试用例混合在一起输入,例如输入的序列是:基于i1构造的测试用例,i1,基于i2构造的测试用例,i2,基于i3构造的测试用例,i3。不需要考虑输入测试用例时,协议实体的输出。关注的重点是输入正常的i1,i2,i3报文时,输出是否是o1,o2,o3报文。如果是的话,则说明在输入这段序列时,程序实体的协议状态是s1。如果初始状态不是s1,则肯定不会得到o1,o2,o3组成的输出序列。
第二种情况,si至sj的状态迁移没有经过标记,则意味着这段状态迁移之后不存在相应的UIO序列判定协议实体的状态。这种情况下,先将协议实体恢复到初始状态,而后输入前置引导序列将协议实体引导到sj状态,进而开始对sj及相邻状态sk之间的状态迁移进行测试。因为在标记时并不要求输入序列是某一状态最短的UIO序列,因此,最优遍历路径中大部分状态迁移都会被标记。在模糊测试的过程中,协议状态的判断与进一步的测试用例输入是紧密结合的。
综上所述,本发明的基于状态迁移遍历的网络协议模糊测试方法,在掌握网络协议实体程序的协议状态机的基础上,将协议状态迁移的遍历问题转化为中国邮路问题,求解获取遍历协议状态机所有迁移的最短路径,并依据该最短路径依次针对各个状态迁移进行测试,保证了模糊测试的覆盖范围。在测试过程中,将测试用例的输入与协议状态的判断相结合,依据协议状态的UIO序列及时发现协议实体的状态异常,从整体上提高了模糊测试的工作效率。此外,在测试过程中将测试用例与协议实体的协议状态相对应,减少无效的报文交互,提高了模糊测试的有效性。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (3)

1.一种基于状态迁移遍历的网络协议模糊测试方法,其特征在于,包括步骤:
(1)获得协议实体程序的协议状态机信息;
(2)找出遍历协议状态机所有状态迁移的最短路径作为最优遍历路径,并记录最优遍历路径中每个状态迁移所对应的输入/输出信息;
(3)对最优遍历路径上的状态迁移进行标记:包括步骤(3-1)至(3-3):
(3-1)对于最优遍历路径中的某一个状态si,以sj表示其邻接状态;判断si是否为原始状态机中的终止状态,如果是终止状态,那么si与状态sj之间迁移是虚拟迁移,不进行标记,并转入步骤(3-3);如果不是终止状态,则执行步骤(3-2);
(3-2)从状态sj出发,沿最优遍历路径顺序遍历,查看遇到的第一个状态sj或者第一个原始状态机终止状态,若先遇到状态sj,则查看状态sj与其之后的第一个状态sj之间的迁移路径;若先遇到终止状态,则查看状态sj与终止状态之间的迁移路径;如果依据协议状态机,确定迁移路径对应的输入序列是状态sj的UIO序列,那么对状态si至邻接状态sj之间的迁移进行标记,然后执行步骤(3-3);否则,不进行任何标记,直接进入步骤(3-3);
(3-3)判断状态sj是否为最优遍历路径的终止状态,如果是,则终止最优遍历路径的标记;否则,返回步骤(3-1),对状态sj与其下一个邻接状态之间的迁移进行标记;
(4)对最优遍历路径中的每一段迁移依次实施动态模糊测试,其中,对状态si至其邻接状态sj之间的迁移进行动态模糊测试的方法为:当协议实体处于状态si时,向协议实体输入基于对正常报文im变异所构造的测试用例,并记录测试用例信息;监测协议实体在处理测试用例后的表现,当发现协议实体出现异常时依据测试用例信息确定相应的安全漏洞;若协议实体在处理测试用例后没有出现异常,则判断si到sj之间的迁移是否已标记;
若si到sj之间的迁移已标记,则先假定协议实体处于状态si,向协议实体输入正常报文im,那么协议实体相应会迁移到sj的状态,继续对sj及相邻状态sk之间的状态迁移实施模糊测试,同时依据UIO序列对协议实体的状态进行判定;如果报文输出与UIO序列对应的正常输出一致,则之前的判断准确,可以继续对后续的迁移实施模糊测试;如果不一致,则可以断定对协议状态的推测有问题,需要回溯,分析之前发送的测试用例以及协议实体的响应,确定是否存在状态异常迁移;
若si到sj之间的迁移未标记,则先将协议实体恢复到初始状态,然后输入前置引导序列将协议实体引导到sj状态,再对sj及相邻状态sk之间的状态迁移进行动态模糊测试。
2.根据权利要求1所述的一种基于状态迁移遍历的网络协议模糊测试方法,其特征在于,所述协议实体程序的协议状态机信息的获取方法为:根据被测协议实体公布的协议规范信息,或者通过协议逆向分析方法推断获得协议实体的协议状态机信息。
3.根据权利要求1所述的一种基于状态迁移遍历的网络协议模糊测试方法,其特征在于,所述计算最优遍历路径的方法为:将协议状态机的所有状态迁移映射为有向图;将协议状态机的终结状态返回初始状态作为一次状态迁移,并将这种迁移记为虚拟迁移;将虚拟迁移添加到有向图中,再采用DCPP求解算法遍历有向图,找出遍历协议状态机所有状态迁移的最短路径作为最优遍历路径。
CN201811356253.7A 2018-11-14 2018-11-14 一种基于状态迁移遍历的网络协议模糊测试方法 Active CN109525457B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811356253.7A CN109525457B (zh) 2018-11-14 2018-11-14 一种基于状态迁移遍历的网络协议模糊测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811356253.7A CN109525457B (zh) 2018-11-14 2018-11-14 一种基于状态迁移遍历的网络协议模糊测试方法

Publications (2)

Publication Number Publication Date
CN109525457A true CN109525457A (zh) 2019-03-26
CN109525457B CN109525457B (zh) 2020-08-04

Family

ID=65777561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811356253.7A Active CN109525457B (zh) 2018-11-14 2018-11-14 一种基于状态迁移遍历的网络协议模糊测试方法

Country Status (1)

Country Link
CN (1) CN109525457B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765000A (zh) * 2019-09-06 2020-02-07 深圳开源互联网安全技术有限公司 一种程序测试方法及装置
CN111726264A (zh) * 2020-06-18 2020-09-29 中国电子科技集团公司第三十六研究所 网络协议变种检测方法、装置、电子设备和存储介质
CN112019403A (zh) * 2020-08-24 2020-12-01 杭州弈鸽科技有限责任公司 一种物联网消息协议状态机的跨平台自动化挖掘方法与系统
CN114328173A (zh) * 2021-10-27 2022-04-12 清华大学 软件模糊测试方法和装置、电子设备及存储介质
CN114661534A (zh) * 2022-05-24 2022-06-24 深圳时识科技有限公司 生成tms目标比特流的方法、装置和存储介质
CN115174441A (zh) * 2022-09-06 2022-10-11 中国汽车技术研究中心有限公司 基于状态机的tcp模糊测试方法、设备和存储介质
CN117667749A (zh) * 2024-01-31 2024-03-08 中兴通讯股份有限公司 一种模糊测试用例优化方法及系统
CN118349480A (zh) * 2024-06-17 2024-07-16 中国电子科技集团公司第三十研究所 一种基于进程级局部内存快照的协议模糊测试方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102087631A (zh) * 2011-03-09 2011-06-08 中国人民解放军国发科学技术大学 一种面向状态协议实现软件的模糊测试方法
US20130340083A1 (en) * 2012-06-19 2013-12-19 Lucian Petrica Methods, systems, and computer readable media for automatically generating a fuzzer that implements functional and fuzz testing and testing a network device using the fuzzer
CN104142888A (zh) * 2014-07-14 2014-11-12 北京理工大学 一种有状态协议的规则化状态机模型设计方法
CN104796240A (zh) * 2015-04-30 2015-07-22 北京理工大学 一种有状态网络协议的模糊测试系统
CN105095075A (zh) * 2015-07-16 2015-11-25 北京理工大学 基于有限状态机网络协议半合法化模糊测试用例生成方法
CN105763392A (zh) * 2016-02-19 2016-07-13 中国人民解放军理工大学 一种基于协议状态的工控协议模糊测试方法
CN107241226A (zh) * 2017-06-29 2017-10-10 北京工业大学 基于工控私有协议的模糊测试方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102087631A (zh) * 2011-03-09 2011-06-08 中国人民解放军国发科学技术大学 一种面向状态协议实现软件的模糊测试方法
US20130340083A1 (en) * 2012-06-19 2013-12-19 Lucian Petrica Methods, systems, and computer readable media for automatically generating a fuzzer that implements functional and fuzz testing and testing a network device using the fuzzer
CN104142888A (zh) * 2014-07-14 2014-11-12 北京理工大学 一种有状态协议的规则化状态机模型设计方法
CN104796240A (zh) * 2015-04-30 2015-07-22 北京理工大学 一种有状态网络协议的模糊测试系统
CN105095075A (zh) * 2015-07-16 2015-11-25 北京理工大学 基于有限状态机网络协议半合法化模糊测试用例生成方法
CN105763392A (zh) * 2016-02-19 2016-07-13 中国人民解放军理工大学 一种基于协议状态的工控协议模糊测试方法
CN107241226A (zh) * 2017-06-29 2017-10-10 北京工业大学 基于工控私有协议的模糊测试方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
康红凯等: "《一种基于FSM的BGP-4协议模糊测试方法》", 《计算机工程与应用》 *
张亚丰等: "《基于状态的工控协议Fuzzing测试技术》", 《计算机科学》 *
张亚丰等: "《基于范式语法的工控协议Fuzzing测试技术》", 《计算机应用研究》 *
梁姝瑞: "《基于FSM的Zigbee协议模糊测试算法》", 《中国优秀硕士学位论文全文数据库》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765000A (zh) * 2019-09-06 2020-02-07 深圳开源互联网安全技术有限公司 一种程序测试方法及装置
CN110765000B (zh) * 2019-09-06 2021-11-23 深圳开源互联网安全技术有限公司 一种程序测试方法及装置
CN111726264A (zh) * 2020-06-18 2020-09-29 中国电子科技集团公司第三十六研究所 网络协议变种检测方法、装置、电子设备和存储介质
CN111726264B (zh) * 2020-06-18 2021-11-19 中国电子科技集团公司第三十六研究所 网络协议变种检测方法、装置、电子设备和存储介质
CN112019403A (zh) * 2020-08-24 2020-12-01 杭州弈鸽科技有限责任公司 一种物联网消息协议状态机的跨平台自动化挖掘方法与系统
CN112019403B (zh) * 2020-08-24 2021-10-01 杭州弈鸽科技有限责任公司 一种物联网消息协议状态机的跨平台自动化挖掘方法与系统
CN114328173A (zh) * 2021-10-27 2022-04-12 清华大学 软件模糊测试方法和装置、电子设备及存储介质
CN114661534A (zh) * 2022-05-24 2022-06-24 深圳时识科技有限公司 生成tms目标比特流的方法、装置和存储介质
CN115174441A (zh) * 2022-09-06 2022-10-11 中国汽车技术研究中心有限公司 基于状态机的tcp模糊测试方法、设备和存储介质
CN117667749A (zh) * 2024-01-31 2024-03-08 中兴通讯股份有限公司 一种模糊测试用例优化方法及系统
CN117667749B (zh) * 2024-01-31 2024-06-07 中兴通讯股份有限公司 一种模糊测试用例优化方法及系统
CN118349480A (zh) * 2024-06-17 2024-07-16 中国电子科技集团公司第三十研究所 一种基于进程级局部内存快照的协议模糊测试方法
CN118349480B (zh) * 2024-06-17 2024-08-13 中国电子科技集团公司第三十研究所 一种基于进程级局部内存快照的协议模糊测试方法

Also Published As

Publication number Publication date
CN109525457B (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
CN109525457A (zh) 一种基于状态迁移遍历的网络协议模糊测试方法
Shukla et al. Towards meticulous data plane monitoring
Iyer et al. Performance contracts for software network functions
WO2018099249A1 (zh) 在nfv系统中检测故障的方法、装置和系统
CN108781171A (zh) 用于在ipv6环境中用数据平面信号通知分组捕获的系统和方法
CN109714221B (zh) 网络数据包的确定方法、装置及系统
CN103154884B (zh) 模式检测
CN102170648A (zh) 无线传感器网络的被动诊断方法
CN104360938A (zh) 一种故障确认方法及其系统
Giannakopoulou et al. Behaviour analysis of distributed systems using the tracta approach
Li et al. Automatic test generation from communicating extended finite state machine (CEFSM)-based models
CN101482846A (zh) 基于可执行代码逆向分析的漏洞挖掘方法
US20180123898A1 (en) Network verification device, network verification method and program recording medium
CN105743699A (zh) 一种虚拟化环境的故障预警方法及系统
CN101136786A (zh) 网络故障节点诊断方法
Zhou et al. P4Tester: Efficient runtime rule fault detection for programmable data planes
CN106027284A (zh) 网络的故障诊断方法及装置
CN113630301B (zh) 基于智能决策的数据传输方法、装置、设备及存储介质
Zhang et al. Service failure diagnosis in service function chain
Miller et al. Coping with nondeterminism in network protocol testing
CN106131153A (zh) 基于智能网关的业务识别方法和装置
Bhowmik et al. Reliability on top of best effort delivery: Maximal connectivity test on noc interconnects
Sobeih et al. J-Sim: An integrated environment for simulation and model checking of network protocols
CN106506265A (zh) 检测fpga芯片挂死的方法及装置
CN107733082A (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
GR01 Patent grant