论文分享 《Timing Side-channel Attacks and Countermeasures in CPU Microarchitectures》

Attack 概述

传统攻击(CONVENTIONAL ATTACKS)#

在传统攻击中,Attacker/Receiver 通常:

  • 与 Victim 共享硬件资源 (比如说 LLC,BP,Prefetcher 等)
  • 可以观察,改变微架构状态

传统攻击可分为:

  • 侧信道攻击:Attacker 从 Victim 无意间泄露出的信息 中复原 Secret。
  • 隐信道交流:读者可能会疑惑,为什么不说“隐信道攻击”呢?因为在隐信道中,Sender 和 Receiver 相互协作,通过微架构状态的改变进行交流。隐信道的情境下,两个实体更多的是交互,是“有意”的。

攻击步骤#

image

本文作者将传统攻击分为以下三步,如 Fig 1 所示:

  1. 定位“漏洞”:该漏洞包括“代码漏洞”(vulnerable code gadgets),即与 secrect 相关的代码片段;也包括“硬件漏洞”,即 Attack 与 Victim 共享的硬件资源,Attack 通过改变与观察共享硬件资源的状态改变,从而执行攻击。

  2. 观察微架构状态变化:在定位“漏洞”之后,Attacker 需要确定与 Victim 的“冲突域”(collision domain),该“冲突域”会对 Victim 的执行过程造成影响,从而改变微架构状态。
    读者或许对“冲突域”这个概念有些困惑,比如说某一个 Cache Set,Attacker 和 Victim 都要占用,那么这个 Cache Set 就是冲突域。同样的, TLB,Prefetcher 等各种硬件资源都会具有类似于 Cache 的结构,因此这些硬件资源也会存在“冲突域”。

  3. 恢复 Secret 信息: 通过观察微架构的状态变化,Attacker 可以获知 Victim 的内存访问“模式”(pattern),从而可以恢复 Secret 信息。

传统侧信道攻击#

传统侧信道攻击可分为基于 Cache 的攻击和不基于 Cache 的攻击。

基于 Cache 的传统攻击#

image

如 Table 1 所示,本文作者根据攻击类型、攻击条件对现有的基于 Cache 的攻击方法进行了分类,并总结了它们的攻击目标。

  1. 攻击类型

    • Eviction: 基于“驱逐”的攻击中, Attacker 需要用自己的代码或数据“驱逐”Cache Set。
    • Control:基于“控制”的攻击中,Attacker 需要和 Victim 共享内存,然后 Attacker 可以使用 clflush 或 prefetch 指令控制 Cache Set 的状态。
  2. 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 所共享。

隐信道交流#

image

如 Table 2 所示:

  • 易失性通道(Volatile Channel)在使用后不会在微体系结构中留下任何踪迹。在这种情况下,Sender 和 Receiver 必须同时执行,以争用硬件资源。易失性信道的根本原因是共享资源的有限带宽。
  • 持久的通道(Persistent Channel)在微体系结构状态中留下持久的足迹。持久通道的根本原因是共享微体系结构资源的存储空间有限。

下面介绍两个读者在阅读论文的过程中经常遇到的概念:

  • Time Resolution(时间分辨率):是指共享资源的状态变化引起的时间差。例如,传输“0”和“1”可能花费不同的时间。很明显,Time Resolution 越大,Receiver 获取信息的成功率越大,但是信息的传递效率越低。
  • Bandwidth (带宽):是指单位时间内传输数据的能力。

瞬态执行攻击 (TRANSIENT EXECUTION ATTACKS)#

瞬态执行攻击中,攻击者通常:

  • 在用户权限下执行“恶意代码片段”。
  • 不能操纵 Victim 的控制流或内存。

攻击步骤#

瞬态执行攻击中,攻击步骤如 Fig. 2 所示。

image
  • 准备:确定攻击目标并初始化相应条件。
  • 瞬态执行:执行 tigger 指令,从而触发 transient 指令的执行。
  • 恢复信息,根据 transient 指令在微架构上留下的踪迹来huifu Secret。

Speculation-based Attacks#

image

如 Table 4 所示,基于推测执行的攻击可分为以下三种类型:

  • Control-flow:当遇到分支指令时,CPU 根据分支预测其选择最可能的那条分支。
  • Data:诱导 Victim 使用错误数据执行指令【3】。
  • Address:CPU 使用 Store Forward 优化来执行攻击。

Exception-based Attacks#

基于 Exception 的攻击也可以说成是 Meltdown 类型的攻击。该类型的攻击可分为两种类型:

  • Memory access: 违反内存访问权限触发异常。
  • Register read: 访问寄存器触发异常(FP 寄存器,MSR 寄存器)。

Countermeasure 概述

针对传统攻击的防御#

image

针对瞬态执行攻击的防御#

image

未来研究方向

本文作者提出了几种未来的研究方向:

  • 增强现有攻击的某些指标,比如说传输率和时间分辨率。
  • 探索更通用的攻击环境,因为攻击的条件越苛刻,攻击的应用范围越小,成功率也更低。未来的研究可以集中在开发需要更少的特殊指令和共享资源的攻击,放松对平台和执行环境的要求。
  • 发现新的攻击 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 国际」许可协议进行许可。

posted @   Yin-SHT  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示