Page 304 - 《软件学报》2025年第8期
P. 304

袁斌 等: 基于有限状态机引导的网络协议模糊测试方法                                                      3727


                 6
                 (Cluster and Grid Computing Lab (Huazhong University of Science and Technology), Wuhan 430074, China)
                 7
                 (School of Computer Science and Technology, Huazhong University of Science and Technology, Wuhan 430074, China)
                 8
                 (Jinyinhu Laboratory, Wuhan 430040, China)
                 9
                 (Songshan Laboratory, Zhengzhou 452470, China)
                 10
                  (Research Institute of Huazhong University of Science and Technology in Shenzhen, Shenzhen 518057, China)
                 Abstract:  Fuzz  testing  automatically  uncovers  vulnerabilities  in  software.  However,  existing  fuzz  testing  tools  for  network  protocols  are
                 not  able  to  fully  explore  their  internal  state  space,  resulting  in  limited  coverage.  Finite  state  machines  comprehensively  model  the
                 implementation  of  network  protocols  to  provide  an  in-depth  understanding  of  their  system  behavior  and  internal  state  space.  This  study
                 proposes a fuzz testing method for network protocols based on finite state machines. It focuses on the commonly used TLS protocol, using
                 finite  state  machine  learning  to  model  the  implementation  of  the  TLS  protocol,  reflecting  the  protocol’s  internal  state  space  and  system
                 behavior.  Subsequently,  guided  by  finite  state  machines,  the  fuzz  testing  of  the  TLS  protocol  achieves  deeper  depth  and  broader  code
                 coverage.  This  study  also  implements  a  prototype  system,  SNETFuzzer,  which  outperforms  existing  methods  in  important  metrics  such  as
                 coverage  in  a  series  of  comparative  experiments.  SNETFuzzer  successfully  discovers  multiple  vulnerabilities,  including  two  new  ones,
                 demonstrating its practicality and effectiveness.
                 Key words:  software testing; fuzz testing; network protocol; finite state machine

                    互联网的广泛应用对网络空间的安全性提出了极高的需求. 其中, 网络协议是维护网络空间安全的关键基石,
                 其安全性直接决定着网络空间的整体安全水平. 网络协议当中普遍存在各种漏洞, 而任何一个网络协议漏洞都可
                 能带来严重的损失和危害.
                    网络协议的漏洞具有广泛性、隐蔽性、可用性、持久性及危害性等特点                          [1] . 这是由于网络协议本身使用范围
                 广, 使得其漏洞具有广泛性, 并且这些漏洞既可能存在于协议设计当中, 也可能存在于协议具体实现当中, 隐蔽性
                 较强. 其次, 网络协议实现在运行的时候一定会暴露其通信端口, 这使得网络协议漏洞具有高可用性. 协议实现目
                 前缺乏足够的安全审查和测试, 这导致协议漏洞可能存在较长时间, 具有持久性. 而网络协议漏洞可能会导致严重
                 的安全问题和数据泄露, 给个人、组织甚至整个社会都有可能带来严重经济损失, 这使得其具有严重危害性. 因
                 此, 及时发现并修补网络协议漏洞对于网络空间安全来说至关重要.
                    模糊测试技术是软件测试领域中的代表性技术                 [2] . 它通过输入大量随机、无效或异常的数据到应用程序中,
                 以侦测系统潜在的漏洞, 这种方法简单直接、高效有效. 目前, 许多开源软件已经通过这种方法发现了大量未知的
                 新漏洞. 模糊测试工具具有高度自动化、能够模拟程序实际运行情况以及强适应性的特点.
                    目前已经有一些工作将模糊测试技术应用在网络协议当中. 它们以特定的方式生成用于大量用于测试网络协
                 议实现的数据包输入, 并且通过变异来使数据包输入尽可能覆盖更多的代码. 然而大部分网络协议模糊测试工作
                 当中有一个严重的问题, 即在探索协议实现内部状态空间方面存在不足. 虽然这些工具在生成大量的随机、无效
                 或异常数据方面表现出色, 确实可以检测一部分潜在的安全漏洞, 但它们对于深入理解和模拟协议实现内部状态
                 的能力有限. 这意味着这些工具可能会错过一些仅在特定状态下才会触发的漏洞, 因为它们未能完全模拟协议实
                 现的各种状态变化, 这使得其代码覆盖率有限.
                    针对以上问题, 本文提出了一种基于有限状态机的网络协议模糊测试方法, 将有限状态机技术与模糊测试技
                 术相结合并应用在网络协议测试当中. 有限状态机是一种抽象的数学模型, 用于描述系统的行为. 有限状态机所描
                 述的系统具有有限个状态, 并且能够在这些状态之间进行有规则的转移. 有限状态机的状态用于表示系统所处的
                 不同运行状态, 而状态之间的转移描述了系统在不同状态之间的过渡规则和条件. 这些特性使得有限状态机非常
                 适合描述网络协议实现的系统行为和内部状态空间. 有限状态机可用于引导网络协议模糊测试, 解决当前网络协
                 议模糊测试工具对协议实现内部状态空间探索不充分的问题, 以扩大模糊测试的代码覆盖率, 从而可能发现新的
                 未知安全漏洞.
                    本文的主要贡献如下.
                    (1) 提出了一种基于有限状态机引导的网络协议模糊测试方法. 通过对于网络协议实现进行有限状态机建模
                 来尽可能探索其内部状态机空间, 并以此引导模糊测试的进行, 提高模糊测试的代码覆盖率.
   299   300   301   302   303   304   305   306   307   308   309