paperbot · PL 论文追踪

全部论文 待读 收藏

P2 CONFETTI

CONFETTI:模糊测试中的全局提示技术
ICSE Proceedings of the 44th International Conference on Software Engineering2022匹配度 1/10 · 论文研究模糊测试(动态分析)中的全局提示技术,属于软件测试领域,不涉及静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析,与用户的研究方向核心没有交集。引用 30 inbox
James Kukucka, Luís Pina, Paul Ammann, Jonathan Bell
crossref: 2026-09-12dblp: 2026-09-12

AI 速览

一句话:提出全局提示技术,让模糊测试将有趣字节注入任意输入的任意位置,从而提升分支覆盖与缺陷发现能力。

模糊测试通过自动生成能暴露缺陷的输入来检测代码漏洞,主流方法利用分支覆盖反馈进行引导,并有时结合白盒引导(如污点追踪或混合执行)来覆盖由复杂条件守卫的“魔法值”分支。这类结合通常采用定向输入变异,即在某个输入的特定偏移处放置特定字节。然而动态分析在实践中并不完美,可能丢失输入字节与分支谓词之间的重要关系,削弱技术效果。本文提出一种简单但有效的全局提示(global hinting)技术,允许模糊测试器不仅把感兴趣的字节插入目标位置,而是插入任意输入的任意位置。作者在 Java 中实现了 Confetti,同时使用定向提示与全局提示进行模糊测试。与两种基线(最先进的 Java 灰盒模糊测试器以及去掉全局提示的 Confetti 版本)相比,Confetti 覆盖了更多分支,发现了 15 个此前未报告的缺陷,其中 9 个是两种基线都无法发现的。通过事后分析执行过程,作者发现全局提示在揭示新覆盖方面至少与传统的定向提示同等有效。

问题
现有覆盖率引导模糊测试结合白盒引导时通常采用定向输入变异,但动态分析不完美可能丢失输入字节与分支谓词的关系,限制了对复杂条件守卫分支的覆盖效果。
方法
提出全局提示(global hinting)技术,将有趣字节插入任意输入的任意位置而非仅目标位置,并在 Java 中实现 Confetti,同时使用定向提示与全局提示进行模糊测试。
评估
与最先进的 Java 灰盒模糊测试器和去掉全局提示的 Confetti 版本进行实证对比,测量分支覆盖与缺陷发现数量,并对 Confetti 的执行进行事后分析。
原文摘要(Abstract)

Fuzz testing (fuzzing) allows developers to detect bugs and vulnerabilities in code by automatically generating defect-revealing inputs. Most fuzzers operate by generating inputs for applications and mutating the bytes of those inputs, guiding the fuzzing process with branch coverage feedback via instrumentation. Whitebox guidance (e.g., taint tracking or concolic execution) is sometimes integrated with coverage-guided fuzzing to help cover tricky-to-reach branches that are guarded by complex conditions (so-called "magic values"). This integration typically takes the form of a targeted input mutation, e.g., placing particular byte values at a specific offset of some input in order to cover a branch. However, these dynamic analysis techniques are not perfect in practice, which can result in the loss of important relationships between input bytes and branch predicates, thus reducing the effective power of the technique. We introduce a new, surprisingly simple, but effective technique, global hinting, which allows the fuzzer to insert these interesting bytes not only at a targeted position, but in any position of any input. We implemented this idea in Java, creating Confetti, which uses both targeted and global hints for fuzzing. In an empirical comparison with two baseline approaches, a state-of-the-art greybox Java fuzzer and a version of Confetti without global hinting, we found that Confetti covers more branches and finds 15 previously unreported bugs, including 9 that neither baseline could find. By conducting a post-mortem analysis of Confetti's execution, we determined that global hinting was at least as effective at revealing new coverage as traditional, targeted hinting.

链接与引用

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

BibTeX
@inproceedings{KukuckaPA022,
  title = {CONFETTI},
  author = {James Kukucka and Luís Pina and Paul Ammann and Jonathan Bell},
  booktitle = {ICSE},
  year = {2022},
  doi = {10.1145/3510003.3510628}
}