现代CPU的隐秘漏洞
撰文 | 程 伟
编辑 | 刘梦迪
一、背景介绍
近年来,利用微架构行为的攻击不断增多。这些攻击通过分析处理器的非恒定时间行为来获取敏感信息。例如,CacheBleed和MemJam等攻击利用缓存行冲突和4k混叠效应来实施侧信道攻击。为了增强系统安全性,CPU设计者引入了可信执行环境(Trusted execution environment,TEE),这些环境旨在保护代码和数据免受直接访问。尽管TEEs提供了更强的隔离和保护,但它们并不能防止微架构泄露。操作系统和虚拟机监视器可能不受信任,从而允许更强大的敌手模型。
在2024年的TCHES期刊第1期中,来自德国吕贝克大学的Florian Sieck和澳大利亚墨尔本大学的Zhiyuan Zhang等人提出了一种针对CPU微架构的子缓存行攻击方法——TeeJam。该方法利用了Intel SGX环境中的子缓存行泄露和4k混叠效应,观察到每个受害者内存读取的4字节内容,实现了针对CPU的子缓存行攻击[1]。
二、攻击原理
4k混叠效应是指当两个内存访问操作在虚拟地址空间的低12位相同,并且访问的字节偏移量有部分或完全重叠时,CPU会假设这两个操作可能访问相同的物理地址,从而产生冲突。这种冲突会导致CPU延迟加载操作,直到存储操作完成,引入了一个可测量的延迟。
根据Intel官方操作手册公开的协议,作者在同一个物理内核上运行两个线程,其中一个执行存储操作,另一个执行加载操作。实验设置如图所示:
4k混叠效应验证实验
经过研究作者发现,通过不断执行存储操作可以引发特定偏移地址的延迟加载操作,甚至在某些情况下这种延迟比Intel操作手册中描述的4k混叠效应更明显。作者通过该实验证明了4k混叠效应总是能够影响相邻4字节的偏移地址,在原有工作的基础上细化了泄露的空间分辨率,结果如图所示:
4k混叠效应验证实验结果
此外,作者不断增加存储操作的数量,以观察由于4k混叠效应引起的延迟时间变化,处理器所增加的延迟时间受内存缓冲区性能影响从而先增长后降低,实验结果如下图所示:
4k混叠效应性能损失实验结果
三、实验内容
TeeJam攻击结合了Intel SGX的单步执行能力,通过精心设计的4k混叠冲突和SGX单步执行,实现了对加密算法的高分辨率侧信道攻击。攻击者通过测量和分析由冲突引起的延迟,可以提取出敏感信息,从而破坏加密算法的安全性。
作者将存储(攻击者)和加载(受害者)操作的两个线程运行在同一个物理内核的2个逻辑内核上。攻击者线程通过写入特定的内存地址来引发4k混叠冲突,作者使用SGX-Step框架单步执行SGX enclave中的指令,并测量每个指令的执行时间。收集大量的执行时间数据后进行统计分析,通过比较冲突和非冲突情况下的执行时间差异,攻击者可以识别出哪些内存条目被访问。攻击原理如下图所示:
TeeJam攻击原理
四、实验结果
在Intel Core i5-10210U处理器上,TeeJam攻击引起的延迟平均为130个CPU周期,比MemJam攻击的70个周期延迟放大了两倍,这使得攻击更加高效。具体来说,攻击者能够通过单步执行的高时间分辨率来区分同一缓存行内不同位置的内存访问模式。实验结果对比如下图所示:
TeeJam攻击与MemJam攻击对比
此外,作者扩展了Heninger-Shacham密钥恢复算法,使其能够支持使用Carmichael函数的私钥,并改进了算法,使其能够从带有缺失信息和未对齐分区的能量迹中重建密钥。作者利用TeeJam攻击的高时间分辨率,通过测量由于4k混叠效应引起的延迟,利用改进算法成功从OpenSSL库中恢复了通过base64解码的4096位RSA私钥,这种泄露之前被认为对于较大密钥尺寸来说是实际不可利用的;通过观察AES最后一轮加密中T-Table的访问模式,结合已知的明文和密文,作者使用差分攻击成功恢复AES密钥,并减少了所需能量迹数量。实验结果如图所示:
TeeJam攻击RSA结果
TeeJam攻击AES结果
总结
在本文中,作者通过实验验证了TeeJam攻击的有效性,并展示了其在不同处理器上的适用性。与传统的微架构侧信道攻击相比,TeeJam攻击显著提高了侧信道攻击的效率,它能够以比之前攻击方法少得多的观察次数来恢复密钥,从而降低了攻击的复杂性和资源消耗,使得攻击在实际中更加可行。这一发现强调了即使是微小的泄露也能被完全利用,因此加密库在设计时必须确保真正的恒定时间实现。
参考资料
[1] Sieck F, Zhang Z, Berndt S, et al. TeeJam: Sub-Cache-Line Leakages Strike Back[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2024(1): 457-500.
往期精彩文章推荐
原文始发于微信公众号(数缘信安社区):针对CPU微架构的子缓存行攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论