网盾网络安全培训学校育,只培训技术精英
全国免费咨询电话: 15827351614
Gustave:一款功能强大的嵌入式操作系统内核模糊测试工具

Gustave

Gustave是一款功能强大的嵌入式操作系统内核模糊测试工具,该工具是一个模糊测试平台,专为嵌入式操作系统内核而设计,该工具基于QEMU和AFL实现其功能,可以帮助广大研究人员对操作系统内核进行模糊测试,整个过程就向对一款简单的应用程序进行模糊测试一样轻松。

多亏了QEMU的多平台特性,我们可以将Gustave视为QEMU内部的AFL forkserver实现,并且提供了细粒度的目标检查功能。

支持哪些内核?

从功能设计来看,Gustave主要针对的是嵌入式操作系统内核,因此如果你想要对一个大型复杂的Windows或Linux内核进行模糊测试的话,Gustave可能就不是最佳选择了。

不过,如果你针对的是那些嵌入式操作系统内核,并且是由一些应用程序启动且不需要用户交互的硬件设备,那么Gustave绝对是你最佳的选择。

工作机制

来自AFL项目的afl-fuzz工具可以帮助我们以自动化的方式对目标进行模糊测试。但是,AFL无法直接对操作系统内核进行模糊测试,也无法让其目标直接解析生成的测试用例。

简而言之,afl-fuzz将会运行QEMU并将Gustave整合进目标项目之中。与此同时,Gustave将会处理:

  • forkserver同步

  • 生成的测试用例转换为目标系统调用

  • 目标内核监控

跟现有解决方案进行对比

  • Project Triforce

  • afl-unicorn

  • kAFL

Gustave的设计选择意味着跟现有项目有着以下区别:

  • 你需要在目标内核中注入AFL指令;

  • 目标内部不需要特定的开发;

  • 只要QEMU提供支持,就可以真正瞄准目标进行模糊测试(OS、体系结构);

  • 甚至可以将硬件虚拟化与kvm结合使用;

  • 涵盖目标内核中实现的所有系统调用;

当前状态

硬件

我们已经实现并在Intel x86和PowerPC上进行了测试,Gustave实现是架构独立的,如果你使用QEMU来对目标进行测试的话,只需要稍做配置即可结合Gustave来对目标进行模糊测试了。

目前,我们提供了已整合Gustave的Intel 440FX和PowerPC PREP样本,我们在主板上实现的样例比较简单,感兴趣的同学可以参考这篇【文档】。

软件

我们还提供了POK 微内核目标特定的开发:

  • 针对x86/PRC的系统调用ABI生成器;

  • X86内存;

工具使用

1、首先,你需要准备好需要进行模糊测试的目标,使用afl-gcc进行重构或代码修复。

2、接下来,针对目标实现翻译器。

3、整合Gustave构建QEMU。

4、针对目标编写一个JSON配置文件。

5、最后,在命令行终端窗口中运行工具即可。

工具要求

除了目标和QEMU的工作编译环境之外,还需要以下Git树:

$ git clone -b gustave https://github.com/airbus-seclab/afl $ git clone -b gustave https://github.com/airbus-seclab/qemu