如果您使用电压,英特尔处理器会吐出一个私钥

来自欧洲三所大学的研究人员揭示了首次已知的SGX攻击的细节

SGX(Software Guard eXtensions)指令集允许应用程序创建安全区-虚拟地址空间中的区域,该区域不受其他进程(包括操作系统内核)的保护,无法在该区域外部进行读写操作。 安全区在硬件和软件级别是隔离的:此内存在物理上与处理器内存的其余部分分开并进行了加密。

Plundervolt攻击(CVE-2019-11157)使用OS接口来控制Intel处理器的电压和频率-该接口用于在超频期间对CPU超频。 通过更改CPU电压,它可以在几分钟内从安全区中提取数据,包括加密密钥。

演示漏洞利用代码发布在GitHub上 。 脆弱的处理器:

  • 英特尔酷睿6、7、8、9和10代
  • 英特尔至强E3 v5和v6
  • 英特尔至强E-2100和E-2200

研究人员设法将两种众所周知的攻击的概念结合在一起:

  • Rowhammer :通过将数据写入相邻单元,将DRAM单元的位值从1更改为0,反之亦然。
  • CLKSCREW处理器电源操纵动态电压和频率缩放(DVFS)。

Plundervolt结合了这两种攻击的基本原理。 通过DVFS,它会改变SGX存储单元中的电压,从而导致安全区域中的数据发生不必要的变化。

这项工作基于以前对英特尔处理器的反向工程。 他透露了哪些MSR寄存器(ModelSpecific寄存器)负责执行程序命令后CPU电压的动态变化。 此类寄存器位于所有英特尔处理器中。


MSR未记录的寄存器架构,地址为0x150

事实证明,在易受攻击的处理器中,会发生可预测的位更改。 例如,在Core i3-7100U处理器中,如果压降为118 mV,则操作0x80D36 * 0x21 = 0x109b3f6会在2 GHz频率下给出可预测的故障值0xffffffffe109b417

Core i3-7100U在2 GHz下乘法失败的其他示例:



这些小的更改不会侵犯新交所的隐私。 相反,它们将错误引入到SGX数据处理操作中。 换句话说,Plundervolt不会破解SGX,而是会改变结果:“欠电压会导致处理器指令中的位发生变化,例如乘法或AES加密回合(AES-NI),”伯明翰大学的院士David Oswald解释说。工作。 “由于SGX仅在读写内存时(而不是在处理器内部)才对数据进行加密,所以SGX内存保护不能防止这些错误(因为错误的值是自己写入内存的。”)



通过Plundervolt,您可以查看退出SGX安全区的加密消息,然后还原最初用于加密数据的密钥。





研究人员通过在SGX飞地中工作的Intel RSA-CRT和AES-NI的实现中引入错误来证明攻击的有效性。 他们只需很少的计算即可恢复完整的加密密钥。

测试攻击的代码 (GitHub上的存储库)

所描述的攻击不需要大幅增加电压,因此不会威胁芯片的物理安全性。 实际上,Plundervolt的这一属性使攻击更加危险。 另一个危险的特性是,它比对Intel处理器的大多数其他攻击(例如Spectre,Meltdown,Zombieload,RIDL等)要快得多。 下表显示了在2 GHz的I3-7100U中在不同的欠压值下0xAE0000 * 0x18乘法误差( 0xAE0000 * 0x18 )之前的迭代次数:



更改AES乘法中的位非常快。 奥斯瓦尔德说,例如,检索AES密钥需要几分钟,包括从失败的密文中获取密钥所需的计算。

不幸的是,对于攻击者而言,Plundervolt攻击难以远程进行。 您不能诱使用户访问网站并运行JavaScript。 此方法的CPU电压不变。 为了工作,Plundervolt要求计算机上的受害者是root或admin。 这需要社会工程学和使用其他漏洞利用。

Plundervolt 在虚拟环境 (例如虚拟机和云计算服务)中不起作用,在该虚拟环境中 ,来宾OS无法访问控制处理器电压的接口。

但是,Plundervolt是一个严重的问题。 研究团队于2019年6月通知了英特尔该漏洞,并且CPU制造商自那时以来一直在开发补丁程序。 固件和BIOS更新于2019年12月10日发布,作为INTEL-SA-00289安全建议的一部分。 在BIOS中安装补丁之后,您可以禁用用于管理电压和时钟频率的接口。

有关攻击的技术描述,请参阅科学文章(pdf) ,该文章在第41届IEEE安全与隐私研讨会论文集中发布。

Source: https://habr.com/ru/post/zh-CN480526/


All Articles