论文标题
fuzzeraid:根据故障签名将模糊崩溃分组
FuzzerAid: Grouping Fuzzed Crashes Based On Fault Signatures
论文作者
论文摘要
模糊一直是在程序中查找错误和漏洞的重要方法。每天部署在行业中的许多模糊器可能会产生大量的崩溃。诊断此类崩溃可能非常具有挑战性且耗时。现有的模糊器通常采用启发式方法,例如代码覆盖范围或呼叫堆栈哈希(Hashhes)来清除对错误的重复报告。尽管这些启发式方法很便宜,但它们通常不精确,最终仍会报告许多与同一错误相对应的“独特”崩溃。在本文中,我们提出了使用故障签名来进行模糊报告的组崩溃的Fuzzeraid。故障签名是一个小的可执行程序,由原始程序中可以重现错误的原始程序中的一些必要语句组成。在我们的方法中,我们首先使用给定的崩溃产生故障签名。然后,我们使用其他碰撞诱导输入执行故障签名。如果重现故障,我们将崩溃分类为标记为故障签名的组;如果没有,我们会生成一个新的故障签名。在将所有崩溃诱导输入的所有崩溃分类后,我们将同一根本原因的故障签名进一步合并为组。我们在一个名为Fuzzeraid的工具中实现了我们的方法,并对15个现实世界错误和4个大型开源项目产生的3020次崩溃进行了评估。我们的评估表明,我们能够正确分组99.1%的崩溃,并且仅报告了17(+2)“唯一”错误,表现优于最先进的模糊器。
Fuzzing has been an important approach for finding bugs and vulnerabilities in programs. Many fuzzers deployed in industry run daily and can generate an overwhelming number of crashes. Diagnosing such crashes can be very challenging and time-consuming. Existing fuzzers typically employ heuristics such as code coverage or call stack hashes to weed out duplicate reporting of bugs. While these heuristics are cheap, they are often imprecise and end up still reporting many "unique" crashes corresponding to the same bug. In this paper, we present FuzzerAid that uses fault signatures to group crashes reported by the fuzzers. Fault signature is a small executable program and consists of a selection of necessary statements from the original program that can reproduce a bug. In our approach, we first generate a fault signature using a given crash. We then execute the fault signature with other crash inducing inputs. If the failure is reproduced, we classify the crashes into the group labeled with the fault signature; if not, we generate a new fault signature. After all the crash inducing inputs are classified, we further merge the fault signatures of the same root cause into a group. We implemented our approach in a tool called FuzzerAid and evaluated it on 3020 crashes generated from 15 real-world bugs and 4 large open source projects. Our evaluation shows that we are able to correctly group 99.1% of the crashes and reported only 17 (+2) "unique" bugs, outperforming the state-of-the-art fuzzers.