论文分享 《Timing Side-channel Attacks and Countermeasures in CPU Microarchitectures》
Attack 概述
传统攻击(CONVENTIONAL ATTACKS)#
在传统攻击中,Attacker/Receiver 通常:
- 与 Victim 共享硬件资源 (比如说 LLC,BP,Prefetcher 等)
- 可以观察,改变微架构状态
传统攻击可分为:
- 侧信道攻击:Attacker 从 Victim 无意间泄露出的信息 中复原 Secret。
- 隐信道交流:读者可能会疑惑,为什么不说“隐信道攻击”呢?因为在隐信道中,Sender 和 Receiver 相互协作,通过微架构状态的改变进行交流。隐信道的情境下,两个实体更多的是交互,是“有意”的。
攻击步骤#
本文作者将传统攻击分为以下三步,如 Fig 1 所示:
-
定位“漏洞”:该漏洞包括“代码漏洞”(vulnerable code gadgets),即与 secrect 相关的代码片段;也包括“硬件漏洞”,即 Attack 与 Victim 共享的硬件资源,Attack 通过改变与观察共享硬件资源的状态改变,从而执行攻击。
-
观察微架构状态变化:在定位“漏洞”之后,Attacker 需要确定与 Victim 的“冲突域”(collision domain),该“冲突域”会对 Victim 的执行过程造成影响,从而改变微架构状态。
读者或许对“冲突域”这个概念有些困惑,比如说某一个 Cache Set,Attacker 和 Victim 都要占用,那么这个 Cache Set 就是冲突域。同样的, TLB,Prefetcher 等各种硬件资源都会具有类似于 Cache 的结构,因此这些硬件资源也会存在“冲突域”。 -
恢复 Secret 信息: 通过观察微架构的状态变化,Attacker 可以获知 Victim 的内存访问“模式”(pattern),从而可以恢复 Secret 信息。
传统侧信道攻击#
传统侧信道攻击可分为基于 Cache 的攻击和不基于 Cache 的攻击。
基于 Cache 的传统攻击#
如 Table 1 所示,本文作者根据攻击类型、攻击条件对现有的基于 Cache 的攻击方法进行了分类,并总结了它们的攻击目标。
-
攻击类型
- Eviction: 基于“驱逐”的攻击中, Attacker 需要用自己的代码或数据“驱逐”Cache Set。
- Control:基于“控制”的攻击中,Attacker 需要和 Victim 共享内存,然后 Attacker 可以使用 clflush 或 prefetch 指令控制 Cache Set 的状态。
-
Cache 状态
- Tag State:即 Cache Line 的 Tag 状态
- Metadata State:“元数据”状态包含 cache coherence metadata (e.g., MESI [1]) and replacement metadata (e.g., LRU [2])
非 Cache 的传统攻击、#
除了 Cache 之外,FPU,AVX,TLB,BTB等也可利用从而进行攻击。
Cache 和这些硬件资源的共同点是,它们都被 Attacker 和 Victim 所共享。
隐信道交流#
如 Table 2 所示:
- 易失性通道(Volatile Channel)在使用后不会在微体系结构中留下任何踪迹。在这种情况下,Sender 和 Receiver 必须同时执行,以争用硬件资源。易失性信道的根本原因是共享资源的有限带宽。
- 持久的通道(Persistent Channel)在微体系结构状态中留下持久的足迹。持久通道的根本原因是共享微体系结构资源的存储空间有限。
下面介绍两个读者在阅读论文的过程中经常遇到的概念:
- Time Resolution(时间分辨率):是指共享资源的状态变化引起的时间差。例如,传输“0”和“1”可能花费不同的时间。很明显,Time Resolution 越大,Receiver 获取信息的成功率越大,但是信息的传递效率越低。
- Bandwidth (带宽):是指单位时间内传输数据的能力。
瞬态执行攻击 (TRANSIENT EXECUTION ATTACKS)#
瞬态执行攻击中,攻击者通常:
- 在用户权限下执行“恶意代码片段”。
- 不能操纵 Victim 的控制流或内存。
攻击步骤#
瞬态执行攻击中,攻击步骤如 Fig. 2 所示。
- 准备:确定攻击目标并初始化相应条件。
- 瞬态执行:执行 tigger 指令,从而触发 transient 指令的执行。
- 恢复信息,根据 transient 指令在微架构上留下的踪迹来huifu Secret。
Speculation-based Attacks#
如 Table 4 所示,基于推测执行的攻击可分为以下三种类型:
- Control-flow:当遇到分支指令时,CPU 根据分支预测其选择最可能的那条分支。
- Data:诱导 Victim 使用错误数据执行指令【3】。
- Address:CPU 使用 Store Forward 优化来执行攻击。
Exception-based Attacks#
基于 Exception 的攻击也可以说成是 Meltdown 类型的攻击。该类型的攻击可分为两种类型:
- Memory access: 违反内存访问权限触发异常。
- Register read: 访问寄存器触发异常(FP 寄存器,MSR 寄存器)。
Countermeasure 概述
针对传统攻击的防御#
针对瞬态执行攻击的防御#
未来研究方向
本文作者提出了几种未来的研究方向:
- 增强现有攻击的某些指标,比如说传输率和时间分辨率。
- 探索更通用的攻击环境,因为攻击的条件越苛刻,攻击的应用范围越小,成功率也更低。未来的研究可以集中在开发需要更少的特殊指令和共享资源的攻击,放松对平台和执行环境的要求。
- 发现新的攻击 Surfaces,不管是从攻击条件,攻击场景或是攻击模型。总之,寻找新的攻击的可能。
参考文献
【1】Yanan Guo, Andrew Zigerelli, Youtao Zhang, and Jun Yang. 2022. Adversarial prefetch: New cross-core cache side channel attacks. In S&P, 1458–1473.
【2】Wenjie Xiong and Jakub Szefer. 2020. Leaking information through cache LRU states. In HPCA, 139–152.
【3】Shuwen Deng and Jakub Szefer. 2021. New predictor-based attacks in processors. In DAC, 697–702.
作者:Esofar
出处:https://www.cnblogs.com/yinhaofei/p/18413307
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】