当前位置:网站首页 > 网络安全培训 > 正文

用SVID接口对英特尔TEE实施故障攻击

freebuffreebuf 2022-03-28 545 0

本文来源:

无需专业故障注入设备的故障攻击

背景介绍

Intel Software Guard eXtensions (SGX) 是现代Intel处理器的一个特征,允许应用创建Enclave。SGX通过从可信计算基(Trusted computing base)中移除特权代码来增强应用的安全性。Enclave是CPU的处理内存中硬件隔离的一个区域,应用可以在此允许处理极度机密的细节,比如加密密钥、密码、用户数据等。使用SGX,开发人员可以创建一个可信执行环境,保护他们的数据和代码免受临时的威胁。

故障攻击通过改变芯片的物理操作环境(例如过电压和欠电压、超频、暴露于高温或低温或激光),在目标处理器中引发计算故障,例如跳过指令,这种攻击方式不依赖于软件漏洞的存在或任何代码执行权限。

基于以上信息,英国伯明翰大学的Zitai Chen、Georgios Vasilakis、Kit Murdock等人在USENIX security 2021上讨论了一种基于注入SVID数据包的故障注入攻击方式,利用SVID电压缩放接口改变CPU的核心电压,实现了对Intel SGX Enclaves的基于硬件的故障注入攻击。

已有工作

学术界针对可信执行环境的故障注入攻击已提出以下方法:

1、利用ARM处理器上的软件控制超频功能,从可信区域提取加密信息并绕过签名,从而在可信区域内执行代码;

2、通过特权软件控制CPU的核心电压。

2019年12月10日,英特尔发布安全更新,披露“VoltJockey”安全漏洞(INTEL-SA-00289),该漏洞便是利用特权软件控制CPU的核心电压获得敏感信息。

CPU的布局与电压变压器的连接如下图1所示,SGX对应CPU中安全的Enclaves,内存映射寄存器MSR 0x150是可以控制CPU电压的特权软件。攻击者可以在不受信任的环境下写入MSR 0x150寄存器,使Enclave在执行期间发生欠压,从而在某些操作(例如乘法、向量指令和加密操作)中触发位翻转,实现了针对SGX Enclaves的故障注入攻击。

图1 CPU的布局与电压变压器的连接

实验内容

英特尔针对上述漏洞发布更新,禁用上述软件接口。然而,在CPU和稳压器之间仍然存在物理连接,该物理连接为本次实验的关注点。

在现代计算机中,通常有一个或多个电压变压器连接到主板上的CPU。它们通过更改提供给CPU的核心电压(和其他电压)来管理系统的性能和功耗。当CPU以较低频率运行或处于空闲模式时,它向电压变压器发送命令以降低电压;反之,当CPU在重载或高频下工作时,它会请求电压变压器增加电压。

x86系统上电源的总体架构如下图2所示,电压变压器存在两个主要接口可用于改变CPU电压,从而进行欠压攻击,即SVID接口和SMBus接口。

图2 x86系统上电源的总体架构

首先要在电路板中找到攻击者感兴趣的接口位置。根据相关学者的经验,电压变压器通常放置在靠近CPU和大型开关晶体管和电感器的位置,一般通过目视检查和示波器探测会更易于识别。相关学者通过大量探测和逆向工程,检查电压调节器周围的所有电阻,找到图2中的正确信号和SVID总线的两个引脚,结果如下图3所示。

图3 电压变压器位置与SVID Bus

借助于逻辑分析仪的截图和若干测试,相关学者首先对SVID协议进行了逆向工程。同时,相关学者开发了VoltPillager,它是基于Teensy 4.0微控制器开发板的SVID命令注入定制设备,与总线并联,如下图4所示。基于逆向工程恢复出SVID协议,VoltPillager可以根据配置向目标电压变压器发送准备好的SVID包,改变CPU的核心电压,实现基于硬件的欠压攻击。

图4 VoltPillager命令注入

实验结果

4.1 通过基于硬件的欠压向SGX Enclave注入故障

在软件控制接口(MSR 0x150)已被禁用的情况下,相关学者使用VoltPillager将故障注入CPU,复现“VoltJockey”安全漏洞实验:主要关注它们的两个POC,即错误整数乘法(在用户空间中)和CRT-RSA解密/签名(在SGX enclave中运行)。

故障乘法实验在所有测试系统上获得了相同的错误结果;RSA签名/解密(SGX)实验成功地获得了错误签名,并确认这些错误值可用于计算RSA模数并使用Lenstra攻击恢复私钥。禁用软件欠压接口时,此攻击也成功;此外,端到端攻击实验使用mbed TLS库上开发了端到端攻击,单字节故障注入第八轮AES,然后执行差分故障分析(DFA)提取完整密钥。

4.2 通过欠压的延迟写入故障攻击

相关学者还描述了一类以前的研究中没有报道过的新的欠压引起的故障,即欠压似乎会短暂延迟对缓存的内存写入,因此相邻的指令仍会读取以前的值,出现的两种故障如下图5所示,其中故障1为越界下溢,由于故障影响了负责递减和直接比较循环计数器的代码;故障2为越界上溢,由于故障影响了上限的初始化。

图5 欠压延迟写入引起的越界

结论

本论文实现了直接违反SGX完整性保证的基于硬件的攻击,介绍了一种用于注入SVID数据包的开源硬件设备VoltPillager,证实了英特尔针对CVE2019-11157的对策并不能阻止具有物理访问权限的对手的故障注入攻击,这挑战了广泛接受的观点,即SGX可以保护Enclave完整性免受恶意云提供商的攻击。此外,还展示了通过基于硬件的欠压发现的新故障效应——短暂延迟内存写入。

参考资料

[1] Zitai Chen, Georgios Vasilakis, Kit Murdock, Edward Dean, David Oswald, Flavio D. Garcia. VoltPillager: Hardware-based fault injection attacks against Intel SGX Enclaves using the SVID voltage scaling interface[C]//30th USENIX Security Symposium (USENIX Security 21). 2021.

转载请注明来自网盾网络安全培训,本文标题:《用SVID接口对英特尔TEE实施故障攻击》

标签:英特尔软件接口

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表