In recent years, fuzz testing has benefited from increased computational power and important algorithmic advances, leading to systems that have discovered many critical bugs and vulnerabilities in production software. Despite these successes, not all applications can be fuzzed efficiently. In particular, stateful applications such as network protocol implementations are constrained by their low fuzzing throughput and the need to develop fuzzing harnesses that reset their state and isolate their side effects. In this paper, we present SnapFuzz, a novel fuzzing framework for network applications. SnapFuzz offers a robust architecture that transforms slow asynchronous network communication into fast synchronous communication, snapshots the target at the latest point at which it is safe to do so, speeds up all file operations by redirecting them to a custom in-memory filesystem, and removes the need for many fragile modifications, such as configuring time delays or writing clean-up scripts, together with several other improvements. Using SnapFuzz, we fuzzed five popular networking applications: LightFTP, TinyDTLS, Dnsmasq, LIVE555 and Dcmqrscp. We report impressive performance speedups of 62.8x, 41.2x, 30.6x, 24.6x, and 8.4x, respectively, with significantly simpler fuzzing harnesses in all cases. Through its performance advantage, SnapFuzz has also found 12 extra crashes compared to AFLNet in these applications.
翻译:近年来,模糊测试得益于计算功率的提高和重要的算法进步,导致系统发现生产软件中许多关键的错误和弱点。尽管取得了这些成功,但并非所有应用都能够有效地模糊起来。特别是,网络协议执行等有声的应用程序都受到其低模糊通量的限制,而且需要开发重置状态和分离其副作用的模糊工具。在本文中,我们介绍了网络应用程序的新的模糊框架SnapFuzz。SnapFuzz提供了一个强大的结构,将缓慢的不同步网络通信转换为快速同步通信,在安全的最新点对目标进行截图,通过将网络协议执行转向一个定制的模版文件系统来加快所有文件操作,并消除许多脆弱修改的需要,如调整时间延迟或编写清理脚本,以及其他一些改进。我们用Snapfurfuzz,我们模糊了五种流行的网络应用程序:LightFTP、TyDTLIS、Dnsmaq、LVie55和Dmqx的性能报告。