中文

用于发现 C 与 C++ 内存不安全的模糊测试器与静态分析工具比较研究

密码学与安全 2026-03-31 v2

摘要

如今,关键软件系统中超过 70% 的安全漏洞源于内存安全违规。为了应对这一挑战,模糊测试和静态分析被广泛用作发现此类漏洞的自动化方法。模糊测试通过生成随机程序输入来识别运行时故障,而静态分析则对代码进行推理以检测潜在漏洞。尽管这些技术有着共同目标,但它们采取了根本不同的方法,并且在很大程度上独立发展。在本文中,我们对 5 种静态分析器和 13 种模糊测试器进行了实证分析,将其应用于 C/C++ 程序中超过 100 个已知的安全漏洞。我们测量了每种工具和漏洞的检测率,以评估这些方法的差异与互补性。我们发现模糊测试器发现的 bug 集合非常相似,而静态分析器报告的 bug 集合则更加多样,并确定了每组中明显的领先者。将所有模糊测试器的并集与所有静态分析器的并集进行比较,我们观察到它们几乎是互不相交的。在第二步中,我们手动验证了为评估而开发的报告到 bug 的映射,并讨论了关于局限性、可用性以及集成到开发过程中的更多定性方面。我们考察了这些 bug 发现工具在关键开源项目中的使用广泛程度。我们为开发者选择工具以强化其软件提供建议,并指出了采用障碍以及未来的研究机会。

关键词

引用

@article{arxiv.2505.22052,
  title  = {A Comparative Study of Fuzzers and Static Analysis Tools for Finding Memory Unsafety in C and C++},
  author = {Keno Hassler and Philipp Görz and Stephan Lipp},
  journal= {arXiv preprint arXiv:2505.22052},
  year   = {2026}
}

备注

10 pages, 4 figures