Syzkaller系列文章链接
最近一段时间在使用syzkaller进行kernel的fuzz测试, 抽时间将syzkaller的学习记录一下。 此系列将通过下面链接不定期进行更新:
Syzkaller介绍
syzkaller 是一个无监督的覆盖引导内核模糊器。 syzkaller是google开源出来的一个模糊测试工具,目前它对linux测试支持最多。
模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞(二进制漏洞)的方法。Syzkaller是一种基于覆盖率的模糊测试工具,通过kcov收集覆盖率信息,若产生新的覆盖,则认为当前的case为有效case,此时syzkaller对case参数进行变异寻找系统漏洞。
syzkaller专注于特定类别的错误,即内核系统调用实现(或简称为系统调用)中的错误。它们是用户访问操作系统提供的功能和资源的主要入口点,从打开文件到配置设备。当用户的输入不是内核所期望的时会发生什么? 唯一正确的答案是内核应该通过返回适当的错误代码来警告用户他们提供了无效的输入。 导致意外行为的用户输入;使系统崩溃;错误地或意外地授予权限是一个内核错误。鉴于此,系统调用是内核测试的重要组成部分,因为它们是潜在的故障点。
正如 Linus Torvalds 所说,内核开发的第一条规则是我们不破坏用户空间。这意味着如果用户应用程序在一个版本中工作,它应该在以下任何一个版本中以相同的方式工作。
总之, syzkaller是一种fuzz测试, 通过kcov进行覆盖率统计以实现无监督测试, 并专注于测试kernel 系统调用类接口的稳定验证以及安全漏洞探测。
参考: [1]:https://android.googlesource.com/platform/external/syzkaller/
|