国内最专业的IT技术学习网

办公软件

当前位置:主页 > 办公软件 >

银河网上开户:现有USB模糊测试技术的总结

发布时间:2019/09/06标签:   测试      模糊      USB    点击量:

原标题:银河网上开户:现有USB模糊测试技术的总结

Syzkaller(Google团队开发的一款针对Linux内核进行模糊测试的开源工具),最近开始支持USB模糊测试,并且已经在Linux内核中发现了80多个漏洞。目前,鉴于USB本身的复杂性导致的安全性的影响和潜在的大量漏洞,几乎所有模糊测试专家都开始将他们的模糊测试技术应用于USB的模糊测试中。

银河网上开户:现有USB模糊测试技术的总结

什么是USB协议栈?

按着协议,USB分为USB host(USB主机) 和 USB device/gadget(USB从机),USB主机能够主动发起会话而USB从机则不能发起会话。HOST是主机,好比电脑端那个USB,简而言之,主机好比电脑端那个USB接口,从机好比就是连接到USB接口的U盘。当我们谈论USB时,通常说的是USB主机,例如带有标准USB端口的笔记本电脑。下图是Linux USB主机栈。从下到上,分为硬件、内核空间和用户空间。

USB主机控制器设备(又名HCD)是连接到系统PCI总线的PCI设备,通过USB端口提供USB连接支持。根据USB技术的发展,它也被称为USB 1.x的UHCI / OHCI,USB 2.x的EHCI和USB 3.x控制器的XHCI。要使内核使用此控制器,我们需要一个USB主机控制器驱动程序,它可以设置PCI配置和DMA。上面是USB内核,实现底层USB协议栈,银河官网,并使用通用内核API(submit /recv URB)抽象发送/接收USB数据包的方式。上面是不同的USB从机驱动程序,例如USB HID驱动程序和USB大容量存储驱动程序。这些驱动程序会实现不同的USB类协议(例如,HID,大容量存储),为内核中的其他子系统(例如输入和数据块)提供粘合层,方便用户空间(例如创建/dev节点)。

由于Linux也广泛用于嵌入式系统,例如一些USB软件保护器(USB Dongle),USB从机指的是Linux内的USB软件保护器硬件和USB模式。 USB从机与USB主机模式完全不同。下图显示了Linux内核中的USB从机协议栈。

银河网上开户:现有USB模糊测试技术的总结

底部是USB从机控制器(又名UDC),与HCD一样,UDC也在PHY层内实现特定版本的USB标准。但是,与英特尔最常用的HCD不同,UDC IP来自不同的硬件供应商,例如DWC2/3,OMAP,TUSB和FUSB。这些控制器通常具有其自己的设计规范,并且当它们支持USB On-The-Go(又名OTG)模式时也可遵循HCD规范(例如XHCI规范)。 OTG允许UDC在USB主机和USB从机模式之间切换。例如,当Android设备以MTP的形式与笔记本连接时,Android USB从机控制器处于USB从机模式。如果USB闪存驱动程序插入Android设备,UDC将在USB主机模式下工作。支持OTG的UDC也被USB 3.x标准中的双角色设备(Dual-Role Device,DRD)控制器取代。因此,不需要OTG数据线来切换UDC的角色,因为角色切换是在DRD控制器的软件中完成的。

要使用UDC,你需要在内核中使用UDC驱动程序,通过行业标准总线((包括 AMBA? AHB和AXI接口))提供连接和配置,并为更高层设置DMA。与USB主机协议栈中的USB内核一样,USB从机协议栈中的USB从机内核也提供API,通过回调和配置来注册和实现USB从机函数。例如,我们可以通过请求现有的大容量存储函数(f_mass_storage)将USB描述符传递到USB从机内核并实现典型的USB大容量存储设备。对于诸如MTP的更复杂的协议,用户空间守护进程或库提供协议逻辑并通过例如configfs或usbfs与从机函数通信。

USB主机控制器(Host Controller)

USB的拓扑结构决定了主机控制器就是最高统帅,没有主机控制器的要求,从机永远不能主动发数据。所以主机控制器在USB的世界里扮演着重要的角色,它是幕后操纵者。

比如说USB主机发送Setup数据包获取设备描述符是怎么发出去的?这个过程包含很多信息,比如:如何在D+和D-这两根线上传过去的、又传过来的。 这一切的工作都是主机控制器给我们做的,USB主机控制器的规范有很多种,比如UHCI/OHCI。

什么是USB controller?

USB 设备和主机的接口就是host controller,一个主机可以支持多个host controller,比如分别属于不同厂商的。那么USB host controller 本身是做什么的? 很简单用于控制,控制所有的USB从机的通信。 CPU把要做的事情分配给主机控制器,然后自己想干什么就干什么去,主机控制器替他去完成剩下的事情,事情办完了再通知CPU。否则让CPU去盯着每一个从机做每一件事情,那是不现实的。

控制器的主要工作是什么? 把数扔出去,银河官网,把数拿回来。绝对不应该偷偷加工数据。

主机控制器控制总线上包的传输, 使用1ms或125us的帧。在每帧的开始时,主机控制器产生一个帧开始包(SOF: Start of Frame)。

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号