英特尔处理器漏洞导致数据通过第三方渠道泄露

来自中国和美国大学的一组研究人员发现了英特尔处理器中的一个新漏洞,该漏洞会导致第三方泄露有关推测执行操作结果的信息,例如,该漏洞可用于组织之间的隐藏通信通道处理或识别 Meltdown 攻击期间的泄漏。

该漏洞的本质是由于推测执行指令而导致 EFLAGS 处理器寄存器发生变化,从而影响 JCC 指令的后续执行时间(满足指定条件时跳转)。 推测操作未完成,结果被丢弃,但可以通过分析 JCC 指令的执行时间来确定丢弃的 EFLAGS 变化。 在转换之前以推测模式执行的比较操作如果成功的话,会产生一个小的延迟,可以测量该延迟并将其用作内容选择的标志。

英特尔处理器漏洞导致数据通过第三方渠道泄露

与其他类似的旁路攻击不同,新方法不会分析缓存和未缓存数据的访问时间变化,也不需要将 EFLAGS 寄存器重置为其初始状态,这使得检测和阻止攻击变得困难。 作为演示,研究人员实施了 Meltdown 攻击的变体,使用一种新方法来获取有关投机操作结果的信息。 在采用 Intel Core i7-6700 和 i7-7700 CPU 的系统上,在 Ubuntu 22.04 和 Linux 内核 5.15 的环境中,成功演示了在 Meltdown 攻击期间组织信息泄漏的方法的操作。 在具有 Intel i9-10980XE CPU 的系统上,攻击仅进行了部分。

Meltdown 漏洞基于以下事实:在指令的推测执行期间,处理器可以访问私有数据区域,然后丢弃结果,因为设置的权限禁止用户进程进行此类访问。 在程序中,推测执行的块通过条件分支与主代码分开,该条件分支在实际情况下总是触发,但由于条件语句使用处理器在抢占执行期间不知道的计算值代码中,所有分支选项都是推测执行的。

在 Meltdown 的经典版本中,由于与正常执行的指令相同的缓存用于推测执行的操作,因此在推测执行期间可以在缓存中设置反映封闭内存区域中各个位的内容的标记,然后通过分析缓存和未缓存数据的访问时间来确定正常执行的代码中它们的含义。 新变体使用 EFLAGS 寄存器中的更改作为泄漏标记。 在隐蔽通道演示中,一个进程对传输的数据进行调制,为改变EFLAGS寄存器的内容创造条件,另一个进程分析JCC指令执行时间的变化,重新创建第一个进程传输的数据。

来源: opennet.ru

添加评论