绕过验证安装底层后门:英特尔固件启动验证绕过新方法

作者:nana, 星期二, 五月 14, 2019
来源:https://www.aqniu.com/news-views/48078.html

将电脑串行外设接口(SPI)闪存芯片替换成内含恶意代码的,攻击者就能获得完全且持续的访问权。

研究人员发现绕过英特尔系统启动验证过程的新方法,但该技术也能影响到其他平台,可用于隐秘且持续地侵害计算机系统。

本周在荷兰阿姆斯特丹举行的 Hack in the Box 大会上,研究员 Peter Bosch 和 Trammell Hudson 演示了针对英特尔统一可扩展固件接口(UEFI) Boot Guard 功能的“检查时间与使用时间”(TOCTOU)漏洞攻击。(TOCTOU:*time of check* and the *time of use*,代码先检查某个前置条件(例如认证),然后基于这个前置条件进行某项操作,但是在检查和操作的时间间隔内条件却可能被改变,如果代码的操作与安全相关,就很可能产生漏洞。)

Boot Guard 是英特尔第4代Core微架构(Haswell)中引入的一种技术,旨在提供底层固件(UEFI)防护保障,使其免于被恶意篡改。

计算机每次启动时,Boot Guard 会检查被加载的固件模块是否经过属于英特尔或PC制造商的可信密钥数字签名。

发现该验证绕过新方法的研究人员之一Bosch是荷兰莱顿大学计算机科学系学生,同时也是一名独立研究员。他在尝试往自己的笔记本电脑上应用Coreboot开源固件时发现了 Boot Guard 验证过程的异常。

具体来说,他发现系统在验证完固件并在缓存中创建了经验证的副本后,又去存储UEFI代码的串行外设接口(SPI)存储芯片原始副本中再次读取模块。

这种行为可不怎么正确,因为系统应该只依赖经过了加密检查的经验证副本。由此,Bosch认为,在固件代码通过了验证而尚未被从SPI存储中再次读取的时间间隙里,攻击者有机会篡改其代码。

Bosch将自己的发现及初步概念验证实现发给了著名硬件及固件研究员 Trammell Hudson。后者曾研究出针对苹果Thunderbolt技术的Thunderstrike攻击。

Hudson证实了Bosch的发现,并与之协作研究出了该绕过固件启动验证的方法。他们将编程设备接入SPI闪存芯片,在CPU尝试从SPI芯片而非经验证副本再次读取固件模块时响应以恶意代码。

其结果就是恶意未签名代码得以成功执行,Boot Guard 完全没有发挥既定功用。

虽然该攻击要求打开笔记本电脑以往芯片上夹上连接器,但有多种方法可以让攻击成为永久性的,比如直接将SPI芯片换成模拟UEFI的同时注入恶意代码的流氓SPI。

事实上,Hudson已经设计出加点塑料涂层就能从视觉上蒙混过关的模拟器芯片了,其尺寸与真正的SPI闪存芯片毫无二致。

英特尔 Boot Guard 和 Secure Boot 功能就是为了防止攻击者往UEFI或启动过程中加载的其他组件(如操作系统引导程序或内核)中注入恶意软件而创建的。

此类恶意软件由来已久,被称为bootkit,驻留功能强大,非常难以清除,深受攻击者青睐。其杀不死的小强属性源于计算机每次重启时bootkit都能抢在杀软启动之前再次感染操作系统。

该攻击的芯片替换版就类似于驻留硬件版的bootkit,可用于从系统中盗取磁盘加密口令和其他敏感信息,且若不开箱仔细检查主板是非常难以检测出来的。

尽管此类物理攻击针对性很强,永远不会成为广泛传播的威胁,但仍对能接触到有价值信息的公司企业和用户形成严重的风险。

此类物理侵害发生形式多样,比如邪恶女佣类场景——公司CEO之类高价值目标海外旅游去了,笔记本电脑就这么毫不设防地留在了酒店房间里,攻击者买通或自己假扮成服务生就能进去换掉SPI芯片。

Bosch称,有趁手的设备的话,有经验的攻击者15-20分钟就能把目标SPI存储芯片替换成可执行此类攻击的流氓版。

另一种可能性是供应链攻击,或者所谓的“阻断”技术——计算机出货途中被情报机构拦截,装上后门再重新密封起来以掩盖篡改痕迹。

斯诺登泄露的文档就显示NSA使用了这种技术,而且运用该技术的情报机构肯定不止NSA一家。

有些设备确实设有防篡改封条或机制,但只要有正确的知识和资源就能很简单地绕过这些防护。

恶意雇员也可以在公司发的工作笔记本上运用该技术,用以绕过访问控制获取管理员权限,或者留待离职后仍能访问公司的数据和网络。这种攻击即便机器重装都无法清除。

经济间谍盛行的年代,为不同公司工作,偷盗商业秘密并传给外国政府或竞争对手公司的恶意雇员并不鲜见。

两名研究人员在1月时向英特尔公司通报他们的发现,并称该芯片巨头严肃对待此问题,将之列为高严重性漏洞。英特尔已经为其 Tianocore UEFI 实现开发了补丁程序,并共享给了BIOS供应商和PC制造商。

研究人员尚未测试过补丁有效性,但至少从描述上看似乎是全面的,应该能防止未来的类似攻击。

问题在于:分发UEFI补丁可不是个简单的过程。英特尔将其UEFI工具包共享给了与各PC制造商有联系的UEFI/BIOS供应商。这些OEM再生产出自己的定制固件,然后打包进产品中发售。

这意味着后续修复需要所有参与方的协作,更不用说需要切实谨慎安装这些UEFI更新的终端用户了。

影响英特尔CPU的熔断和幽灵漏洞同样需要UEFI更新才能修复,有些PC供应商花了好几个月才发布受影响产品的补丁。还有很多型号的产品因为制造商不再支持而从未收到过UEFI更新形式的补丁。

两名研究人员计划在下个月将他们的概念验证代码作为SPISpy工具的一部分发布,希望能够帮助其他研究人员和感兴趣的人士检查自身机器是否脆弱,以及调查其他平台是否存在类似问题。

我真心乐于看到业界开源他们的固件代码,以便能更方便地验证其正确性和安全性。