Page 318 - 《软件学报》2025年第8期
P. 318
袁斌 等: 基于有限状态机引导的网络协议模糊测试方法 3741
该漏洞触发需满足更复杂的前提条件, 而 SNETFuzzer 仍旧能构造成功触发该漏洞的测试样例. 在充分体现
模糊测试随机性的同时, 证明了 SNETFuzzer 拥有发现复杂内存型漏洞的能力.
图 14 在 OpenSSL 上发现的漏洞
4.5.3 漏洞总结
SNETFuzzer 成功挖掘了 2 个新漏洞和 1 个已发现漏洞. 这 3 个漏洞虽属于不同的 CWE 标准, 但均属于内存
型漏洞, 这表明了 SNETFuzzer 在发现内存型漏洞方面的表现优秀. SNETFuzzer 成功挖掘两个新漏洞, 并且很有
可能是零日漏洞, 这也说明了其具有挖掘出其他工具难以挖掘出的漏洞的能力.
5 未来工作展望
SNETFuzzer 拥有扩展至其他网络协议的可能性, 因为有状态的网络协议具备被建模为有限状态机的可能性.
如果需要将 SNETFuzzer 扩展至其他有状态的网络协议, 则需要向 SNETFuzzer 提供以下先验知识.
(1) 协议的字母表. 用于设计协议的有限状态机模型, 并告知学习程序可发送和接收的数据包类型.
(2) 协议的数据包结构. 用于解析和发送协议数据包, 以及后续的模糊测试.
上述信息都可以从待测协议的标准文档中获得, 因此, 在网络协议测试方面, SNETFuzzer 具有较好的普适性
和可扩展性. 下一步工作将尝试将 SNETFuzzer 扩展至其他有状态的网络协议 (如 SMTP、Telnet 等). 这些协议的
握手阶段和 TLS 协议类似, 同样具有被建模为有限状态机的潜力.
6 总 结
本文主要提出了一个基于有限状态机引导的网络协议模糊测试方法, 融合了有限状态机学习和基于覆盖引导
的模糊测试技术, 并且实现了一个原型系统 SNETFuzzer. 该系统通过有限状态机学习技术对被测网络协议实现进
行了深入建模, 从而使得模糊测试工具能够更准确地理解其系统行为. 利用 Angluin’s L*算法, 成功实现了针对
TLS 协议的有限状态机学习功能, 使得 SNETFuzzer 能够自动学习协议的系统行为特征及状态转移规律. 在此基
础上, SNETFuzzer 基于有限状态机生成了可用于引导模糊测试的种子文件, 并且实现了针对网络协议特征设计的
模糊测试工具, 使得经过变异之后的测试用例可靠有效. 在一系列实验中, SNETFuzzer 表现出色, 不仅在覆盖率、
路径发现、边覆盖数等主要指标上领先于相关工作, 而且成功地发现了多个安全漏洞, 其中包含两个新漏洞, 证明
了其实用性和有效性.
References:
[1] Xiong G, Tong JY, Xu Y, Yu HL, Zhao Y. A survey of network attacks based on protocol vulnerabilities. In: Proc. of the 2014 Asia-
Pacific Web Conf. Changsha: Springer, 2014. 246–257. [doi: 10.1007/978-3-319-11119-3_23]
[2] Zhang X, Li ZJ. Survey of fuzz testing technology. Computer Science, 2016, 43(5): 1–8, 26 (in Chinese with English abstract).
[3] Pistoia M, Chandra S, Fink SJ, Yahav E. A survey of static analysis methods for identifying security vulnerabilities in software systems.
IBM Systems Journal, 2007, 46(2): 265–288. [doi: 10.1147/sj.462.0265]
[4] Cornelissen B, Zaidman A, van Deursen A, Moonen L, Koschke R. A systematic survey of program comprehension through dynamic
analysis. IEEE Trans. on Software Engineering, 2009, 35(5): 684–702. [doi: 10.1109/TSE.2009.28]
[5] Fang DL, Song ZW, Guan L, Liu PZ, Peng AN, Cheng K, Zheng YW, Liu P, Zhu HS, Sun LM. ICS3Fuzzer: A framework for
discovering protocol implementation bugs in ICS supervisory software by fuzzing. In: Proc. of the 37th Annual Computer Security
Applications Conf. New York: Association for Computing Machinery, 2021. 849–860. [doi: 10.1145/3485832.3488028]
[6] Aichernig BK, Muškardin E, Pferscher A. Learning-based fuzzing of IoT message brokers. In: Proc. of the 14th IEEE Conf. on Software
Testing, Verification and Validation. Porto de Galinhas: IEEE, 2021. 47–58. [doi: 10.1109/ICST49551.2021.00017]

