UBfuzz: Finding Bugs in Sanitizer Implementations

2024年01月09日
  • 简介
    本文提出了一个测试框架,用于验证编译器中清洗器实现的有效性。我们的核心组件包括(1)一个专门设计用于生成包含未定义行为(UB)程序的程序生成器,和(2)一种新颖的清洗器测试测试预言。程序生成器采用Shadow语句插入,这是一种通用且有效的方法,用于将UB引入到有效的种子程序中。生成的UB程序随后用于多个清洗器实现的差分测试。然而,不一致的清洗器报告可能源于编译器优化或清洗器漏洞。为了准确确定差异是否由清洗器漏洞引起,我们引入了一种新的测试预言,称为崩溃点映射。我们已经将我们的技术合并到UBfuzz中,这是一个用于测试清洗器的实用工具。在为期五个月的测试期间,UBfuzz成功地在GCC和LLVM清洗器中发现了31个漏洞。这些漏洞揭示了清洗器中严重的假阴性问题,即程序中某些UB未被报告。这项研究为进一步研究这一关键领域铺平了道路。
  • 作者讲解
  • 图表
  • 解决问题
    验证编译器中的消毒剂实现是否正确,并解决消毒剂漏报问题。
  • 关键思路
    提出了一个测试框架,包括一个生成器和一个新的测试 Oracle,用于产生包含未定义行为的程序,并对多个消毒剂实现进行差分测试。为了准确确定差异是否由消毒剂错误引起,引入了新的测试 Oracle,称为崩溃点映射。
  • 其它亮点
    使用 Shadow Statement Insertion 产生包含未定义行为的程序,成功发现了 GCC 和 LLVM 消毒剂中的 31 个错误。
  • 相关研究
    与最近的消毒剂测试研究相关的论文包括:Fuzzing with Code Fragments,Fuzzing File Systems via Two-Dimensional Input Space Exploration,以及Fuzzing: Hack, Art, and Science。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问