基于 LibAFL-DiFuzz 的 Rust 与 Go 有向模糊测试
密码学与安全
2026-02-18 v2
摘要
在现代 SSDLC 中,程序分析与自动化测试是降低发布前漏洞的关键手段,模糊测试作为快速且广泛使用的动态测试方法,然而传统覆盖导向的模糊测试在特定任务(如验证静态分析报告或复现崩溃)时可能效果有限,而有向模糊测试通过聚焦特定程序位置的接近度度量,显示出更好的效果。虽然一些最早的有向模糊器(如 AFLGo、BEACON)采用不同的接近度度量方式,但大多数自动化测试工具仍聚焦于 C/C++ 代码。随着 Rust 与 Go 的流行,对这些语言提供精确高效测试解决方案的需求日益增长。本文扩展了有向模糊测试的适用范围,超越传统的 C/C++ 软件分析。我们提出一种专为 Rust 与 Go 应用量身定制的有向灰盒模糊测试方法,引入高级预处理技术、rustc 编译器定制以及精细的图构建与插装方法,以实现对特定程序位置的有效定位。基于 LibAFL-DiFuzz 后端实现的模糊测试工具相较于流行工具(如 aflrs、cargo-fuzz、go-fuzz)显示出竞争优势。根据 TTE(Time to Exposure)实验结果,Rust-LibAFL-DiFuzz 以最佳 TTE 成绩获胜;Go-LibAFL-DiFuzz 则在大多数情况下取得最佳或平均成绩,且有两个案例的差距达数十倍。这些结果证明了我们方法的更高效率与准确性。
关键词
引用
@article{arxiv.2601.22772,
title = {Rust and Go directed fuzzing with LibAFL-DiFuzz},
author = {Timofey Mezhuev and Darya Parygina and Daniil Kuts},
journal= {arXiv preprint arXiv:2601.22772},
year = {2026}
}