Apple电脑Intel芯片组制造模式未关闭导致Ring3任意代码执行漏洞分析(CVE-2018-4251) - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

Apple电脑Intel芯片组制造模式未关闭导致Ring3任意代码执行漏洞分析(CVE-2018-4251)

41yf1sh 漏洞 2018-10-11 10:33:56
326662
收藏

导语:在本文中,我们将详细说明一个未记录的(Undocumented)命令是如何做到覆盖SPI闪存从而实现ME漏洞本地利用的(INTEL-SA-00086)。

概述

“隐匿式安全”(Security Through Obscurity)是指通过隐藏特定内容、让外部人员无法知晓系统的设计原理,这种方式的缺点是显而易见的。然而,一些硬件制造商却以“保护知识产权”为前提,要求必须是签署过保密协议(NDA)的人员才能阅读技术文档。这样的策略,对于普通用户和硬件制造商来说,无疑是双输的。

其中的一个例子是Intel Management Engine(Intel ME),包括其服务器(Intel SPS)和移动(Intel TXE)版本。

如果想要了解更多Intel ME的背景知识,请点击参考

在本文中,我们将详细说明一个未记录的(Undocumented)命令是如何做到覆盖SPI闪存从而实现ME漏洞本地利用的(INTEL-SA-00086)。这一漏洞的根源就在于未记录的Intel ME模式,特别是制造模式(Manufacturing Mode)。

关于制造模式

Intel ME制造模式是用于在生产期间对终端平台进行配置和测试,因此,这一模式本应在销售给用户之前禁用(关闭)。但是,这一模式及其潜在风险并没有在Intel的公共文档中进行任何描述。由于相关实用程序(Intel ME系统工具的一部分)无法正式使用,所以普通用户无法禁用此模式。一旦由于某种原因启用了此模式,那么此时没有方法能够通知用户或保护用户。甚至,作为专门用于识别UEFI固件级别芯片组和CPU中配置错误(例如SPI闪存区域访问权限的错误配置)的实用程序Chipsec,都对Intel的制造模式一无所知。

制造模式允许对存储在一次性可编程存储器(FUSE)的关键平台设置进行配置。其中包括BootGuard的设置(ACM和UEFI模块中数字签名密钥的模式、策略和哈希值)。其中还有一些被称为FPF(Field Programmable Fuses,现场可编程熔断器)。要查看可以写入FUSE的FPF列表,我们可以使用Intel ME System Tools中的FPT(Flash Programming Tool,闪存编程工具)实用程序。

1.png

FPF仅占FUSE阵列的一部分,大多数FPF都用于存储平台的参数。其中一部分被称为IP FUSE,用于存储IP(Intelligent Property,硬件逻辑块)单元的设置。因此,DFx Aggregator在 

除了FPF外,在制造模式下,硬件制造商可以对Intel ME的设置进行调整,这些设置存储在SPI闪存上Intel ME内部文件系统(MFS)中。可以通过重新编程SPI闪存,来实现对这些参数的更改。这些参数被称为CVAR(可配置的NVAR,命名变量)。

Intel ME中的mca_server模块用于对CVAR进行设置。MCA是“生产线配置架构(Manufacture-Line Configuration Architecture)”的缩写,是生产过程中配置平台过程的通用名称。与FPF一样,CVAR可以通过FPT进行设置和读取。

2.png

CVAR列表具体取决于Intel ME的平台和版本。对于支持Intel AMT的芯片组,其中一个CVAR是进入MEBx(ME BIOS Extension)的密码。

如果要对FPF或CVAR进行设置,Intel ME必须要处于制造模式。分配FPF的过程包括两个步骤:设置FPF的值(保存到临时存储中),以及将FPF值提交给FUSE。第一步只能在制造模式下实现。但如果在该模式下,制造商设置了FPF值,并且此前从没有内容写入到FUSE数组的响应范围,那么实际的“烧录”(Burn)将会在制造模式关闭后自动发生。这也就是说,如果系统处于制造模式,就意味着FPF可能从未被初始化。

制造模式关闭的标志存储在MFS上的文件/home/mca/eom中。当SPI闪存被基本文件系统的固件覆盖时,平台可以再次在制造模式下运行,尽管这时已经无法覆盖FUSE。

OEM公钥

基于上述原因,配置Intel平台的过程非常复杂,其中包括了多个步骤。一旦硬件制造商在此过程中出现任何失误,都会使整个平台面临严重风险。就算是制造模式已经关闭,也可能会发生制造商没有设置FPF的情况,从而导致攻击者可以用自己编写的值来替代用于签署BootGuard(ACM)和UEFI模块启动代码的密钥。在这种情况下,平台就仅会加载攻击者的恶意代码,并且会持续加载。由于攻击者的密钥被写入持久性内存,永远不会被删除,所以这将导致产生不可修复的硬件漏洞。有关此攻击的详细信息,建议参阅Alexander Ermolov的文章 。

在较新的系统(Apollo Lake、Gemini Lake、Cannon Point)上,FPF不仅存储BootGuard的密钥,还会存储OEM的公钥(严格意义来说,是RSA加密方式的OEM公钥的SHA256哈希值),而后者支持多种ME安全机制。例如,SPI闪存中的SMIP(Signed Master Image Profile)负责存储制造商指定的PCH硬件配置(PCH Straps)。这一部分需要使用密钥进行签名,而该密钥的SHA256哈希值存储在SPI闪存上的特殊文件(分区)中。其文件名是FTPR分区中的oem.key(针对Cannon Point PCH,是在OEMP分区中的OEMP.man),其中包含各种OEM提供的用于对各种数据进行签名的公钥。在下图中,我们可以看到经过制造商签名的数据集的完整列表,每个数据集都有一个Cannon Point平台的唯一密钥:

3.png

oem.key文件本身使用OEM根密钥签名,其公钥的哈希值写在FPF中。

4.png

因此,一旦攻击者破坏了OEM根密钥,那么他可能会破坏上述所提到的所有数据,这比旧平台上攻陷Boot Guard的情况要更为严重。

在写入ME区域时绕过块

在近期以前(Intel Apollo Lake版本之前),Intel ME都位于一个独立的SPI区域,该区域具有CPU、GBE和ME的独立访问权限。因此,只要正确配置了访问属性,就无法从CPU(主系统)端读取或写入到ME。但是,在当前版本中,用于Intel芯片组的SPI控制器具有一个称为Master Grant的特殊机制。这一机制会为每个SPI主控制器分配一个严格定义的SPI闪存区域。无论SPI描述符中记录的访问权限是什么样的,主控制器都能够控制其特定的区域。每个主设备都可以定义任何其他主设备访问(读取或写入)其特定区域的权限(但仅能定义分配给自己的这部分区域)。

5.png

这意味着,即使SPI描述符禁止了主机访问ME的SPI区域,ME也仍然可以提供访问的权限。我们认为,这一更改可能会产生绕过标准流程更新Intel ME的风险。

主ME区域闪存保护覆盖

Intel ME中实现了一个特殊的HECI命令,允许在CPU端打开对ME SPI区域的写访问。该命令称为HMR FPO(主ME区域闪存保护覆盖)。在之前,我们详细说明了这个命令。

收到HMR FPO命令后,Intel ME仅在重置后才会启用对该区域的访问权限。Intel ME自身还具有安全措施:只有当UEFI BIOS是平台启动过程的所有者时,才会在EOP之前接受该命令。EOP是一种不同的HECI命令,它在将控制权交给操作系统(ExitBootServices)之前,将UEFI发送给ME。有时,BIOS Setup包含在EOP之前发送HMRFPO命令的选项。

6.png

收到EOP后,Intel ME会忽略HMR FPO,并返回相应的错误状态。但这只会在制造模式关闭后才会发生。在制造模式下,无论是否存在EOP,Intel ME都会随时接受HMR FPO。所以,如果制造商没有关闭制造模式,攻击者就随时可以更改Intel ME。当然,要更改Intel ME,还需要管理员权限,但即使是OS内核在最初也无法重新刷新Intel ME。在这一阶段,攻击者可以重新刷新ME映像,利用例如INTEL-SA-00086的漏洞。然后,通过重启来运行修改后的固件。这一过程在除Apple MacBook之外的绝大多数平台上都能够成功实现。而Apple的计算机上包含UEFI中的额外检查,将在UEFI启动时运行,如果已经使用HMRFPO打开了ME区域,那么该机制将会阻止系统的启动。但是,正如我们所展示的那样,如果Intel ME处于制造模式,就能够轻松绕过这一机制。

在不重置主CPU的前提下重置ME

如今的计算机,可以通过几种不同的方式重新启动。根据文档上的记载,有全局复位和仅重置主CPU(不重置ME)这两种方法。但是,如果有一种方法可以在不重置主CPU(通过预先运行HMRFPO命令)的情况下重置ME,那么就可以成功访问该区域,并且保证主系统的继续运行。

7.png

在经过对内部ME模块的仔细研究后,我们发现有一个HECI命令“80 06 00 07 00 00 0b 00 00 00 03 00”(关于更多命令,请点击参考)能够仅对Intel ME进行复位。在制造模式下,即使是在EOP之后,也可以随时发送此命令:

8.png

因此,攻击者在发送这两个HECI命令之后,就可以打开ME区域,并在其中写入任何数据。这一过程不再需要对平台整体进行重置。并且,此时SPI描述符中的内容已经被忽略,因为如果系统在制造模式下运行,SPI区域的正确设置保护属性将无法再保护ME不被修改。

漏洞利用案例:CVE-2018-4251

我们分析了多个制造商的平台,包括联想和Apple的笔记本电脑,发现在Yoga和ThinkPad计算机中没有出现任何与制造模式相关的问题。但是,我们发现使用了Intel芯片组的Apple笔记本电脑正在制造模式下运行。在向Apple报告了这一问题之后,该漏洞(CVE-2018-4251)在macOS High Sierra的10.13.5更新中实现了修复。

INTEL-SA-00086的本地利用

通过对CVE-2018-4251进行漏洞利用,攻击者可以将旧版本的Intel ME(例如包含INTEL-SA-00086的版本)写入内存,而无需SPI编程器,也无需访问HAD_SDO网桥。简而言之,这一过程不需要再物理访问到电脑。因此,就可以利用本地的攻击向量来实现漏洞利用,从而使得能够在ME中运行任意代码。

值得注意的是,在INTEL-SA-00086安全公告中,Intel没有提到启用制造模式进行本地利用的这种漏洞利用方式。相反,该公司错误的生成,只有在SPI区域的访问设置配置错误时才可能进行本地利用。因此,为了保护用户的安全,我们决定公开检查制造模式状态的方法,并公布禁用制造模式的方法。

防护方法

Intel系统工具中包括一个MEInfo(以及分别用于移动和服务器平台的TXEInfo和SPSInfo),通过这一工具可以获得有关ME当前状态和整体平台状态的全面诊断信息。我们在之前的研究中,证明了这个实用程序能够检查未记录的HAP模式(High Assurance Platform),同时能够禁用ME。当使用-FWSTS标志对其进行调用时,该实用程序会显示HECI寄存器的详细描述和制造模式的当前状态。当FWSTS状态寄存器中的第四位为1时,证明制造模式启用。

9.png

此外,我们还开发了一个程序,用于检查制造模式的状态,以便提供给无法使用Intel ME系统工具的用户。以下是该脚本在开启了制造模式的系统上运行后的显示结果:

10.png

接下来的一个问题就是,如果制造商没有关闭制造模式,那么用户如何自行关闭呢?

要禁用制造模式,可以使用FPT中的一个特殊选项(-CLOSEMNF)。此外,这一选项还允许为描述符中的SPI闪存区域设置推荐的访问权限。

下图为输入-CLOSEMNF后的显示内容:

11.png

在这里,我们使用-CLOSEMN的NO参数来避免平台的重启,否则在关闭制造模式后,平台将会立即重启。

总结

我们的研究表明,Intel ME存在制造模式未关闭的漏洞,即使是像Apple这样的大型厂商也没能避免受到Intel平台错误配置漏洞的影响。更糟糕的是,由于没有关于这一模式的官方文档记录,直接导致最终用户不知道自身可能遭受数据被盗、永久性Rootkit,甚至是设备变砖的风险。

我们还怀疑,由于BIOS/UEFI和ME的状态没有及时同步,在不重置主CPU的情况下对ME进行重置,还可能会导致其他的安全问题。

参考文章

[1] https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00086.html

[2] https://github.com/chipsec/chipsec

[3] https://www.coreboot.org/

[4] https://github.com/ptresearch/me-disablement/blob/master/How%20to%20become%20the%20sole%20owner%20of%20your%20PC.pdf

[5] http://blog.ptsecurity.com/2017/08/disabling-intel-me.html

[6] https://github.com/ptresearch/mmdetect

[7] https://2016.zeronights.ru/wp-content/uploads/2017/03/Intel-BootGuard.pdf%22

[8] https://www.blackhat.com/docs/eu-17/materials/eu-17-Sklyarov-Intel-ME-Flash-File-System-Explained.pdf

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务