一句话:提出 MTFuzz,用多任务神经网络学习输入空间紧凑嵌入以指导模糊测试变异,发现 11 个新缺陷并提升边覆盖。
模糊测试常通过进化搜索生成输入以最大化代码覆盖,但容易陷入大量无效变异。近期基于机器学习的变异策略虽有前景,却受训练数据质量与多样性限制:目标程序输入空间高维稀疏,收集多样且带成功/失败标签的样本代价过高。论文提出 MTFuzz,使用多任务神经网络在多个相关覆盖预测任务上学习输入空间的紧凑嵌入;该嵌入能指导变异过程,将多数变异集中在梯度较高的嵌入区域。评估在 10 个真实程序上,与 5 个先进模糊器相比平均获得约 2 倍边覆盖,并发现 11 个此前未知的缺陷。
Fuzzing is a widely used technique for detecting software bugs and vulnerabilities. Most popular fuzzers generate new inputs using an evolutionary search to maximize code coverage. Essentially, these fuzzers start with a set of seed inputs, mutate them to generate new inputs, and identify the promising inputs using an evolutionary fitness function for further mutation.Despite their success, evolutionary fuzzers tend to get stuck in long sequences of unproductive mutations. In recent years, machine learning (ML) based mutation strategies have reported promising results. However, the existing ML-based fuzzers are limited by the lack of quality and diversity of the training data. As the input space of the target programs is high dimensional and sparse, it is prohibitively expensive to collect many diverse samples demonstrating successful and unsuccessful mutations to train the model.In this paper, we address these issues by using a Multi-Task Neural Network that can learn a compact embedding of the input space based on diverse training samples for multiple related tasks (i.e.,predicting for different types of coverage). The compact embedding can guide the mutation process by focusing most of the mutations on the parts of the embedding where the gradient is high. MTFuzz uncovers 11 previously unseen bugs and achieves an average of 2× more edge coverage compared with 5 state-of-the-art fuzzer on 10 real-world programs