Netfuzzlib: Adding First-Class Fuzzing Support to Network Protocol Implementations
摘要
This paper introduces Netfuzzlib, a framework that emulates network input and output in user space, allowing more efficient fuzz testing and symbolic execution of Linux network programs. We first systemize common requirements and caveats for efficient fuzzing and symbolic execution of socket-based network software. Building on top of the collected requirements, we design and implement a framework that seamlessly integrates with state-of-the-art fuzzing tools, as well as symbolic execution engines, and requires no knowledge of the program’s source code. Moreover, Netfuzzlib enables a range of speed optimizations, where in our evaluations it improved fuzzing speed by a factor ranging from roughly 10 to 600. By using this framework it becomes significantly easier to fuzz and symbolically analyze Linux network programs.