针对Intel和AMD处理器微架构的新攻击

来自弗吉尼亚大学和加利福尼亚大学的一组研究人员提出了一种针对英特尔和 AMD 处理器微架构的新型攻击,这种攻击是在对未记录的 CPU 功能进行逆向工程时发现的。 所提出的攻击方法涉及在处理器中使用中间微操作缓存,该缓存可用于检索指令推测执行期间积累的信息。

出于优化目的,处理器开始以推测模式执行一些指令,而不等待先前的计算完成,如果随后确定预测不合理,则它将操作回滚到其原始状态,但期间处理的数据推测执行被存放在高速缓存中,其内容是可以确定的。

值得注意的是,新方法明显优于 Spectre v1 攻击,使攻击难以检测,并且无法被现有的侧通道攻击防护方法所阻止,这些方法旨在阻止推测性执行指令引起的漏洞(例如,使用LFENCE 指令会阻止推测执行最后阶段的泄漏,但不能防止通过微架构结构发生泄漏。

该方法影响自 2011 年以来发布的 Intel 和 AMD 处理器型号,包括 Intel Skylake 和 AMD Zen 系列。 现代 CPU 将复杂的处理器指令分解为更简单的类似 RISC 的微操作,这些微操作缓存在单独的缓存中。 该高速缓存与高级高速缓存有根本的不同,不能直接访问,而是充当流缓冲区,用于快速访问将 CISC 指令解码为 RISC 微指令的结果。 然而,研究人员找到了一种方法,可以在缓存访问冲突时创建条件,并通过分析某些操作的执行时间差异来判断微操作缓存的内容。

针对Intel和AMD处理器微架构的新攻击

Intel处理器中的微操作缓存是根据CPU线程(超线程)进行分段的,而AMD Zen处理器则使用共享缓存,这不仅为一个执行线程内的数据泄漏创造了条件,而且在SMT中的不同线程之间也为数据泄漏创造了条件(不同逻辑 CPU 核心上运行的代码之间可能存在数据泄漏)。

研究人员提出了一种检测微操作缓存变化的基本方法,以及几种允许在单个进程内创建隐藏数据传输通道并使用易受攻击的代码泄露机密数据的攻击场景(例如,在执行时泄露进程数据)具有 JIT 的引擎和虚拟机中的第三方代码),以及用户空间中的内核和进程之间。

当使用微操作缓存组织 Spectre 攻击的变体时,在组织同一地址内的泄漏的情况下,研究人员能够实现 965.59 Kbps 的性能,错误率为 0.22%;使用纠错时,能够实现 785.56 Kbps 的性能空间和特权级别。 对于跨越不同权限级别(内核和用户空间之间)的泄漏,添加纠错后性能为 85.2 Kbps,错误率为 110.96% 时性能为 4 Kbps。 当攻击 AMD Zen 处理器时,在不同逻辑 CPU 核心之间造成泄漏,性能为 250 Kbps,错误率为 5.59%,纠错率为 168.58 Kbps。 与经典的 Spectre v1 方法相比,新的攻击速度快了 2.6 倍。

预计,防御微操作缓存攻击将需要进行一些更改,这些更改会比启用 Spectre 攻击保护时更加降低性能。 作为最佳折衷方案,建议不是通过禁用缓存来阻止此类攻击,而是在监视异常和识别典型攻击的缓存状态的级别上进行阻止。

与 Spectre 攻击一样,组织内核或其他进程的泄漏需要在受害进程一侧执行特定的命令序列(小工具),从而导致指令的推测执行。 Linux 内核中已发现大约 100 个类似的小工具,这些小工具将被删除,但会定期找到其生成的变通方法,例如与在内核中运行专门设计的 BPF 程序相关的方法。

来源: opennet.ru

添加评论