[论文解读] Sample-Free Learning of Input Grammars for Comprehensive Software Fuzzing
本文提出 Pygmalion,一种无需样本的自动方法,仅通过程序可执行文件利用动态污点分析与解析器探索,自动推断输入语法,生成高覆盖率、语法正确的测试输入。该方法在数分钟内完成语法推断,并生成数千个高质量输入,全面覆盖并组合语言特性,在输入质量和特性覆盖方面优于基于变异和约束的模糊测试工具。
Generating valid test inputs for a program is much easier if one knows the input language. We present first successes for a technique that, given a program P without any input samples or models, learns an input grammar that represents the syntactically valid inputs for P -- a grammar which can then be used for highly effective test generation for P . To this end, we introduce a test generator targeted at input parsers that systematically explores parsing alternatives based on dynamic tracking of constraints; the resulting inputs go into a grammar learner producing a grammar that can then be used for fuzzing. In our evaluation on subjects such as JSON, URL, or Mathexpr, our PYGMALION prototype took only a few minutes to infer grammars and generate thousands of valid high-quality inputs.
研究动机与目标
- 解决现有模糊测试技术在有效生成测试输入时依赖输入样本或正式规格说明的局限性。
- 通过仅从程序可执行文件自动学习其输入语法,实现全面的软件模糊测试。
- 通过生成结构良好、语义丰富的测试输入,提升测试输入质量,覆盖并组合语法特性。
- 提供一种无需样本、全自动且可复用于不同程序和输入格式的语法推断流程。
- 证明仅从执行中推断语法即可实现与基于约束和基于变异的模糊测试技术相当或更优的代码覆盖度。
提出的方法
- 一种由解析器驱动的测试生成器,通过动态污点分析,在解析过程中动态追踪输入字符与期望值之间的比较,以指导满足解析约束的输入生成。
- 通过迭代生成触发不同比较结果的输入,系统性地探索所有解析分支,确保覆盖所有语法路径。
- 一种语法学习器分析输入字符在执行过程中的数据流,将具有相同数据流的序列归为同一语法实体,并推断其组合规则。
- 利用测试生成器探索所得的等价类(如“任意数字”)对语法规则进行泛化,提升抽象程度与覆盖范围。
- 推断出的语法随后用作高速模糊测试生成器,无需额外的仪器化或程序执行即可生成有效输入。
- 该流程完全自动化,仅需程序可执行文件和一个有效输入前缀(如空字符串)作为输入。
实验结果
研究问题
- RQ1能否在不依赖任何输入样本或正式规格说明的情况下,准确推断出程序的输入语法?
- RQ2能否利用动态污点分析与解析器探索,系统性地覆盖程序输入解析器中的所有语法分支?
- RQ3所生成的语法能否支持生成高覆盖率、语义丰富的测试输入,且能组合多种语言特性?
- RQ4在输入有效性与代码覆盖度方面,无样本的基于语法的模糊测试与基于变异和基于约束的方法相比如何?
- RQ5所推断的语法在多大程度上可复用于不同工具与系统中的测试、程序理解或输入验证?
主要发现
- Pygmalion 仅使用程序可执行文件,在五分钟内成功推断出 JSON、URL 和 Mathexpr 的准确输入语法。
- 该系统生成了数千个有效且高质量的测试输入,全面组合了 JSON 中的数组、对象、字符串和数字等语法特性。
- 在 JSON 测试中,Pygmalion 生成的最长输入组合了嵌套结构与特殊字符等复杂元素,而 AFL 和 Klee 仅生成简单且重复的输入。
- 在覆盖率指标上,Pygmalion 在有效输入上实现了接近最大化的代码覆盖,除 URL 查询解析外,其表现与 Klee 相当或更优,后者在 URL 解析中略有优势。
- 超过 90% 的 Pygmalion 输入有效,显著优于 AFL 和 Klee,后两者因语法缺陷而产生大量无效输入。
- 推断出的语法支持对输入结构、深度和符号频率的精确控制,相比基于变异的方法,提供了更优越的测试用例设计能力。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。