一群人 弗吉尼亚大学和加利福尼亚大学的研究人员提出了一种新型的攻击 到处理器的微体系结构 英特尔和AMD。
拟议的攻击方法 与使用微操作的中间缓存相关联 (微操作缓存),可用于提取在推测性执行指令过程中确定的信息。
据观察, 新方法明显胜过Spectre攻击v1 就性能而言,它使检测攻击变得困难,并且不受现有的通过侧通道攻击的防护方法的阻止,该侧通道旨在阻止由推测性执行指令引起的漏洞。
例如,使用LFENCE语句可以阻止在推测执行的后期泄漏,但不能防止微体系结构泄漏。
该方法会影响自2011年以来发布的Intel和AMD处理器型号, 包括Intel Skylake和AMD Zen系列。现代的CPU将复杂的处理器指令分解为更简单的类似于RISC的微操作, 它们被缓存在单独的缓存中。
这个快取 与顶级缓存有根本的不同不能直接访问,并且充当流缓冲区以快速访问将CISC指令解码为RISC微指令的结果。
但是,研究人员 找到了一种方法来创建在高速缓存访问冲突期间出现的条件 通过分析某些动作执行时间的差异,可以判断微操作缓存的内容。
英特尔处理器上的微操作缓存相对于CPU线程是分段的 (超线程),而处理器 AMD Zen使用共享缓存, 这不仅为一个执行线程内的数据泄漏创造了条件,而且还为SMT中的不同线程之间的数据泄漏创造了条件(在CPU的不同逻辑内核上运行的代码之间可能发生数据泄漏)。
研究人员提出了一种基本方法 检测微操作的缓存中的更改以及各种攻击场景,这些场景允许创建隐蔽的数据传输通道并使用易受攻击的代码来过滤机密数据,这两个过程都可以在单个过程中进行(例如,在运行第三次时组织数据泄漏的过程) JIT引擎和虚拟机中的第三方代码),以及内核和用户空间中的进程之间的代码。
通过使用微操作缓存进行Spectre攻击的变体,研究人员设法在相同内存中发生泄漏的情况下,实现965.59 Kbps的吞吐量,0.22%的错误率和785.56 Kbps的错误纠正率。空间地址。 和特权级别。
如果泄漏跨越不同的特权级别(内核和用户空间之间),则吞吐量为85,2 Kbps(添加了纠错功能)和110,96 Kbps(具有4%的错误率)。
当攻击AMD Zen处理器时,会在不同的逻辑CPU内核之间造成泄漏,吞吐量为250 Kbps(错误率为5,59%)和168,58 Kbps(具有错误纠正)。 与经典的Spectre v1方法相比,新攻击的速度提高了2,6倍。
与启用Spectre防御时相比,减轻Micro-op缓存攻击预计将需要更多性能下降的更改。
作为最佳折衷方案,建议不是通过禁用缓存来阻止此类攻击,而是在异常监视和确定攻击的典型缓存状态的级别上进行阻止。
就像在幽灵攻击中一样, 组织内核或其他进程的泄漏需要执行某些脚本 (小工具)在流程的受害方,导致推测性执行指令。
在Linux内核中已经发现了大约100个这样的设备并将其删除,但是会定期找到生成它们的解决方案,例如那些与在内核中启动特制BPF程序相关的设备。
最后 如果您有兴趣了解更多信息,您可以查看详细信息 在下面的链接中。