黑客可以利用刚刚修复的英特尔漏洞在PC上安装恶意固件

2020-11-14 20:58:25

随着存储在计算机上的敏感数据的数量在过去十年里呈爆炸式增长,硬件和软件制造商投入了越来越多的资源,以确保设备在丢失、被盗或被没收的情况下不会受到物理攻击。本周早些时候,英特尔修复了一系列漏洞,使攻击者有可能在数百万使用其CPU的电脑上安装恶意固件。

这些漏洞使得拥有物理访问权限的黑客可以推翻英特尔内置到现代CPU中的保护,该保护可以防止未经授权的固件在引导过程中运行。这一措施被称为Boot Guard,旨在将信任链直接锚定在硅片上,以确保加载的所有固件都由计算机制造商数字签名。Boot Guard可以防止有人篡改存储UEFI的SPI连接的闪存芯片,UEFI是一个连接PC设备固件和操作系统的复杂固件。

当攻击者将硬件连接到电脑内部,并使用Dediprog或类似的芯片编程工具将授权固件替换为恶意固件时,通常会发生此类黑客攻击。

UEFI BIOS代码的执行通常不受底层硬件的限制,这意味着此UEFI BIOS代码无需验证或测量即可运行。因此,这使得整个引导过程容易受到BIOS颠覆的攻击,无论是通过无保护的更新过程,还是使用SPI闪存更换或使用Dediprog的简单硬件攻击。

英特尔Boot Guard为平台制造商和平台所有者提供强大的硬件强制引导策略控制,以授权允许哪些BIOS代码在该平台上运行。英特尔Boot Guard为平台启动验证提供基于硬件的信任根(ROT),负责在BIOS执行之前验证BIOS镜像。英特尔Boot Guard提高了平台的安全门槛,降低了上述攻击向量,使发起攻击破坏引导过程变得更加困难。

今年早些时候,安全研究员特拉梅尔·哈德森(Trammell Hudson)发现了三个漏洞,当电脑退出睡眠模式时,这些漏洞会阻止Boot Guard工作。这种模式在技术上被称为S3,它保留了存储在计算机内存中的所有项目,但完全关闭了CPU。

能够在唤醒期间绕过Boot Guard的攻击者将能够执行大量恶意活动。其中最主要的是获得用于加密硬盘的密钥,只要这些密钥存储在内存中,就像许多电脑在睡眠时一样。这样,攻击者就可以在不需要用户密码的情况下获得存储在计算机上的所有数据的解密版本。

攻击者还可以用Rootkit感染机器-很难或不可能检测到的恶意代码-它将在系统管理模式下运行,直到下一次重新启动。据报道,美国国家安全局就有这样的SMM植入物。

虽然这些类型的攻击是严重的,但攻击场景是有限的,因为黑客攻击不能远程进行。对于许多人来说,需要物理访问的攻击不是他们威胁模型的一部分。它还需要硬件和固件专业知识以及特殊工具,如Dediprog或Spispy,这是哈德森开发的开源Flash仿真器。在本周发表的一篇文章中,哈德森写道:

因为CVE-2020-8705需要物理访问,所以攻击者使用它比远程攻击更难。然而,在一些现实的攻击场景中可以使用它。

一个例子是在机场通关时。大多数旅行者在降落时关闭笔记本电脑,让其进入S3睡眠状态。如果设备在着陆时被敌方机构拿走,磁盘加密密钥仍在内存中。敌手可以取下底盖,在闪存芯片上安装一个类似Spispy的系统内闪存仿真器。他们可以唤醒机器,并通过Spispy为其提供固件。该固件可以扫描内存来定位操作系统锁屏进程并将其禁用,然后允许系统正常恢复。现在,他们可以访问解锁的设备及其秘密,而不需要强迫所有者提供密码。

此时,对手也可以安装他们自己的SMM-2;Ring-34;Rootkit,该Rootkit将一直保留到下一次硬重启。当系统移动到受信任的网络时,这可以为他们提供系统上的代码执行,从而潜在地允许水平移动。

另一个例子是模拟SPI闪存的硬件植入物。SPISPY的一个变种中使用的iCE40up5k[一个小型现场可编程门阵列板]可以很容易地安装在SOIC-8封装的内部或下方,从而允许对恢复路径的持续攻击。由于FPGA可以很容易地区分冷启动和从睡眠中恢复的系统的验证,因此当固件被闪存之类的工具验证或读取时,该设备可以提供具有正确签名的干净版本,并且仅在从睡眠恢复期间提供修改的版本。这种植入物很难通过软件检测出来,如果处理得当,在主板上也不会显得格格不入。

Boot Guard漏洞之一源于配置设置,制造商通过一种称为一次性可编程熔丝的过程烧录到CPU中。OEM应该可以选择将芯片配置为在计算机退出S3时运行Boot Guard或不运行Boot Guard。哈德森不确定为什么他测试的五家制造商都关闭了它,但他怀疑这是因为这样机器恢复得更快。

在一封电子邮件中,英特尔的一位女发言人写道:“英特尔收到了影响英特尔Boot Guard的漏洞的通知,在该漏洞中,物理攻击在从休眠状态恢复时可能能够绕过英特尔Boot Guard身份验证。”英特尔发布了减刑措施,并建议保持对设备的实际拥有。

英特尔没有说明它是如何修复一个由无法重置的保险丝设置引起的漏洞的。哈德森怀疑英特尔是使用在英特尔管理引擎中运行的固件做出这一改变的,英特尔管理引擎是CPU芯片组内的安全和管理协处理器,负责访问OTP熔丝等。(本周早些时候,英特尔在这里公布了此前从未披露过的关于ME的细节。)

另外两个漏洞源于CPU通电时获取固件的方式存在缺陷。所有这三个漏洞都以单一跟踪ID CVE-2020-8705编入索引,该ID获得了英特尔的高严重性评级。(英特尔在此处概述了11月份的所有安全补丁。电脑制造商本周开始提供更新。哈德森的帖子,上面的链接,有一个更加详细和技术性的文章。