Intel CPU环形总线数据泄露

伊利诺伊大学的一组研究人员开发了一种新的旁道攻击技术,可以通过英特尔处理器的环形互连操纵信息泄漏。 该攻击允许您突出显示另一个应用程序中的内存使用信息并跟踪击键计时信息。 研究人员发布了用于执行相关测量的工具和几个原型开发。

已经提出了三种利用方法,可以:

  • 使用易受旁道攻击的 RSA 和 EdDSA 实现时恢复加密密钥的各个位(如果计算延迟取决于正在处理的数据)。 例如,带有有关 EdDSA 的初始化向量(随机数)信息的各个位的泄漏足以使用攻击来顺序恢复整个私钥。 该攻击在实践中实施起来比较困难,需要大量保留才能进行。 例如,当禁用 SMT(超线程)且 LLC 缓存在 CPU 内核之间分段时,会显示成功的操作。
  • 定义有关击键之间延迟的参数。 延迟取决于按键的位置,并允许通过统计分析以一定的概率重新创建从键盘输入的数据(例如,大多数人通常在“a”之后键入“s”比在“g”之后键入“g”快得多) “s”)。
  • 组织一个隐藏的通信通道,以每秒约 4 兆位的速度在进程之间传输数据,该通道不使用共享内存、处理器缓存以及 CPU 内核特定的资源和处理器结构。 值得注意的是,所提出的创建隐蔽通道的方法很难用现有的防止侧通道攻击的方法来阻止。

漏洞利用不需要提升权限,普通的非特权用户就可以使用。 值得注意的是,该攻击可能会被用来组织虚拟机之间的数据泄漏,但这个问题超出了研究范围,并且没有对虚拟化系统进行测试。 建议的代码在 Ubuntu 7 中的 Intel i9700-16.04 CPU 上进行了测试。 总体而言,该攻击方法已在 Intel Coffee Lake 和 Skylake 系列的桌面处理器上进行了测试,并且也可能适用于 Broadwell 系列的 Xeon 服务器处理器。

环形互连技术出现在基于Sandy Bridge微架构的处理器中,由用于连接计算和图形核心、服务器桥和缓存的多个循环总线组成。 该攻击方法的本质是,由于环形总线带宽的限制,一个进程中的内存操作会延迟对另一进程内存的访问。 通过逆向工程识别实现细节,攻击者可以生成导致另一个进程内存访问延迟的负载,并将这些延迟用作获取信息的侧通道。

由于缺乏有关总线架构和操作方法的信息以及高水平的噪声,对内部 CPU 总线的攻击受到阻碍,这使得隔离有用数据变得困难。 通过对总线传输数据时使用的协议进行逆向工程,可以了解总线的工作原理。 基于机器学习方法的数据分类模型用于将有用信息与噪音分离。 所提出的模型使得在多个进程同时访问内存并且从处理器缓存返回数据的某一部分的情况下,可以在特定进程的计算期间组织对延迟的监控。

此外,我们还可以注意到在攻击 Linux 系统期间识别出 Spectre 漏洞第一个变体 (CVE-2017-5753) 的利用痕迹。 该漏洞利用侧通道信息泄漏来查找内存中的超级块,确定 /etc/shadow 文件的 inode,并计算内存页面地址以从磁盘缓存中检索该文件。

来源: opennet.ru

添加评论