freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Gustave:一款功能强大的嵌入式操作系统内核模糊测试工具
2020-12-28 13:50:11

Gustave

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

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

支持哪些内核?

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

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

工作机制

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

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

  • forkserver同步

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

  • 目标内核监控

跟现有解决方案进行对比

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

项目地址

Gustave:【GitHub传送门

参考资料


# 模糊测试 # 内核安全 # 嵌入式
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录