通过使用来自 Ubuntu 等 Linux 发行版的合法“shim-signed”软件包,攻击者可以绕过那些已经信任微软第三方证书的企业笔记本电脑上的安全启动(Secure Boot)保护。此技术允许硬件固件授权自定义签名的操作系统,有效地破坏了旨在防止未经授权的启动软件的完整性检查。
Shim 在安全启动中的作用
安全启动通过将操作系统的签名与接受密钥的数据库进行比对来发挥作用。由于 Linux 发行版频繁更新内核和引导程序,它们使用“shim”——一个小的、由微软签名的软件片段,用于处理固件与 Linux 引导程序之间的转换。
由于 shim 携带有效的微软签名,因此受到 BIOS 的信任。一旦 shim 运行,它就提供了一个称为 MOK(Machine Owner Key)注册的机制,允许用户手动将新密钥注册到系统的信任数据库中。
“安全启动存在的实际原因是:确保启动操作系统的完整性。”
— Leo Smith - Not So Secure Boot
借用信任以注册自定义密钥
该漏洞在于 MOK 注册过程通常可以在没有 BIOS 密码的情况下访问。攻击者可以使用来自 Ubuntu 或 Fedora 等发行版的合法“shim-signed”文件来满足初始的安全启动检查。

此视觉效果支持了 MOK 注册过程通常可以在没有 BIOS 密码的情况下访问的说法。
一旦受信任的 shim 运行,攻击者就可以触发 MOK 注册软件。此界面允许他们选择并注册自己的自定义证书,他们已使用该证书为自己的恶意或未经授权的内核签名。注册完成后,硬件会将攻击者的自定义操作系统视为启动链中的受信任组件。

这张图片展示了文中描述的 MOK 注册软件界面。
局限性与企业防御
虽然此技术允许启动自定义操作系统,但如果数据受到 TPM 加密的磁盘加密保护,它并不会自动授予访问现有操作系统数据的权限。如果磁盘加密密钥与特定的平台配置寄存器(PCR)绑定,TPM 将拒绝释放密钥,因为启动链已经发生了变化。
此外,许多现代企业环境使用 Microsoft Intune 或 Autopilot 等管理工具来锁定 UEFI 控制项。如果这些控制项被严格执行,MOK 注册界面可能无法访问,从而防止攻击在高度安全的企业机群上成功。
Hacker News 读者的反应
- 技术补充: 一位评论者解释说,虽然此方法允许启动不同的操作系统,但它不会破坏现有的操作系统,因为 TPM 会由于 PCR 寄存器的变化而拒绝释放磁盘加密密钥。 评论 ↗
- 技术补充: 另一位用户建议通过将磁盘加密密钥密封到特定的 PCR 中作为一种实用的防御措施,以确保如果系统在没有正确验证的密钥的情况下启动,系统仍保持锁定状态。 评论 ↗
- 质疑: 一位评论者指出,在 UEFI 控制项被 Intune 或 Autopilot 等管理工具锁定的企业硬件上,此攻击可能会被缓解。 评论 ↗
以上为 Hacker News 讨论中观点的摘要,并非经过核实的事实。 阅读完整讨论 ↗