基于InsydeH2O框架的UEFI固件中存在漏洞,允许在SMM级别执行代码

在许多制造商用来为其设备创建 UEFI 固件(UEFI BIOS 最常见的实现)的 InsydeH2O 框架中,已发现 23 个漏洞,这些漏洞允许在 SMM(系统管理模式)级别执行代码,该级别具有比管理程序模式具有更高的优先级(环 -2)和零保护环,并且可以无限制地访问所有内存。 该问题影响富士通、西门子、戴尔、惠普、HPE、联想、微软、英特尔和 Bull Atos 等制造商使用的 UEFI 固件。

利用漏洞需要具有管理员权限的本地访问权限,这使得该问题成为二级漏洞,在利用系统中的其他漏洞或使用社会工程方法之后使用。 SMM级别的访问允许您在不受操作系统控制的级别执行代码,可用于修改固件并在SPI Flash中留下操作系统无法检测到的隐藏恶意代码或rootkit,以及禁用启动阶段的验证(UEFI 安全启动、Intel BootGuard)并攻击虚拟机管理程序以绕过检查虚拟环境完整性的机制。

基于InsydeH2O框架的UEFI固件中存在漏洞,允许在SMM级别执行代码

可以使用未经验证的 SMI(系统管理中断)处理程序从操作系统中进行漏洞利用,也可以在操作系统启动或从睡眠模式返回的初始阶段的预执行阶段进行漏洞利用。 所有漏洞都是由内存问题引起的,分为三类:

  • SMM Callout - 通过将 SWSMI 中断处理程序的执行重定向到 SMRAM 外部的代码,以 SMM 权限执行代码;
  • 内存损坏允许攻击者将数据写入 SMRAM,SMRAM 是一个特殊的隔离内存区域,在其中以 SMM 权限执行代码。
  • 在 DXE(驱动程序执行环境)级别运行的代码中存在内存损坏。

为了演示组织攻击的原理,我们发布了一个漏洞利用示例,该示例允许通过来自第三个或零个保护环的攻击来访问 DXE 运行时 UEFI 并执行您的代码。 该漏洞利用 UEFI DXE 驱动程序中的堆栈溢出 (CVE-2021-42059)。 在攻击过程中,攻击者可以将其代码放置在DXE驱动程序中,该驱动程序在操作系统重新启动后仍保持活动状态,或者对SPI Flash的NVRAM区域进行更改。 在执行过程中,攻击者代码可以更改特权内存区域、修改 EFI 运行时服务并影响启动过程。

来源: opennet.ru

添加评论