Intel处理器MMIO机制漏洞

英特尔披露了有关通过处理器微架构结构发生的新型数据泄露的信息,该结构允许通过操纵 MMIO(内存映射输入输出)机制来确定在其他 CPU 内核上处理的信息。 例如,漏洞允许从其他进程、Intel SGX enclave 或虚拟机中提取数据。 这些漏洞仅针对 Intel CPU;其他制造商的处理器不受这些漏洞的影响。

这些漏洞出现在各种英特尔CPU中,包括基于Haswell、Skylake、IceLake、Broadwell、Lakefield、Kabylake、Cometlake和Rocketlake微架构的处理器,以及Xeon EP/EX、Scalable和一些Atom服务器处理器。 为了进行攻击,需要访问 MMIO,例如,可以在虚拟化系统中获得该访问权限,该虚拟化系统为攻击者控制的客户系统提供访问 MMIO 的能力。 使用 Intel SGX(软件防护扩展)隔离飞地的系统也可能需要修复。

阻止该漏洞需要微代码更新和使用基于 VERW 指令的附加软件保护方法,以便在从内核返回到用户空间或将控制权转移到客户系统时清除微架构缓冲区的内容。 类似的保护还用于阻止先前识别的 MDS(微架构数据采样)、SRBDS(特殊寄存器缓冲区数据采样)和 TAA(事务异步中止)类攻击。

在微代码方面,英特尔 CPU 的 2022.1 月微代码更新 (IPU 5.18.5) 中提出了实现保护所需的更改。 在 Linux 内核中,版本 5.15.48、5.10.123、5.4.199、4.19.248、4.14.284、4.9.319 和 XNUMX 中包含针对新型攻击的防护。 为了检查系统暴露在 MMIO 中的漏洞并评估某些保护机制的活动,文件“/sys/devices/system/cpu/vulnerability/mmio_stale_data”已添加到 Linux 内核中。 为了控制保护的包含,已经实现了内核启动参数“mmio_stale_data”,它可以取值“full”(在移动到用户空间和VM中时启用缓冲区清理),“full,nosmt”(作为“完整”+另外禁用 SMT/超线程)和“关闭”(禁用保护)。 针对 Xen 虚拟机管理程序和 Qubes 操作系统提供了单独的修复程序。

已识别的一类漏洞的本质是,某些操作会导致将其他 CPU 内核上执行后剩余的数据从一个微架构缓冲区复制或移动到另一个微架构缓冲区。 MMIO 中的漏洞允许将这些残留数据从隔离的微架构缓冲区传输到应用程序可见的寄存器或 CPU 缓冲区。 已经确定了通过 MMIO 提取残留数据的三种方法:

  • DRPW(设备寄存器部分写入,CVE-2022-21166)是由于对某些 MMIO 寄存器的写入处理不正确而导致的问题。 如果写入的数据大小小于寄存器的大小,则填充缓冲区中的剩余信息也会复制到寄存器中。 因此,向 MMIO 寄存器发起不完整写入操作的进程可以从其他 CPU 内核上执行的操作中获取微架构缓冲区中剩余的数据。
  • SBDS(共享缓冲区数据采样,CVE-2022-21125)是由于所有内核共用的中间缓冲区的移动而导致内核绑定填充缓冲区的残留数据泄漏。
  • SBDR(共享缓冲区数据读取,CVE-2022-21123) - 该问题与 SBDS 类似,但不同之处在于残留数据可能最终出现在应用程序可见的 CPU 结构中。 SBDS 和 SBDR 问题仅出现在客户端系统的处理器和 Intel Xeon E3 服务器系列上。

Intel处理器MMIO机制漏洞


来源: opennet.ru

添加评论