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) 提出了一种基于有限状态机引导的网络协议模糊测试方法. 通过对于网络协议实现进行有限状态机建模
来尽可能探索其内部状态机空间, 并以此引导模糊测试的进行, 提高模糊测试的代码覆盖率.

