paperbot · PL 论文追踪

全部论文 待读 收藏

P2 FuzzerAid: Grouping Fuzzed Crashes Based On Fault Signatures

FuzzerAid:基于故障签名对模糊测试崩溃进行分组
ASE Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering2022匹配度 2/10 · 该论文属于软件测试/缺陷诊断方向,核心是用可执行的故障签名程序复现并聚类 fuzzing 崩溃,既不涉及静态分析、形式化验证,也不涉及 LLM/Agent 或浮点、贝叶斯程序分析,与用户画像的核心问题(PL↔AI 交叉)基本无交集。仅在'工业界落地工具'与'问题驱动'这两点偏好上有微弱呼应。引用 6 inbox
Ashwin Kallingal Joshy, Wei Le
crossref: 2026-09-12

AI 速览

一句话:FuzzerAid 用可执行的故障签名程序复现崩溃并聚类,把同一根因的 fuzzing 崩溃正确归为一组。

模糊测试在工业界被广泛用于发现程序缺陷,但每天会产生海量崩溃,人工诊断极其耗时。现有 fuzzer 常用代码覆盖率或调用栈哈希等廉价启发式去重,但精度不足,仍会把同一 bug 的多个崩溃报告为不同的“唯一”缺陷。本文提出 FuzzerAid,其核心是故障签名:一个由原程序中必要语句构成的小型可执行程序,能够复现某个缺陷。对给定崩溃,FuzzerAid 先生成故障签名,再用其他触发崩溃的输入执行该签名;若失败被复现,就把相应崩溃归入以该签名标记的组,否则生成新的签名。所有崩溃分类完毕后,再按同一根因合并故障签名。作者实现了工具并在 4 个大型开源项目、15 个真实缺陷产生的 3020 个崩溃上进行评估,正确定组率达 99.1%,仅报告 17(+2)个“唯一”缺陷,优于当前最先进的 fuzzer。

问题
模糊测试产生的崩溃数量庞大且存在大量重复报告,现有基于覆盖率或调用栈哈希的去重启发式不精确,导致诊断工作繁重。
方法
从每个崩溃生成由原程序必要语句构成的可执行故障签名小程序,用其他触发输入执行该签名来判定崩溃是否属于同组,并进一步合并具有相同根因的故障签名。
评估
在来自 4 个大型开源项目、15 个真实缺陷的 3020 个崩溃上评估,99.1% 的崩溃被正确分组,仅报告 17(+2)个“唯一”缺陷,优于现有最先进 fuzzer。
原文摘要(Abstract)

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.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot7371,
  title = {FuzzerAid: Grouping Fuzzed Crashes Based On Fault Signatures},
  author = {Ashwin Kallingal Joshy and Wei Le},
  booktitle = {ASE},
  year = {2022},
  doi = {10.1145/3551349.3556959}
}