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 based on UNIX domain sockets, speeds up all file operations by redirecting them to an in-memory filesystem, and removes the need for many fragile modifications, such as configuring time delays or writing cleanup scripts, together with several other improvements. Using SnapFuzz, we fuzzed five popular networking applications: LightFTP, Dnsmasq, LIVE555, TinyDTLS and Dcmqrscp. We report impressive performance speedups of 72.4x, 49.7x, 24.8x, 23.9x, and 8.5x, respectively, with significantly simpler fuzzing harnesses in all cases. Through its performance advantage, SnapFuzz has also found 12 previously-unknown crashes in these applications.
翻译:近年来,模糊测试得益于计算力的提高和重要的算法进步,导致系统发现生产软件中许多关键的错误和弱点。尽管取得了这些成功,但并非所有应用都能够有效地模糊起来。特别是,网络协议执行等有声的应用程序都受到其低模糊通量的限制,而且需要开发模糊的带子,以重设其状态和分离其副作用。在本文中,我们介绍了SnapFuzz(SnapFuzz),这是网络应用程序的一个新的模糊框架。 SnapFuzz(Snap Fuzz)提供了一个强大的结构,将缓慢的不同步网络通信转换成基于UNIX域座的快速同步通信,通过将所有文件操作转换到一个模拟文件系统来加快所有文件操作的速度,并消除许多脆弱修改的需要,例如调整时间的延迟或编写清理脚本,以及其他一些改进。我们用Snapfuzz(SningFTP)、Dnsmasq(Dive555)和Dcmrscp(cp)应用软件。我们分别报告说,SyDTyDLS(S)和Drassx(Sy)24.9(Slishill)的Syx)的SySyx(Sy)在12.