WIFI适配器、USB集线器、触控板、笔记本电脑摄像头、网络接口卡中的未签名固件为恶意攻击者入侵笔记本电脑和服务器提供了多种途径。
在最新研究中,Eclypsium在来自Lenovo,Dell,HP和其他主要制造商的计算机中使用的WiFi适配器,USB集线器,触控板和相机中发现了未签名的固件。然后,我们展示了通过网络接口卡对服务器的成功攻击,该网络接口卡具有三大服务器制造商各自使用的未签名固件。当这些组件上的固件被感染时,恶意软件并不会被任何软件安全控制程序检测到。尽管以前有野蛮攻击,但外围制造商针对固件签名的动作一直很慢,因此数百万个Windows和Linux系统面临固件攻击的风险,这些固件可能遭遇数据泄露、操作破坏、勒索软件等问题。
未签名固件的问题
自从方程式组织(Equation Group)的 HDD植入被发现已经过去了五年,它使业界体会到固件黑客入侵的能力以及外围设备中未签名的固件所带来的潜在危险。尽管最近几年取得了一些进步,但我们的研究表明,许多行业仍对未签名固件的风险视而不见。在四项单独的新研究中,我们在各种企业设备的WiFi适配器,USB集线器,触控板和相机中都发现了未签名的固件。
不幸的是,这些问题可能会严重破坏设备的安全性和操作,并且往往很难修复。破坏诸如网卡,驱动器和其他外围设备之类的组件会导致设备完全禁用,或者使攻击者能够窃取数据,传输勒索软件,并且躲避安全管理。Eclypsium的这项新研究表明,这些弱点在笔记本电脑和服务器的各个组件中普遍存在,为恶意攻击提供了多种途径。
固件:多数组件的大脑
在安全性方面,大多数注意力都集中在系统的最可见组件上,例如操作系统和应用程序。然而,为了应对日益增长的威胁,许多组织已开始把固件的管理纳入其漏洞管理和威胁防御模型中。
在许多情况下,这些努力仅限于系统固件(位于设备主板上的UEFI或BIOS)。但是,实际上设备中的每个组件都有自己的固件和潜在的风险,包括网络适配器、显卡、USB设备、相机、触摸板、触控板等。您可以参考我们的在线“ 了解您自己的设备 ”资源(超链接:https://eclypsium.com/know-your-own-device/),以浏览当今设备中一些常用的支持固件的组件。
这些组件几乎都由固件控制。固件可以刻录到设备本身的集成电路中,或者组件有自己的闪存,用于存储固件。此外,固件还可以在启动时由操作系统动态提供。无论固件如何存储,它都可以像微型计算机一样操作,以控制该特定组件的低等级行为。正如我们将看到的那样,从笔记本电脑到服务器再到网络设备,此代码通常很容易受到攻击。
未签名固件的风险
问题在于,外围设备通常缺乏安全最佳实践,这在操作系统和其他更可见的组件(例如UEFI或BIOS)中是理所当然的存在的最佳实践。特别是,许多外围设备在运行代码之前不会验证固件是否已使用高质量的公钥/私钥正确签名。这意味着这些组件无法验证设备加载的固件是否可靠,是否值得信赖。攻击者可能只是插入恶意或易受攻击的固件映像,组件就会盲目地信任并运行该固件映像。
此外,正如我们之前的《Screwed Drivers》研究和最近的“陆上攻击”所表明的那样,可以使用易受攻击的驱动程序绕过保护,并使勒索软件不受干扰地进行攻击。许多组件无需特殊特权就可以更新,一种非常简单而强大的攻击方案出现了:
- 攻击者可以通过任何方法访问设备,例如通过电子邮件或恶意网站传递的恶意软件,或邪恶女仆攻击。在拥有基本的用户特权后,攻击者/恶意软件可以将恶意固件写入易受攻击的组件。
- 如果该组件不需要正确签名固件,则攻击者的代码将由该组件加载并运行。
- 然后,攻击者可以使用该组件的独特功能和特权来发起进一步攻击。
攻击者滥用固件的方式会因组件而异。例如,网络适配器上的恶意固件可能允许攻击者嗅探、复制、重定向或更改流量,从而导致数据丢失、中间人攻击和其他攻击。基于PCI的设备可以启用直接内存访问(DMA)攻击,可以轻松窃取数据或完全控制受害系统。摄像头可用于从用户环境中捕获数据,而受损的硬盘驱动器可使攻击者隐藏代码和工具,而不会被操作系统发现。然而,总结下来就是一个意思:如果某个组件不要求验证固件,则攻击者通常可以无需特殊特权即可轻松地控制该组件。
最新研究:外围设备中不安全固件的示例
1. 联想笔记本电脑中的触摸板和小红帽(TrackPoint)固件
Eclypsium的研究人员最近分析了联想ThinkPad X1 Carbon第六代笔记本电脑。当我们使用该特定设备进行分析时,我们觉得许多其他型号甚至其他供应商的产品也存在相同的问题。具体地说,联想将Synaptics用作其触摸板的ODM,使用这组件的其他制造商也可能同样容易受到攻击。
在设备内部,我们特别关注了以下固件:
- 触摸板固件:pr2812761-tm3288-011-0808.img
- 小红帽固件:PSG5E5_RANKA_fv06.bin
我们发现触摸板和小红帽使用了不安全的固件更新机制。具体来说,是在应用固件更新之前,不需要在设备级别进行加密签名验证。由于缺乏这方面的限制,攻击者可以通过软件修改固件映像,在这些组件中运行任意恶意代码。
联想表示,ODM在当前产品中没有解决此问题的机制。
2. 惠普笔记本电脑中的HP Wide Vision FHD相机固件
Eclypsium研究了惠普Spectre x360 Convertible 13-ap0xxx笔记本电脑中的HP Wide Vision FHD摄像机的固件更新。我们发现固件更新未加密,并且缺少真实性检查。攻击者可以使用惠普提供的更新工具对固件进行修改,以更改USB描述符。
HP Wide Vision FHD摄像机是SunplusIT生产的USB摄像机模块。惠普为其HP Spectre x360 Convertible 13-ap0xxx笔记本电脑上使用的相机提供了固件更新(sp93170.exe)。该固件更新程序包括SunplusIT的基于Windows的固件更新工具以及固件映像。
固件映像没有任何形式的加密签名或其他真实性信息。基于Windows的固件更新工具为了调整适应USB描述符内容,可以接受被修改过的固件文件。人们可以利用这种修改USB描述符的功能来禁用该设备或使该设备被识别为其他类型的USB设备。一旦处理器体系结构的其他详细信息被发掘,就可以使用USB HID设备(例如Rubber Ducky)将摄像头模块的行为更改为恶意软件。
我们确认了该漏洞的存在,方式是把使用过该工具更新的设备上的USB描述符修改掉。特别要注意的是,即使是普通用户,SunplusIT固件更新程序也可以成功更新设备。固件更新原本应该要求管理员访问权限。
惠普表示,他们正在更新固件,预计下一代相机的型号中会有认证的固件。
惠普已在HP Security Bulletin存档中发布了带有缓解措施的安全公告。
3. 戴尔XPS笔记本电脑上的WiFi适配器
Eclypsium的研究人员还展示了一项能力,他们在运行Windows 10的戴尔 XPS 15 9560笔记本电脑上修改了WiFi适配器固件。这个存在问题的适配器是Killer Wireless-n / a / ac1535。Windows10会检查确认驱动程序已正确签名,并且在设备管理器中查看时,驱动程序旁边会显示一个小证书图标,如下所示。
当我们修改WiFi适配器的固件映像时,就会看到该图标消失了。
如我们所见,证书图标不再显示。而且,尽管图标不见了,我们仍然能恶意修改固件,并且驱动程序仍然可以成功将其加载到设备中。
我们向高通和微软报告了这个问题。高通是为Killer Wireless网卡提供芯片组和驱动程序,而微软则负责检查这些驱动程序已签名。高通公司回应说,他们的芯片组从属于处理器,应该是运行在CPU上的软件来负责验证固件。他们表示,目前没有为这些芯片添加签名验证的计划。但是,微软回应说,应由设备供应商来验证加载到设备中的固件。
这就产生了一个有趣的问题:谁来负责确保驱动程序和固件是已签名的?特权攻击者可以轻松替换驱动程序文件并绕过所有假想检查,这就使得驱动程序看起来如此不堪一击。此外,就是设备和操作系统。在这两种可能中,责任仍然不明确,问题常常不会被完全解决。
4. USB集线器固件
作为未签名固件广泛使用的另一个例子,我们将目光转向Linux Vendor Firmware Service,这是一个允许硬件供应商上传固件更新的安全门户。通过此资源,我们可以更有针对性的关注更新协议,并轻松查看已签名和未签名的协议。我们发现,某些更新协议与传输有关,但还有许多是用于实际更新过程的。
例如,VLI USB集线器固件未签名。
固件攻击演示
接下来,让我们看一下未签名的固件是如何被滥用于真实攻击中的。控制外围组件的攻击者不仅可以将组件的功能用于恶意攻击,而且还可能获得新的特权,甚至可以控制整个系统。
在这个演示中,我们攻击了网络接口卡(NIC)芯片组中的未签名固件。对NIC的恶意攻击可能会对服务器产生很深的影响:远程破坏操作系统、提供远程后门、窥探和泄露原始网络流量、绕过操作系统防火墙来提取数据、提供勒索软件等。此类攻击会根据某信号断开服务器与网络的连接,从而破坏整个数据中心的连接。
众多研究人员强调了NIC中未签名固件的危险,例如Arrigo Triulzi的Project Maux演说,LoïcDuflot撰写的《您是否仍可以信任网卡》等。
我们所攻击的NIC中的Broadcom BCM5719芯片组目前用于多家制造商的服务器中,并且不会对主机上传的固件执行签名验证。目前有许多开源项目正致力于逆向工程和重新实现此NIC固件,例如
https://github.com/meklort/bcm5719-fw和https://github.com/hlandau/ortega,这些项目进一步降低了攻击门槛。
服务器的基板管理控制器(BMC)是用来进行设备带外管理的,大多数服务器都能将BMC配置成与主机系统共享NIC。在这种安排下,你的物理网络连接到外部设备时,就仿佛有两个不同的网络适配器,每个适配器都有自己的MAC地址。根据设计,主机软件(即使在内核级别)也看不到任何BMC通信。但是,如果将自己的固件加载到上述配置的NIC中,就能访问一般情况下无法单独从主机访问的流量。
用这种方法,我们可以检查BMC网络数据包的内容,将这些内容提供给主机上运行的恶意软件,甚至即时修改BMC流量。也可以用来阻止从BMC发送到中央日志记录服务器的警报,选择性地将它们重定向到其他服务器,将流量复制并发送到远程位置进行分析,以及直接用NIC将网络连接给到远程命令和控制的服务器上,而主机或BMC却不知道发生了什么事。
更糟糕的是,由于该卡已连接到PCI总线,攻击者可能会使用DMA攻击来完全控制服务器。如我们先前的研究,DMA攻击使潜在的攻击者可以绕开主CPU和OS,直接从受害系统读取和写入内存。通过覆盖内存,攻击者可以控制内核执行,以执行几乎任何形式的恶意活动。因此,攻击者可以利用网卡中的漏洞来完全控制整个服务器的内核。
固件安全问题涉及整个行业
外围设备中固件无签名是很广泛的问题,这涉及众多品牌及其ODM供应商。在披露了Equation Group的驱动器植入物之后,许多HDD和SSD供应商进行了更改,以确保其组件仅接受有认证的固件。但是,许多其他外围组件尚未效仿。而且鉴于组件供应商经常与各种设备供应商合作,单个易受攻击的组件就很容易出现在多个产品中。
同样重要的是,这些问题几乎适用于所有类别的Windows和Linux设备,从笔记本电脑到服务器。Apple会在每次将驱动程序包中的所有文件(包括固件)加载到设备之前,对其进行签名验证,以减轻这种攻击。相反,Windows和Linux仅在最初安装该软件包时才执行这种类型的验证。设备本身则需要在允许固件更新之前执行签名验证,而不是取决于操作系统来执行此任务。
不幸的是,未经签名的固件带来的问题解决起来并不容易。如果该组件并非旨在检查签名的固件,则通常无法通过固件更新进行修复。在许多情况下,设备或产品线中的根本问题完全无法解决,这意味着该产品线中的所有设备在其整个生命周期中都暴露在被攻击的危险中。
结论
外围设备中未签名的固件仍然是网络安全性的一个被忽视的方面。根据组件的功能,未签名的固件可能会导致数据丢失、完整性被破坏、隐私被暴露,并使攻击者能够获得特权并躲避传统的安全控制。鉴于未签名固件使用的广泛性,企业应扫描其设备中是否有易受攻击的组件,并应在采购过程中评估新设备的固件状态。