一句话:提出用语法自动机与激进变异算子实现快速合成复杂缺陷触发的语法感知模糊测试器。
现有语法感知模糊测试因语法结构导致采样偏差,且解析树变异仅做局部小改动,难以高效合成复杂缺陷触发。Gramatron 将语法转换为语法自动机,重构文法以无偏采样输入状态空间;并重新设计大规模激进变异算子。生成输入多样性更高,覆盖率比现有 fuzzer 提升最多 24.2%,输入生成快 98%,表示小 24%,变异激进 6.4 倍且快 68%。在三个解释器、10 个已知缺陷上优于两种 Nautilus 变体;10 天真实部署发现 10 个新漏洞。
Fuzzers aware of the input grammar can explore deeper program states using grammar-aware mutations. Existing grammar-aware fuzzers are ineffective at synthesizing complex bug triggers due to: (i) grammars introducing a sampling bias during input generation due to their structure, and (ii) the current mutation operators for parse trees performing localized small-scale changes. Gramatron uses grammar automatons in conjunction with aggressive mutation operators to synthesize complex bug triggers faster. We build grammar automatons to address the sampling bias. It restructures the grammar to allow for unbiased sampling from the input state space. We redesign grammar-aware mutation operators to be more aggressive, i.e., perform large-scale changes. Gramatron can consistently generate complex bug triggers in an efficient manner as compared to using conventional grammars with parse trees. Inputs generated from scratch by Gramatron have higher diversity as they achieve up to 24.2% more coverage relative to existing fuzzers. Gramatron makes input generation 98% faster and the input representations are 24% smaller. Our redesigned mutation operators are 6.4× more aggressive while still being 68% faster at performing these mutations. We evaluate Gramatron across three interpreters with 10 known bugs consisting of three complex bug triggers and seven simple bug triggers against two Nautilus variants. Gramatron finds all the complex bug triggers reliably and faster. For the simple bug triggers, Gramatron outperforms Nautilus four out of seven times. To demonstrate Gramatron’s effectiveness in the wild, we deployed Gramatron on three popular interpreters for a 10-day fuzzing campaign where it discovered 10 new vulnerabilities.