微软的安全启动已经被破解十年了,直到现在才被人注意到
原文链接:https://arstechnica.com/security/2026/07/microsoft-secure-boot-has-been-broken-for-most-of-its-existence/
微软发明的一种行业范围标准,旨在保护 Windows 和后来的 Linux 设备免受固件感染,在其存在的 14 年中,有 13 年很容易被绕过。这一发现是由安全公司 ESET 的研究人员在识别了 11 个固件映像(至少一个是 2013 年的)后发现的,这些固件映像已知存在缺陷,但无论如何仍由该软件公司签名。这些映像称为垫片,其发明目的是为了将安全启动扩展到 Linux 设备和实用软件。使用一种简单到新手黑客都可以执行的技术,这些旧的、被遗忘的垫片可以用来完全规避嵌入到设备主板的 UEFI(统一可扩展固件接口)中的保护。这次失态是由于微软未能在发现漏洞后撤销公开可用的图像。微软负责监督填充程序的签名。威胁扩展到 Windows 和 Linux 用户 威胁同样扩展到 Windows 和 Linux 用户,因为 shim 可以安装在运行这两种操作系统的设备上。从那里,攻击者可以破坏强制的数字签名固件链,以安装恶意固件,该固件在启动过程的早期加载,并在重新安装操作系统或更换硬盘后仍然存在。
ESET 研究员 Martin Smolár 周二写道:“让这些旧垫片变得危险的并不是一个新的漏洞。” “绕过 UEFI 安全启动不需要新的漏洞。攻击者不需要复杂的利用原语,只需一份旧的、仍然受信任但未撤销的 shim 二进制文件的副本以及对 UEFI shim 工作原理的基本了解。这足以绕过 UEFI 安全启动这样的基本安全功能。”安全启动于 2012 年推出,旨在削弱 Bootkit(此类恶意固件的术语)的威胁。如果没有安全启动,只要对设备进行短暂的物理访问(即使设备已关闭),攻击者就可以安装类似于俄罗斯国家黑客在 2018 年使用的 LoJax、2020 年发现的 MosaicRegressor、2022 年发现的 CosmicStrand 和 2023 年发现的 BlackLotus 的启动工具包。还有一些其他野外启动工具包以 ESpecter、FinSpy 和 MoonBounce 等名称进行跟踪。大多数(但并非全部)Bootkit 恶意软件要求攻击者对目标设备进行物理访问。此类访问是安全启动明确需要防范的威胁模型之一。
CERT 编译的所有 11 个垫片的列表显示,其中一些垫片已被 Redhat、OpenSuse 和 Oracle 等 Linux 发行商使用。其他的是第三方软件的一部分,例如芬兰 PC-Doctor 的入学考试委员会。其中许多是在某些保护措施(包括 SBAT 和 MOK 拒绝名单)存在之前建立的。其他人的代码或他们授权的第二阶段二进制文件中包含累积的错误。
Microsoft 用于 Windows 的数字签名 UEFI 引导加载程序是 Windows 计算机上唯一的信任锚。对于在启动过程中加载的组件,证书必须显式签署启动过程中执行的所有其他代码。垫片的工作方式不同。它们是次要信任锚,由 Microsoft 使用其其他 UEFI 证书之一进行签名。从那里,嵌入到垫片中的属于主板或软件制造商的证书将授权随后加载的所有软件。当在垫片中发现漏洞时,微软会撤销它们。就 11 个垫片而言,该公司未能做到这一点,有时甚至长达十多年。在 ESET 引起 CERT 和 Microsoft 的注意后,该公司最终在 6 月份定期发布的每月补丁中撤销了它们。复杂性是执行的敌人,微软尚未解释这一失误是如何发生的以及为何发生。一个可能的原因是 Secure Boo 的方式非常复杂