影响 Intel、AMD、ARM 和 IBM 处理器的新 Foreshadow 攻击变体

来自格拉茨技术大学(奥地利)和亥姆霍兹信息安全中心 (CISPA) 的一组研究人员, 透露 (PDF)使用旁路攻击的新向量 预兆 (L1TF),它允许您从 Intel SGX enclave、SMM(系统管理模式)、操作系统内核的内存区域以及虚拟化系统中的虚拟机中提取数据。 与 2018 年提出的原始攻击不同 预兆 新变体并非特定于英特尔处理器,还会影响 ARM、IBM 和 AMD 等其他制造商的 CPU。 此外,新变种不需要高性能,甚至可以通过在网络浏览器中运行JavaScript和WebAssembly来进行攻击。

Foreshadow 攻击利用了这样一个事实:当在导致异常(终端页错误)的虚拟地址访问内存时,处理器会推测性地计算物理地址并加载数据(如果 L1 缓存中可用)。 推测访问是在内存页表搜索完成之前执行的,无论内存页表项(PTE)的状态如何,即在检查物理内存中数据的存在及其可读性之前。 内存可用性检查完成后,在 PTE 中没有 Present 标志的情况下,该操作将被丢弃,但数据仍保留在缓存中,并且可以使用通过侧通道确定缓存内容的方法来检索(通过分析访问时间的变化)缓存和未缓存的数据)。

研究人员表明,现有的 Foreshadow 防护方法是无效的,并且是在对问题的解释不正确的情况下实施的。 漏洞
无论以前认为足够的内核安全机制如何,Foreshadow 都可以被利用。 结果,研究人员证明了对具有相对较旧内核的系统进行 Foreshadow 攻击的可能性,其中启用了所有可用的 Foreshadow 保护模式,以及使用新内核,其中仅禁用了 Spectre-v2 保护(使用Linux 内核选项 nospectre_v2)。

发现 预载效应 与软件预取指令或硬件效果无关
在内存访问期间预取,但在内核中推测性地取消引用用户空间寄存器时发生。 这种对漏洞原因的误解最初导致了这样的假设:Foreshadow 中的数据泄漏只能通过 L1 缓存发生,而内核中某些代码片段(预取小工具)的存在可能会导致 L1 缓存之外的数据泄漏,例如,在 L3 缓存中。

所识别的功能还开启了创建新攻击的可能性,该攻击旨在在隔离环境中将虚拟地址转换为物理地址并确定存储在 CPU 寄存器中的地址和数据的过程。 作为演示,研究人员展示了使用已确定的效果将数据从一个进程提取到另一个进程的可能性,在配备英特尔酷睿 i10-7U CPU 的系统上,性能约为每秒 6500 位。 还显示了从 Intel SGX enclave 泄漏寄存器内容的可能性(需要 32 分钟才能确定写入 64 位寄存器的 15 位值)。 事实证明,某些类型的攻击可以在 JavaScript 和 WebAssembly 中实现,例如,可以确定 JavaScript 变量的物理地址并用攻击者控制的值填充 64 位寄存器。

为了阻止通过L3缓存的Foreshadow攻击,retpoline补丁集中实现的Spectre-BTB(Branch Target Buffer)保护方法是有效的。 因此,研究人员认为,即使在具有新 CPU 的系统上也有必要启用 retpoline,这些新 CPU 已经针对 CPU 推测执行机制中的已知漏洞提供了保护。 同时,英特尔代表表示,他们不打算在处理器中添加针对 Foreshadow 的额外保护措施,并认为包括针对 Spectre V2 和 L1TF(Foreshadow)攻击的保护就足够了。

来源: opennet.ru

添加评论