为什么您的 PC 的 UEFI 固件需要安全更新

微软近期公布了名为“Mu项目”的计划,旨在实现对兼容硬件的“固件即服务”。这应引起所有PC制造商的重视。PC的UEFI固件需要安全更新,而PC制造商在这方面表现不佳。

什么是UEFI固件?

现代计算机采用UEFI固件,而非传统的BIOS。UEFI固件是计算机启动时首先运行的底层软件。它负责检测和初始化硬件,进行一些基础的系统配置,并引导操作系统从计算机的内部驱动器或其他启动设备启动。

与旧的BIOS相比,UEFI更加复杂。例如,配备英特尔处理器的计算机包含一个名为“英特尔管理引擎”(Intel ME)的组件,它本质上是一个微型操作系统,与Windows、Linux或计算机上运行的任何操作系统并行工作。在企业网络中,系统管理员可以利用Intel ME的功能远程管理计算机。

UEFI还包括处理器“微码”,这类似于处理器的固件。计算机启动时,它会从UEFI固件加载微码。可以将其视为一个解释器,将软件指令转化为CPU可以执行的硬件指令。

为何UEFI固件需要安全更新?

过去几年,频繁出现的安全问题一再证明,UEFI固件需要及时进行安全更新。

2018年,我们都了解到了Spectre漏洞,它揭示了现代CPU的严重架构问题。“推测执行”问题意味着程序可以绕过标准安全限制并读取内存中的敏感区域。要修复Spectre漏洞,需要更新CPU微码。这意味着PC制造商必须为所有笔记本电脑和台式电脑更新UEFI固件,而主板制造商也需要更新所有主板,以包含更新后的微码。如果用户不安装UEFI固件更新,其计算机就无法获得充分的Spectre漏洞保护。AMD也发布了微码更新,以保护使用AMD处理器的系统免受Spectre攻击,因此这不仅仅是英特尔的问题。

英特尔的管理引擎也出现了一些安全漏洞,这些漏洞可能允许具有本地计算机访问权限的攻击者入侵管理引擎软件,或者允许具有远程访问权限的攻击者制造麻烦。幸运的是,远程攻击仅影响启用了英特尔主动管理技术(AMT)的企业,因此普通消费者通常不受影响。

这只是几个例子。研究人员还展示了在某些PC上滥用UEFI固件是可行的,并可利用它来获得对系统的深层访问。他们甚至展示了持久性勒索软件,它可以访问计算机的UEFI固件并从那里运行。

整个行业都应该像对待其他软件一样,定期更新每台计算机的UEFI固件,以防止未来出现类似问题和缺陷。

多年来更新过程为何如此混乱?

早在UEFI出现之前,BIOS更新过程就已经是一团糟。传统上,带有旧版BIOS的计算机很少出错。PC制造商可能会发布一些BIOS更新来修复小问题,但通常的建议是,如果计算机运行正常,则最好避免安装这些更新。用户通常需要从可引导的DOS驱动器启动以刷新BIOS更新,并且很多人都听说过BIOS更新失败导致计算机无法启动的案例。

现在情况发生了变化。UEFI固件的功能更多,英特尔近年来发布了多个重大更新,包括CPU微码和英特尔ME。每当英特尔发布此类更新时,英特尔所能做的就是说“请咨询您的计算机制造商”。您的计算机制造商(或如果您是自行组装计算机,则是主板制造商)必须从英特尔获取代码,并将其集成到新的UEFI固件版本中。然后,他们必须对固件进行测试。而且,每个制造商都必须为其销售的每台PC重复此过程,因为它们都有不同的UEFI固件。这种手动过程使Android手机的更新也变得困难。

实际上,这意味着关键的安全更新通常需要很长时间(几个月)才能通过UEFI发布。这意味着制造商可能会选择忽略只使用了几年的PC。而且,即使制造商确实发布了更新,这些更新通常也隐藏在制造商的支持网站上。大多数PC用户永远不会发现这些UEFI固件更新的存在并进行安装,因此这些漏洞最终会在现有PC中长期存在。一些制造商仍然要求用户先启动DOS来安装固件更新,这使得过程更加复杂。

人们正在采取哪些措施?

情况非常糟糕。我们需要一个简化的流程,使制造商可以更容易地创建新的UEFI固件更新。我们还需要一个更好的流程来发布这些更新,以便用户可以在他们的PC上自动安装它们。现在这个过程既缓慢又是手动的,它应该快速且自动化。

这正是微软试图通过Project Mu来实现的目标。以下是官方文档对此的解释:

Mu的构建理念是,交付和维护UEFI产品是众多合作伙伴之间的持续协作。长期以来,行业一直采用“分叉”模型来构建产品,该模型结合了复制/粘贴/重命名,并且随着每个新产品的维护负担增加,由于成本和风险,几乎不可能进行更新。

Project Mu旨在通过简化UEFI开发流程并帮助所有参与者协同工作,来帮助PC制造商更快地创建和测试UEFI更新。希望这是缺失的部分,因为微软已经让PC制造商可以更轻松地自动向用户推送其UEFI固件更新。

具体来说,微软允许PC制造商通过Windows更新发布固件更新,并且至少自2017年以来就提供了相关文档。微软还宣布了组件固件更新。早在2018年10月,制造商就可以使用开源模型来更新UEFI和其他固件。如果PC制造商参与其中,他们就可以非常快速地向所有用户提供固件更新。

这不仅限于Windows。在Linux上,开发人员正致力于使PC制造商更容易通过LVFS(Linux供应商固件服务)发布UEFI更新。PC供应商可以提交他们的更新,这些更新将出现在GNOME软件应用程序中供下载,该应用程序用于Ubuntu和许多其他Linux发行版。这项工作可以追溯到2015年。包括戴尔和联想在内的PC制造商正在参与其中。

这些适用于Windows和Linux的解决方案不仅限于UEFI更新。硬件制造商将来可以使用它们来更新从USB鼠标固件到固态硬盘固件的所有内容。

正如SwiftOnSecurity在谈到固态硬盘固件和加密问题时所说,固件更新应该是可靠的。我们需要对硬件制造商有更高的期望。

固件更新应该是可靠的。我已启动了至少3000次戴尔BIOS更新,但只有一次失败,而那台旧PC已经因为故障而退役。

重新考虑你认为不可能的事情。固件服务并非不可能或有风险。它要求人们有更高的期望。

— SwiftOnSecurity (@SwiftOnSecurity) 2018年11月6日

图片来源:英特尔, 娜塔莎·艾布尔, 库拜/Shutterstock.com。