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.
翻译:模糊是发现程序错误和弱点的一个重要方法。 许多在行业中部署的模糊器每天都在运行, 并且可以产生大量碰撞。 诊断这样的碰撞可能非常困难而且耗时。 现有的模糊器通常使用代码覆盖或调用堆叠的杂交来清除重复报告错误。 虽然这些杂交器价格低廉, 但是它们往往不准确, 最终仍然报告许多与同一错误相对应的“ 独有” 撞车。 在本文中, 我们展示了使用错误签名的 FuzzerAid, 使用错误签名来进行由模糊器报告的分组撞车。 错误签名是一个小的可执行程序, 包含从原始程序中选择的、 可以复制错误的必备声明。 在我们的方法中, 我们首先使用给定的折叠车模式来生成错误签名。 如果这些杂交器是廉价的, 我们只将撞车分类为错误标志的组; 如果不是, 我们生成了一个新的错误签名。 在所有的崩溃输入被分类之后, 我们进一步将相同的断器的错误签名并入了一个小程序, 。 我们用的是“ 15号” 我们用一个真正的错误方法来评估了“ ” 。 。 我们用的是, 我们的“ 。 “ 正确的” 。 “ 正确的” 和“ 正确的” 我们的错误” 。 我们的错误” 将一个“ 的错误” 。 “ 。 “ 。” 。“ 。“ ” ” ” 。” 。“ 。“ 。” 正确的” 。“ 。“ 。” 。“ 和“ 。” 。” 。“ 正确的” 正确的” 正确的” 正确的” 。 “我们做了一个“ 。” 。 “我们做了一个“ 。” 。” 我们的“ ” ” 。” 。” 。“ ” ” ” ” ” ” 。“ 。“ ” ” 。“ 。“ ” 。“ 。 “ 。“ 。“ ” ” ” 。“ ” ” ” ” 。“ 。“ ” 。“ 和“ ” ” ” ” ” ” ” 。“ ” ” 。 “ ”