欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

现有USB模糊测试技术的总结(上)

来源:本站整理 作者:佚名 时间:2019-08-09 TAG: 我要投稿
由于FaceDancer速度很慢,这使得任何基于它构建的解决方案都无法扩展测试功能。由于在实践中,经常需要将FaceDancer和目标设备作为模糊测试的基本要素,所以,这也对FaceDancer的可扩展性带来了更多挑战。反馈是另一个重要问题,模糊输入的突变是基于模板和随机化的,除了系统日志记录之外,没有来自目标的实时反馈(例如代码覆盖率)。因此,模糊测试的准确率是非常不可信的。
为了摆脱硬件依赖性,使用虚拟化(例如QEMU)来进行保存。vUSBf使用QEMU/KVM运行内核映像,并利用QEMU中的USB重定向协议将对USB从机的访问重定向到由模糊测试工具控制的USB模拟工具,如下所示:

虽然vUSBf提供了一个很好的编排体系结构来并行运行多个QEMU实例,以此解决可扩展性问题,但模糊测试工具本质上是基于模板的,而反馈也还仍然依赖于系统日志记录。
POTUS
为此,有研究人员开发了POTUS 项目,POTUS 项目也可以发现位于 Linux USB 驱动程序的漏洞。
2017年,伦敦大学的安全研究人员发布了 POTUS工具,这是一种可以发现 Linux USB 设备驱动程序漏洞的工具。该工具通过设置虚拟机,通用 USB 设备以及故障注入,发送模糊符号等技术来测试 USB 驱动程序继而查找漏洞。
研究人员通过 POTUS 测试 USB 驱动程序发现了两个 Linux 内核漏洞。一个是 CVE-2016-5400,USB 设备驱动程序中用于与 Airspy 软件定义无线电(SDR)通信的内存泄漏漏洞,而另一个是自 2003 年以来已存在的 Linux 内核的乐高 USB 塔驱动器使用后释放漏洞(无 CVE 标识符)。
POTUS的工作原理如下所示:

systemtap是一个诊断linux系统性能和功能问题的开源软件,并且允许开发人员编写和重用简单的脚本深入探查linux系统的活动,可以快速安全的提取过滤总结数据,以便能够诊断复杂的性能或功能问题。
在USB模糊测试中,SystemTap用于检测内核存在的漏洞,并将漏洞数量记录下来。基于不同状态下的故障数量的路径优先级排序算法可以控制“分叉(fork)”的数量。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者输入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同,相当于克隆了一个自己。
给定路径的故障数量表示代码覆盖率,因此,故障数量越大则代码覆盖率越高。另外,POTUS还在QEMU中实现了一个通用的USB虚拟从机,以使用可配置的设备描述符和数据传输来模拟不同的USB从机。 虚拟从机中的USB 驱动程序(USB 驱动程序)使用系统调用来使用暴露在虚拟从机的不同设备节点。与vUSBf相比,POTUS就具有模糊测试反馈机制(通过计算路径内的故障数量),从而支持更多USB从机模拟。但是,在USB 驱动程序中模拟某些USB从机操作的手动进程、符号执行的基本限制——路径爆炸( path explosion),以及依赖于路径故障数量的未知有效性和局限性,使得POTUS很难被广泛使用。
本文我们先从什么是USB协议栈开始讲起,然后再讲到USB模糊测试的历史,其中讲到了一些过去的常用技术和工具,不过它们都存在着一些问题。下文,我们将介绍最新的USB模糊测试的解决方案。
 

上一页  [1] [2] 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载