CROSSTalk - Intel CPU 中的一个漏洞,导致内核之间的数据泄露

阿姆斯特丹自由大学的一组研究人员发现了一种新的 漏洞 (CVE-2020-0543) 存在于英特尔处理器的微架构结构中,值得注意的是,它允许您恢复在另一个 CPU 内核上执行的某些指令的执行结果。 这是推测指令执行机制中第一个允许各个 CPU 核心之间发生数据泄漏的漏洞(之前的泄漏仅限于同一核心的不同线程)。 研究人员将这个问题命名为 CROSSTalk,但是 英特尔文档 该漏洞被称为SRBDS(特殊寄存器缓冲区数据采样)。

该漏洞涉及 呈现 一年前的MDS(微架构数据采样)类问题,是基于侧通道分析方法对微架构结构中的数据的应用。 工作原理 CROSSTalk 接近漏洞 RIDL,但泄漏源有所不同。
新漏洞操纵了所有 CPU 核心共享的先前未记录的中间缓冲区的泄漏。

CROSSTalk - Intel CPU 中的一个漏洞,导致内核之间的数据泄露

问题的本质 重要的是,一些微处理器指令,包括 RDRAND、RDSEED 和 SGX EGETKEY,是使用内部微架构 SRR(特殊寄存器读取)操作来实现的。 在受影响的处理器上,为 SRR 返回的数据存储在所有 CPU 内核共用的中间缓冲区中,然后将其传输到与启动读取操作的特定物理 CPU 内核关联的填充缓冲区。 接下来,填充缓冲区中的值被复制到应用程序可见的寄存器中。

中间共享缓冲区的大小与缓存行相对应,通常大于正在读取的数据的大小,并且不同的读取会影响缓冲区中不同的偏移量。 由于共享缓冲区被完全复制到填充缓冲区,因此不仅当前操作所需的部分被移动,而且其他操作(包括在其他 CPU 内核上执行的操作)剩余的数据也被移动。

CROSSTalk - Intel CPU 中的一个漏洞,导致内核之间的数据泄露

CROSSTalk - Intel CPU 中的一个漏洞,导致内核之间的数据泄露

如果攻击成功,系统中经过身份验证的本地用户可以确定在外部进程中或 Intel SGX enclave 内执行 RDRAND、RDSEED 和 EGETKEY 指令的结果,无论执行代码的 CPU 内核如何。
发现问题的研究人员 发表 原型漏洞展示了通过 RDRAND 和 RDSEED 指令泄露有关随机值的信息的能力,以在系统上仅执行一次数字签名操作后恢复在 Intel SGX enclave 中处理的 ECDSA 私钥。


问题 易受影响的 各种桌面、移动和服务器 Intel 处理器,包括 Core i3、i5、i7、i9、m3、Celeron(J、G 和 N 系列)、Atom(C、E 和 X 系列)、Xeon(E3、E5、 E7 系列(W 和 D)、Xeon 可扩展等。 值得注意的是,英特尔于 2018 年 2019 月收到有关该漏洞的通知,并于 XNUMX 年 XNUMX 月提供了一个利用原型,演示了 CPU 内核之间的数据泄漏,但由于其实现的复杂性,修复程序的开发被推迟。 今天提出的微码更新通过更改 RDRAND、RDSEED 和 EGETKEY 指令的行为来覆盖共享缓冲区中的数据以防止残留信息沉淀在那里,从而解决了该问题。 此外,缓冲区访问会暂停,直到内容被读取和重写。

此类保护的副作用是执行 RDRAND、RDSEED 和 EGETKEY 时的延迟增加,以及尝试在不同逻辑处理器上同时执行这些指令时的吞吐量降低。 执行 RDRAND、RDSEED 和 EGETKEY 还会暂停其他逻辑处理器的内存访问。 这些功能可能会对某些服务器应用程序的性能产生负面影响,因此固件提供了一种机制 (RNGDS_MITG_DIS) 来禁用对在 Intel SGX enclave 之外执行的 RDRAND 和 RDSEED 指令的保护。

来源: opennet.ru

添加评论