SATURN: Host-Gadget Synergistic USB Driver Fuzzing

SATURN: Host-Gadget Synergistic USB Driver Fuzzing

作者:Yiru Xu, Hao Sun, Jianzhong Liu, Yuheng Shen, and Yu Jiang

会议:S&P 24

背景介绍

在数字化时代,USB设备因其便捷性而无处不在,但这也带来了潜在的安全风险。为了全面检测USB驱动程序中的漏洞,清华大学软件学院的研究人员提出了一种创新的USB驱动模糊测试方法——SATURN。本文将带您深入了解SATURN项目,探索它是如何成为USB安全领域的新利器。

USB安全的重要性 USB(通用串行总线)作为现代操作系统中不可或缺的一部分,允许各种外设方便地连接到计算机。然而,USB堆栈中的任何漏洞都可能被恶意利用,导致系统崩溃或数据泄露。因此,对USB驱动程序的安全性测试显得尤为重要。

设计

SATURN采用了一种新型的USB驱动模糊测试方法,它通过模拟主机和设备之间的交互来检测漏洞。这种方法的核心在于同时对USB的主机端(Host)和设备端(Gadget)进行模糊测试,以覆盖整个USB通信处理链。同时利用 Linux 的 Gadget 设备模拟功能与 Host 连接设备功能。

SATURN: Host-Gadget Synergistic USB Driver Fuzzing

SATURN的工作原理 SATURN的工作流程分为两个阶段:设备附加和协同模糊测试。

  1. 设备附加阶段 在这一阶段,SATURN利用从内核中提取的驱动信息,动态添加USB设备,并响应初始化请求,以提高驱动初始化的成功率。通过这种方式,SATURN能够触发更多的主机驱动程序,为后续的交互逻辑打下基础。

  2. 协同模糊测试阶段 在设备成功添加后,SATURN通过在主机和设备上注入系统调用序列来进行协同模糊测试。这种方法能够显著提高生成的系统调用序列的质量,从而更有效地探索USB通信过程中的复杂交互逻辑。

性能评估

SATURN: Host-Gadget Synergistic USB Driver Fuzzing

与现有的USB模糊测试工具(如Syzkaller、USBFuzz和FUZZUSB)相比,SATURN在相应堆栈上的分支覆盖率分别提高了1.53倍、3.69倍和2.3倍。这意味着SATURN能够更全面地探索USB驱动程序的状态空间。SATURN在测试中发现了26个以前未知的漏洞,其中包括4个CVE。这些漏洞涉及主机和设备驱动程序的各个方面,证明了SATURN在漏洞检测方面的强大能力。SATURN在最新的Linux内核版本上进行了评估,显示出了卓越的性能。它不仅能够触发更多的驱动程序,还能够更有效地探索USB驱动程序的交互状态。这些成果表明,SATURN能够触发复杂的主机和设备之间的交互逻辑,并深入探索USB通信过程中的内核状态。

结论

本文主要亮点在于利用了 Linux 的 Gadget 机制,有意思的一点可能在于,Gadget 作为一个并不常用的机制,在上面发现的漏洞的可利用性是值得考虑的一个问题。

无论如何,这篇文章还是十分值得借鉴的。


原文始发于微信公众号(COMPASS Lab):SATURN: Host-Gadget Synergistic USB Driver Fuzzing

版权声明:admin 发表于 2024年11月12日 下午9:57。
转载请注明:SATURN: Host-Gadget Synergistic USB Driver Fuzzing | CTF导航

相关文章