Plundervolt 是一种针对 Intel 处理器的新攻击方法,影响 SGX 技术

英特尔 发布 修复的微代码更新 漏洞 (CVE-2019-14607), 允许 通过操纵 CPU 中的动态电压和频率控制机制,对数据单元的内容造成损坏,包括隔离的 Intel SGX 飞地中用于计算的区域。 这种攻击称为 Plundervolt,可能允许本地用户升级其在系统上的权限,导致拒绝服务并获得对敏感数据的访问权限。

只有在 SGX 飞地中进行计算操作的情况下,这种攻击才是危险的,因为它需要系统的 root 权限才能执行。 在最简单的情况下,攻击者可以实现对 enclave 中处理的信息的扭曲,但在更复杂的情况下,使用 RSA-CRT 和 AES-NI 算法重新创建存储在 enclave 中用于加密的私钥的可能性并不存在。排除。 该技术还可用于在最初正确的算法中生成错误,从而在使用内存时引发漏洞,例如组织对已分配缓冲区边界之外的区域的访问。
用于执行攻击的原型代码 发表 在GitHub上

该方法的本质是为 SGX 计算期间发生意外数据损坏创造条件,而 enclave 中使用加密和内存身份验证并不能避免这种情况。 为了引入失真,事实证明可以使用标准软件接口来控制频率和电压,通常用于降低系统空闲时间期间的功耗并在密集工作期间激活最大性能。 频率和电压特性跨越整个芯片,包括隔离飞地中计算的影响。

通过改变电压,可以创造条件,使电荷不足以再生CPU内部的存储单元,并且其值发生变化。 与攻击的主要区别 罗汉默 RowHammer 允许您通过循环读取相邻单元的数据来更改 DRAM 内存中各个位的内容,而 Plundervolt 允许您在数据已从内存加载用于计算时更改 CPU 内部的位。 此功能允许您绕过 SGX 中对内存中的数据使用的完整性控制和加密机制,因为内存中的值保持正确,但在结果写入内存之前对其进行操作时可能会被扭曲。

如果在加密过程的乘法过程中使用此修改后的值,则输出会因密文不正确而被拒绝。 攻击者能够联系 SGX 中的处理程序来加密其数据,从而导致失败,积累有关输出密文变化的统计数据,并在几分钟内恢复存储在 enclave 中的密钥值。 原始输入文本和正确的输出密文已知,密钥不会改变,错误密文的输出表明某些位已被扭曲为相反的值。

使用差分故障分析方法(DFA、 差动故障分析) 能够 预测 AES 对称加密使用的可能密钥,然后通过分析不同集合中密钥的交集,确定所需的密钥。

多种型号的英特尔处理器均受到该问题的影响,其中包括具有 6 个处理器的英特尔酷睿 CPU
第十代,以及第五代和第六代Xeon E10、第一代和第二代Intel Xeon Scalable、Xeon D、
至强 W 和至强 E。

让我们提醒您,SGX 技术 (软件防护扩展)出现在第六代英特尔酷睿处理器(Skylake)中并且 报价 一系列指令,允许用户级应用程序分配封闭内存区域 - enclave,即使内核和运行在ring0、SMM和VMM模式下的代码也无法读取或修改其中的内容。 使用传统的跳转函数以及寄存器和堆栈的操作不可能将控制转移到飞地中的代码;为了将控制转移到飞地,需要使用专门创建的新指令来执行权限检查。 在这种情况下,放置在 enclave 中的代码可以使用经典的调用方法来访问 enclave 内部的函数以及调用外部函数的特殊指令。 Enclave 内存加密用于防止硬件攻击,例如连接到 DRAM 模块。

来源: opennet.ru

添加评论