AMD 处理器中发现了另一个允许 Meltdown 类攻击的漏洞

来自格拉茨理工大学(奥地利)和亥姆霍兹信息安全中心 (CISPA) 的一组研究人员披露了所有 AMD 处理器中的一个漏洞 (CVE-2021-26318),该漏洞允许 Meltdown 类的旁道攻击(最初假设 AMD 处理器不受 Meltdown 漏洞影响)。 从实用角度来看,该攻击可以在利用漏洞的过程中组织隐蔽的数据传输通道,监控内核中的活动,或者获取内核内存中的地址信息,从而绕过基于地址随机化(KASLR)的保护。内核。

AMD 认为采取特殊措施来阻止该问题是不合适的,因为该漏洞与 XNUMX 月份发现的类似攻击一样,在实际情况下用处不大,受到进程地址空间当前边界的限制,并且需要存在内核中某些现成的指令序列(小工具)。 为了演示这种攻击,研究人员在他们自己的内核模块中加载了一个人为添加的小工具。 在实际情况下,为了替换必要的序列,攻击者可以使用 eBPF 子系统中定期出现的漏洞等。

为了防范这种新型攻击,AMD 推荐了有助于阻止 Meltdown 攻击的安全编码技术,例如使用 LFENCE 指令。 发现该问题的研究人员建议启用更严格的内存页表隔离(KPTI),该隔离以前仅在英特尔处理器上使用。

在实验过程中,研究人员设法以每秒 52 字节的速度将信息从内核泄漏到用户空间的进程,内核中的一个小工具执行“if (offset < data_len) tmp = LUT[data [偏移量] * 4096];" . 已经提出了几种方法来通过第三方渠道检索在推测执行期间在高速缓存中确定的信息。 第一种方法是基于处理器指令“PREFETCH”(Prefetch+Time)执行时间偏差的分析,第二种方法是基于改变执行“PREFETCH”时功耗的变化(Prefetch+Power) 。

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

由于与正常执行的指令相同的高速缓存用于推测执行的操作,因此在推测执行期间可以在高速缓存中设置反映私有内存区域中各个位的内容的标记,然后在正常执行的代码中确定它们的值通过时间分析,访问缓存和非缓存数据。

来源: opennet.ru

添加评论