被高度忽视的攻击面——联想,惠普,戴尔外围设备面临未修补的固件漏洞
2020-02-20 11:23:08 Author: www.4hou.com(查看原文) 阅读量:220 收藏

lenovo-x1-e1581962058515.jpg

固件更新过程中由于缺乏适当的代码签名验证和身份验证,就为信息公开、远程代码执行、拒绝服务等攻击打开了大门。

根据Eclypsium的研究,Wi-Fi适配器,USB集线器,触控板和相机中出现的最新固件漏洞使数百万外围设备面临一系列网络攻击的危险。

以下是Eclipsium研究人员发现的不安全的外围设备:

1.Lenovo ThinkPad X1 Carbon 6th Gen笔记本电脑中的触摸板和TrackPoint固件:固件更新,没有加密签名检查。

2.HP Spectre x360 Convertible 13-ap0xxx笔记本电脑中的HP Wide Vision FHD摄像机固件:未经身份验证的未加密固件更新。

3.戴尔XPS 15 9560笔记本电脑上的WiFi适配器:尽管进行了Windows 10签名检查,但修改后的固件仍可成功加载。

4. USB集线器固件:适用于Linux的VLI USB集线器固件未签名。

高级分析师凯蒂·泰特勒(Katie Teitler)说:

软件和网络漏洞通常是组织安全的重中之重,但固件漏洞可能使对手完全控制受感染的设备。这可能导致植入后门,嗅探网络流量,泄露数据等等。但是,不幸的是,固件漏洞可能更难检测且更难以修补。最佳防护方法就是在组件级别部署自动扫描漏洞和漏洞配置的方法,并持续监视新问题或漏洞。

未签名的固件更新正在成为一个日益严重的安全问题

外围设备的固件可以被刻录到设备本身的集成电路中,或者组件可以具有自己的闪存,用于存储固件。固件也可以在引导时由操作系统动态提供,无论采用哪种实现方式,固件都是作为特定于设备的外围设备操作系统使用的,并且如果发现容易受到攻击,则可以为攻击者提供丰富的攻击面。

Eclypsium的研究人员在周二发布的漏洞研究报告中解释说:

在运行代码之前,许多外围设备无法验证固件是否已使用高质量的公钥/私钥正确签名。这意味着这些组件无法验证设备加载的固件是否可靠,并且值得信赖。攻击者只需插入恶意或易受攻击的固件映像,组件就会盲目地信任并运行该映像。

这意味着,攻击的场景很简单。首先,攻击者可以通过任何方法来访问设备,包括物理访问,允许远程执行代码的恶意软件等。另外,使用基本的用户特权,攻击者可以将恶意固件写入易受攻击的组件。如果该组件不需要正确签名固件,则将加载攻击者的代码。根据所涉及的外围设备,这可能导致一系列恶意活动。例如,网络适配器上的恶意固件可能使攻击者嗅探、复制、重定向或更改流量,从而导致数据丢失、中间人攻击和其他攻击。基于PCI的设备可以实现直接内存访问(DMA)攻击,可以轻松窃取数据或完全控制受害系统。摄像头可以用来从用户环境中捕获数据,而受攻击的硬盘驱动器可以使攻击者隐藏代码和工具而不会被操作系统看到。

此外,固件攻击允许恶意活动在端点保护的范围内进行。正如最近在使用RobbinHood勒索软件的最新活动中看到的那样,可以使用易受攻击的驱动程序绕过安全保护,并使勒索软件在不被发现的情况下进行攻击。

首席研究员杰西·迈克尔(Jesse Michael)认为,这些漏洞引起的攻击种类并不重要。例如,在乌克兰摧毁了部分电网的Black Energy攻击使用了未签名的固件更新来破坏用于控制继电器的串行到以太网适配器。与三年前相比,基于固件的攻击使固件/硬件CVE增长了7.5倍。

攻击方式

攻击者可以通过几种方式利用未经签名的固件,具体取决于他们通过滥用此漏洞而设法破坏的组件。

对于网络适配器,它们可以捕获或更改网络流量,而PCI设备可以使它们窃取信息,甚至可以通过直接内存访问(DMA)攻击来接管系统。

另一方面,通过完全控制目标的摄像头,攻击者可以从周围环境捕获视频和音频内容,同时滥用与计算机相连的硬盘驱动器的固件,从而有可能丢弃恶意工具并运行恶意代码,将完全摆脱操作系统的安全检查。

总之,如果一个组件不需要签名的固件,攻击者通常可以轻松获得对该组件的控制权,而无需特殊的特权。

拦截BMC流量

如果主机上的软件并不专用于服务器的基板管理控制器(BMC)流量,而攻击者能够将自己修改的固件“加载到系统中的NIC中,在该系统中,BMC配置为与以下设备共享NIC。

这样一来,攻击者就可以分析MC网络数据包的内容,恶意软件可以利用此功能进行间谍目的或实时更改BMC流量。另外,这还可以用于阻止从BMC发送到中央日志记录服务器的警报,选择性地将它们重定向到其他服务器,将流量复制并发送到远程位置进行分析,以及与远程命令建立出站网络连接,直接从NIC本身控制服务器,而主机或BMC却不知道这一切正在发生。

另外,由于NIC是基于PCI的设备,攻击者可能发起DMA攻击,使他们能够绕过主CPU和OS直接访问系统内存,从而窃取信息,甚至完全控制受到感染的服务器。

漏洞分析

极乐世界的研究人员分析了联想ThinkPad X1 Carbon 6th Gen笔记本电脑,该笔记本电脑包含两个易受攻击的固件机制:触摸板固件(pr2812761-tm3288-011-0808.img)和TrackPoint固件(PSG5E5_RANKA_fv06.bin)。

研究人员发现Touchpad和TrackPoint使用不安全的固件更新机制。特别是在应用固件更新之前,不需要在设备级别进行加密签名验证。由于缺乏控制,因此可以通过软件修改固件映像,以在这些组件中运行任意恶意代码。

同时,Eclypsium指出,由HP为HP Spectre x360 Convertible 13-ap0xxx笔记本电脑中的HP Wide Vision FHD摄像机传播的固件更新未加密,并且缺乏真实性检查。设备的固件更新程序由SunplusIT的基于Windows的固件更新工具以及固件映像组成,两者均存在问题。

研究报告还说:

固件映像不包括任何形式的密码签名或其他真实性信息,基于Windows的固件更新工具接受经过修改以调整USB描述符内容的固件文件。可以利用这种修改USB描述符的功能来禁用该设备或使该设备被识别为其他类型的USB设备。一旦发现处理器架构的其他详细信息,相机模块的行为就可以更改为恶意软件。

此外,SunplusIT固件更新程序甚至可以以普通用户的身份成功更新设备,而不需要管理员访问权限,这显然突破了安全防御的最基本的底线。

研究人员还发现,运行Windows 10的Dell XPS 15 9560笔记本电脑上的Wi-Fi适配器固件存在漏洞。 Windows 10确认驱动程序已正确签名后,安全检查就会停止。因此,如果驱动程序已正确签名,则在设备管理器中查看时,驱动程序旁边会显示一个小证书图标。如果未正确签名,则用户仍然可以成功加载它们,不过不显示图标而已,这意味着特权攻击者可以轻松替换驱动程序文件。

最后,研究人员还研究了Linux供应商固件服务,这是一个允许硬件供应商上传固件更新的安全门户,分析显示有多个不安全的更新和驱动程序。

通过该资源,研究人员可以专注于更新协议,并轻松查看已签名和未签名的协议。虽然研究人员可以看到某些更新协议与传输相关,但还有许多其他协议是用于实际更新过程的协议。例如,VLI USB集线器固件未签名。”

供应商的回应

Eclypsium研究人员于8月4日通知了HP网络摄像头固件漏洞,并于6月13日通知了Lenovo Lenovo的TouchPad / TrackPoint漏洞。

Eclypsium的首席研究员Jesse Michael表示:

我们希望一些供应商能够发行CVE,但到目前为止还没有。对于这些外围设备,OEM(惠普和联想)必须与供应商合作以开发修补程序。从我们看到的情况来看,大多数这些现有组件最初都设计为具有未签名的固件,从而使其固有地易受攻击。我们与这些OEM的互动使我们期望未来的系统将内置固件更新认证要求。

Eclypsium还向提供无线卡芯片组和驱动程序的高通公司以及向Microsoft检查此驱动程序是否签名的Microsoft报告了Wi-Fi问题。

高通公司回应说,他们的芯片组从属于处理器,并且运行在CPU上的软件应负责验证固件。目前还没有计划为这些芯片添加签名验证。但是,Microsoft回应说,由设备供应商来验证加载到设备中的固件。这意味着,这个漏洞很可能无法解决,因为每个人都将责任推来推去。

除此之外,联想也表示ODM没有在当前一代产品中修复此问题的机制,而惠普表示他们正在开发固件更新,而下一代相机将在未来的型号中签署固件。

对于戴尔XPS笔记本电脑,没有明确表示是谁负责确保驱动程序和固件的正确签。

目前,外围设备中未签名的固件仍然是网络安全性中一个被高度忽视的攻击方面,它为恶意攻击者提供了多种途径来危害笔记本电脑和服务器。

一旦这些组件中的任何固件被感染,该恶意软件就不会被任何软件安全控制程序检测到。根据以前出现的野外攻击,但外围制造商对固件签名的安全反应一直很慢,使数百万个Windows和Linux系统面临固件攻击的风险,这些固件攻击可能会泄露数据,破坏操作并提供勒索软件。

本文翻译自:https://threatpost.com/lenovo-hp-dell-peripherals-unpatched-firmware/152936/?utm_source=dlvr.it&utm_medium=twitter如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/4YB7
如有侵权请联系:admin#unsafe.sh