模糊测试syzkaller项目之FastSyzkaller

FastSyzkaller: 提高Linux内核模糊测试的模糊效率的工具

此文只是对原文含义的提取, 英文原文在这里
https://iopscience.iop.org/article/10.1088/1742-6596/1176/2/022013/pdf

  • 简要来说本文提出了FastSyzkaller,它将Syzkaller与N-Gram模型结合在一起,以优化测试用例生成过程,提高模糊效率。因为本文有一部分在介绍syzkaller的使用,而具体syzkaller的运作方法请参考usages文档下的使用方法, 这里就不再累述了。

  • N-Gram模型广泛且主要用于自然语言工具包,计算语言学和概率领域。 通过从文本或语料库中收集,该论文的项目拥有一系列连续的项目,这些项目可以分为n-gram元组。 在本文中,N-Gram模型用于提取易受攻击的系统调用模式。 作者的目标是在可能易受攻击的实际执行跟踪中对N-Gram顺序系统调用模式进行格式化,以便在模糊测试过程中指导测试用例生成阶段,并进一步提高内核模糊效率

注: 易受攻击的程序行为可以部分地由一系列系统调用来表示,在本文中也称为易受攻击的模式。

FastSyzkaller与Syzkaller的区别

  1. 为了在每个测试用例中保持易受攻击的系统调用模式的顺序,FastSyzkaller只能在给定测试输入后插入具有高优先级的合理系统调用,或者在改变现有测试用例时更改系统调用的参数。 更重要的是,它不能删除或改变系统调用序列中任何给定的系统调用,以免更改易受攻击的系统调用模式的顺序。
  2. 通过以作者定义的方式生成测试用例,我们可以确保新生成的FastSyzkaller测试用例包含预先学习的N-Gram易受攻击的系统调用模式,以提高Syzkaller的Linux内核模糊测试效率。 更重要的是,FastSyzkaller仍然可以向测试用例插入新的系统调用,并更改参数以改善其系统调用多样性和覆盖范围。
  3. 在相同条件情况下,fastskyzller的效率要明显高于syzkaller

具体例子

  • 在表1中显示了崩溃程序中排名前十的易受攻击的5-gram模式。
  • 在表2列出了非崩溃程序中的前10个正常5-gram模式。
  • 作者使用选择5作为调用链长度是因为, 在做前期准备工作时, 分别对这些N-Gram模式进行统计分析,发现当n设置为5时,易受攻击模式的数据分布在所有选择中分布更均匀。
  • 这里可以看出可以看到大多数易受攻击的模式包含与setsockopt()函数相关的系统调用,所以它是易受攻击模式的一环的可能性比较大。而ioctl()系统调用函数也会以正常5-gram模式出现多次,所以它的可能性较小。

总结

在本文中,作者利用N-Gram模型提取易受攻击的系统调用模式,并提出FastSyzkaller以提高Linux内核模糊效率。 通过使用开源的Linux kernel目标模糊测试工具Syzkaller,在所有测试输入中收集了顺序系统调用模式,并利用N-Gram模型来处理这些数据。 他们将这些易受攻击的模式组合成FastSyzkaller作为给定的语料库,以便它可以基于预定义的易受攻击的模式生成新的测试用例。 它可以提高触发崩溃时的模糊效率。 此外,建立了实验并进行了评估,以便将FastSyzkaller与Syzkaller进行比较。 结果表明,FastSyzkaller在两种碰撞类型以及总碰撞量和模糊效率方面的性能提高了3倍。 FastSyzkaller还暴露出比Syzkaller更珍贵的独特碰撞类型。