一句话:提出 linked crossover,利用动态执行信息对齐并交换参数序列的对应片段,提升参数化模糊测试的输入生成效果。
参数化模糊测试结合进化式与生成式模糊测试,用于构造能触发独特执行行为的结构化测试输入。其内部将输入表示为称为「参数序列」的位串,模糊器保存有价值的参数序列并通过扰动生成新输入,无需类型特定算子。然而现有参数化模糊测试只使用变异算子(仅修改单个输入),没有引入将多个输入混合的进化算子——交叉。交叉本应组合多个输入的优势特征,但参数化模糊测试的特性限制了传统交叉算子的有效性。本文提出 linked crossover,利用动态执行信息识别并交换参数序列中相互对应的部分。作者为 Java 实现了该交叉算子,评估了其保留优势特征的能力,并在 7 个真实 Java 项目上考察其对模糊器性能的影响。结果表明,在长、短两类模糊测试周期中,linked crossover 的表现始终不劣于或优于三个最先进的参数化模糊器以及另外两种交叉形式。
Parametric fuzzing combines evolutionary and generator-based fuzzing to create structured test inputs that exercise unique execution behaviors. Parametric fuzzers internally represent inputs as bit strings referred to as "parameter sequences". Interesting parameter sequences are saved by the fuzzer and perturbed to create new inputs without the need for type-specific operators. However, existing work on parametric fuzzing only uses mutation operators, which modify a single input; it does not incorporate crossover, an evolutionary operator that blends multiple inputs together. Crossover operators aim to combine advantageous traits from multiple inputs. However, the nature of parametric fuzzing limits the effectiveness of traditional crossover operators. In this paper, we propose linked crossover, an approach for using dynamic execution information to identify and exchange analogous portions of parameter sequences. We created an implementation of linked crossover for Java and evaluated linked crossover's ability to preserve advantageous traits. We also evaluated linked crossover's impact on fuzzer performance on seven real-world Java projects and found that linked crossover consistently performed as well as or better than three state-of-the-art parametric fuzzers and two other forms of crossover on both long and short fuzzing campaigns.