[论文解读] Nyx-Net: Network Fuzzing with Incremental Snapshots
Nyx-Net 是一种新颖的基于快照的模糊测试框架,通过使用增量式全虚拟机快照和选择性网络栈仿真,实现了对复杂、有状态网络服务的高性能、基于覆盖率的模糊测试。与最先进的方法相比,其性能最高可提升300倍,并在 Lighttpd、MySQL 客户端以及 Firefox 的 IPC 接口等目标中发现了此前未知的漏洞。
Coverage-guided fuzz testing ("fuzzing") has become mainstream and we have observed lots of progress in this research area recently. However, it is still challenging to efficiently test network services with existing coverage-guided fuzzing methods. In this paper, we introduce the design and implementation of Nyx-Net, a novel snapshot-based fuzzing approach that can successfully fuzz a wide range of targets spanning servers, clients, games, and even Firefox's Inter-Process Communication (IPC) interface. Compared to state-of-the-art methods, Nyx-Net improves test throughput by up to 300x and coverage found by up to 70%. Additionally, Nyx-Net is able to find crashes in two of ProFuzzBench's targets that no other fuzzer found previously. When using Nyx-Net to play the game Super Mario, Nyx-Net shows speedups of 10-30x compared to existing work. Under some circumstances, Nyx-Net is even able play "faster than light": solving the level takes less wall-clock time than playing the level perfectly even once. Nyx-Net is able to find previously unknown bugs in servers such as Lighttpd, clients such as MySQL client, and even Firefox's IPC mechanism - demonstrating the strength and versatility of the proposed approach. Lastly, our prototype implementation was awarded a $20.000 bug bounty for enabling fuzzing on previously unfuzzable code in Firefox and solving a long-standing problem at Mozilla.
研究动机与目标
- 解决高效模糊测试复杂、有状态网络服务的挑战,这些服务难以通过传统基于覆盖率的模糊测试工具进行测试。
- 通过基于虚拟机监控器的快照技术,克服现有方法的局限性,如网络延迟、状态污染和不可靠的清理机制。
- 实现对以往难以模糊测试的目标(包括服务器、客户端、游戏和 IPC 机制)的有效模糊测试,且无需源代码或自定义测试框架。
- 通过选择性网络栈仿真,将测试执行与真实网络 I/O 解耦,从而提升测试吞吐量和代码覆盖率。
- 通过在 Firefox、Lighttpd 和 MySQL 等生产系统中发现新漏洞,证明其实际适用性和安全影响。
提出的方法
- 利用基于虚拟机监控器的增量快照技术,实现接近原生的性能,并在测试用例之间实现确定性重置。
- 引入对网络 I/O 操作的选择性仿真,避免真实网络流量带来的开销,同时保持协议的保真度。
- 以 Nyx 为基础,增强其支持网络感知的快照功能,在目标即将接收模糊测试器提供的输入时触发快照。
- 使用轻量级代理程序监控和控制模糊测试期间的网络栈行为,实现精确的时间控制和状态管理。
- 应用基于覆盖率的变异和反馈机制,指导输入生成,确保在复杂消息传递协议中实现高代码覆盖率。
- 支持仅二进制文件的模糊测试,允许直接对标准软件仓库中的预编译二进制文件进行测试,无需源代码或手动构建测试框架。
实验结果
研究问题
- RQ1如何有效将基于覆盖率的模糊测试应用于难以通过传统文件模糊测试方式处理的复杂、有状态网络服务?
- RQ2与真实网络 I/O 或非增量快照相比,增量式全虚拟机快照在提升模糊测试性能和可靠性方面能达到何种程度?
- RQ3选择性网络栈仿真是否能降低模糊测试开销,同时保持足够的协议保真度以触发生产环境中真实协议的漏洞?
- RQ4在真实目标(如 Firefox 的 IPC、Lighttpd 和 Super Mario Bros.)上应用 Nyx-Net 时,其对测试吞吐量和代码覆盖率的影响如何?
- RQ5Nyx-Net 是否能发现现有模糊测试工具未能检测到的生产系统中此前未知的漏洞?
主要发现
- 与最先进的网络模糊测试技术相比,Nyx-Net 的测试吞吐量最高提升300倍,显著加快了漏洞发现速度。
- 该框架在平均情况下将代码覆盖率提升了最高达70%,实现了对复杂网络协议表面的更深入探索。
- 在 ProFuzzBench 目标中发现了两个此前未被任何其他模糊测试工具发现的未知漏洞,证明了其卓越的探索能力。
- 在 Super Mario Bros. 游戏的模糊测试中,Nyx-Net 相较于以往方法实现了10至30倍的性能提升,甚至在实际运行时间上比完美人类通关还快。
- 该原型成功实现了对 Firefox 以往难以模糊测试的 IPC 接口的模糊测试,导致获得20,000美元的漏洞赏金,并负责任地披露了三个空指针解引用漏洞和两个可利用漏洞。
- Nyx-Net 在 Lighttpd 的 malloc 实现中发现了一个整数下溢漏洞,该漏洞在发布前已被修复,凸显了其在真实世界安全测试中的有效性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。