可信执行环境软件侧信道攻击研究综述
杨帆
,
张倩颖
,
施智平
,
关永
软件学报 ![]() ![]() |
![]() |
随着计算设备在各种领域的应用, 计算设备中存储着越来越多的个人信息和秘密数据. 例如, 移动和嵌入式设备不仅绑定了用户身份证和银行卡, 而且增加了移动支付功能. 然而, 这些安全敏感的信息缺乏专用的保护机制, 容易被攻击者窃取, 从而给用户造成极其严重的安全隐患. 为了给用户应用程序提供一个安全的执行环境, 学术界提出了可信执行环境(trusted execution environment, TEE)的概念, 它通过隔离硬件和软件来保证应用程序执行环境的安全.
与传统的通用执行环境(rich execution environment, REE)不同, TEE位于主处理器内部并且与通用操作系统(rich operating system, Rich OS)并行运行, 在TEE中运行的应用程序称为可信应用(trusted application, TA), 在REE中运行的应用程序称为客户应用(client application, CA). 为了保证可信应用程序的机密性和完整性, TEE通过隔离计算设备的软硬件资源为安全敏感的应用程序提供了安全的执行环境. 目前, 产业界已经提出很多TEE隔离架构, 其中典型的有AMD SEV (secure encrypted virtualization)、ARM TrustZone和Intel SGX (software guard extensions). AMD SEV是一种加密虚拟机数据的安全技术, 可以实现虚拟机监视程序(hypervisor)与虚拟机之间的隔离, 但它缺乏对主内存页面的完整性保护; ARM TrustZone和Intel SGX技术实现了计算机硬件层面的隔离: ARM TrustZone技术在CPU、总线、MMU、cache、DRAM以及外设等系统资源上都实现了安全扩展, 从而保护计算设备中安全敏感的应用程序和数据不被攻击者非法窃取; Intel SGX通过增加一组与安全相关的指令集来创建被称为飞地(enclave)的可信环境, 飞地代码和数据存储在被硬件加密的飞地页面缓存(enclave page cache, EPC)中, 使得不同应用程序之间实现运行隔离. ARM TrustZone技术和Intel SGX技术通过隔离机制给应用程序提供了安全的运行环境. TEE虽然可以通过隔离机制来保障用户运行环境的安全, 但是攻击者仍可利用软件侧信道攻击来获取TEE内部的机密信息.
侧信道攻击(side-channel attacks, SCA)[1–3]的主要思路是通过一定的信道(channel)获取系统运行时产生的副作用信息, 然后利用副作用信息推理系统内部的机密信息[4]. 传统的侧信道攻击主要利用系统产生的物理方面的副作用信息, 包括音量、电磁辐射量、功耗大小、时间长短等, 然后通过声音[5]、电磁辐射[6]、功耗[7]、时间[8]等这些物理信道获取副作用信息, 最终推测系统内部的信息. 而软件侧信道主要将软件运行对CPU微体系结构的影响作为副作用信息, 通过cache等微体系结构构造软件信道获取微体系结构的副作用信息, 最终推测软件内部的机密信息. 因此软件侧信道与传统侧信道的不同主要体现在两个方面: 副作用信息的来源及其传输信道, 传统的侧信道攻击依赖系统产生的物理层面的副作用信息, 它获取这些副作用信息的方式是一些物理信道. 软件侧信道攻击依赖的副作用信息是软件运行对CPU微体系结构的影响, 其获得这些副作用信息的方式主要是基于cache等构建的软件信道.
为什么软件侧信道攻击能绕过当前隔离架构的保护而窃取到应用程序的机密信息呢? 原因是当前的隔离架构中微体系结构层面的优化组件会导致CPU运行时出现错误(例如, 预测错误)或发生系统事件(例如, page fault), 这些错误和系统事件会导致TEE在微体系结构层面留下与机密信息相关的痕迹. 当前的隔离架构沿用了通用执行环境中微体系结构层面的优化组件, 这些具有优化功能的微体系结构组件被用于改善CPU计算性能或提高计算设备的执行效率, 例如, 重排序缓冲区(reorder buffer)或CPU cache等. 如果优化组件发生错误, 系统会根据组件的设计逻辑处理该错误. 优化组件发生错误以及系统处理错误均在体系结构层面上不可见, 但会改变系统的微体系结构状态, 从而给攻击者留下侧信道漏洞. 在TEE隔离环境中, CPU缓存、MMU和DRAM等与内存访问相关的部件以及重排序缓冲区、预留站(reservation station)和退休缓冲区(retirement buffer)等与瞬态执行相关的部件可能出现侧信道漏洞, 与之对应的攻击有cache侧信道攻击、TLB侧信道攻击、page table侧信道攻击、DRAMA、瞬态执行攻击(transient-execution attack)等, 将它们统称为基于微体系结构的攻击.
本文首先介绍3种隔离架构的基本原理, 并总结现有的软件侧信道攻击的方法; 之后, 通过分析ARM体系结构中CPU指令流水线的执行过程, 提出一种基于CPU指令流水线的TEE攻击面分类方法, 利用这种分类方法, 可以将目前已知的所有TEE软件侧信道攻击进行归类; 然后, 讨论TEE软件侧信道攻击的威胁模型, 并按照攻击者能力的大小将其分为3类; 最后, 针对基于微体系结构攻击和组合攻击, 总结已有的防御措施, 并从攻击和防御两方面对TEE软件侧信道攻击研究的发展趋势进行展望.
1 背 景本节首先分别介绍ARM TrustZone、Intel SGX和AMD SEV这3种典型的隔离架构, 然后阐述了软件侧信道攻击的定义、基本原理以及与传统侧信道攻击的区别, 并对缓存侧信道攻击的方法和步骤进行详细分类.
1.1 ARM TrustZoneARM TrustZone是ARM处理器架构的硬件安全扩展[9–11]. ARM TrustZone技术将CPU逻辑上划分为普通世界(normal world)和安全世界(secure world), 每个世界都有自己的操作系统来管理该世界的应用程序, 监视器模式(monitor mode)负责普通世界和安全世界的上下文切换. 同时, 总线、MMU和cache都扩展了一个新的NS位, 用于标记当前CPU所处于的状态, TrustZone还增加了TZASC (TrustZone address space controller)、TZPC (TrustZone protection controller)和TZMA (TrustZone memory adapter)组件来增强外围设备的安全. 图1(a)描述了ARM TrustZone的架构图.
![]() |
图 1 3种典型的TEE隔离架构图 |
Intel SGX是x86体系结构的扩展[10]. 为了保护应用程序中关键代码和数据不被恶意软件破坏, SGX通过增加一组与安全相关的指令集来创建一种被称enclave的可信执行环境. 飞地代码和数据存储在保留内存区域(preserved random memory, PRM)的EPC中, 并使用内存加密引擎 (memory encryption engine, MEE)对EPC进行加密, 用于确保应用程序的机密性和完整性; EPC的访问控制由EPCM (enclave page cache map)负责, 它被用于存储每个页面的状态(如配置、权限、类型等), 任何non-enclave的应用程序都不能访问EPC的内容, 这使得恶意应用程序无法访问这些敏感数据, 使得不同应用程序之间实现运行隔离. 图1(b)描述了Intel SGX的架构图.
1.3 AMD SEV安全加密虚拟化SEV技术是AMD虚拟化体系结构的安全扩展[12], 它将内存加密技术与现有的AMD-V虚拟化体系结构相结合, 保护虚拟机免受物理攻击, 实现不同虚拟机之间以及hypervisor与虚拟机之间的隔离. AMD SEV采用的内存加密技术称为安全内存加密(secure memory encryption, SME), SME由嵌入式高级加密标准(advanced encryption standard, AES)引擎执行, 当数据写入DRAM或从DRAM读取数据时, 该AES引擎会根据不同VM的加密密钥(VM encryption keys, VEK)对其进行加密或解密操作. AMD SEV允许每个VM都拥有自己的VEK, VEK每次系统启动时随机生成并存储在SoC上的寄存器中, 由安全处理器AMD-SP管理. 图1(c)描述了AMD SEV的架构图.
由于AMD SEV技术存在设计缺陷, 目前针对AMD SEV的攻击都利用这种缺陷破坏SEV内存加密技术提供的机密性. 典型的设计缺陷包括: 基于ASID的不正确的内存隔离和访问控制缺陷、虚拟机控制块(VM control blocks, VMCB)未加密、nested page table缺乏保护、内存加密缺乏身份验证、I/O操作未受保护等. 为了解决这些安全问题, 以进一步增强AMD SEV的安全, AMD在SEV的基础上增加了SEV-ES和SEV-SNP两种安全扩展, 它们很好地抵御了先前被发现的针对AMD SEV的所有攻击.
1.4 软件侧信道攻击系统运行会对计算设备的物理实现造成影响, 这种影响将通过不同的channel传输出来. 传统的侧信道攻击将目标设备在运行期间产生的时间、声音、电磁辐射、功耗等物理信号作为channel, 通过收集这些物理信号分析机密信息. 这类传统的侧信道攻击不仅要求攻击者物理接触目标设备, 而且还需要花费大量时间对信号进行分析和噪声处理, 攻击成本高, 效率低下. 随着攻击技术的发展, 软件侧信道攻击成为目前主流的攻击技术之一, 该攻击依赖微体系结构泄露的副作用信息, 再通过软件方式将机密信息从channel中提取出来, 它不需要物理探测设备以及对物理信号进行解析. 一般来说, 传统的侧信道攻击大致可以分为两个阶段: (1)信号探测阶段, 攻击者利用物理器件探测目标加密设备在运行时产生的物理信号, 该物理信号可作为信息泄露的channel; (2)信号分析阶段, 由于系统执行不同的运算会导致channel信号发生变化, 因此攻击者可以通过分析收集到的channel信息恢复机密信息. 软件侧信道攻击可以分为3个阶段: (1)硬件分析阶段, 分析处理器硬件层面存在的安全缺陷, 找到能泄露受害者机密信息的微体系结构组件; (2)攻击构建阶段, 利用软件方式构建攻击, 将硬件安全缺陷泄露的机密信息提取到不同的微体系结构组件中; (3)提取机密信息阶段, 根据不同的微体系结构组件, 构建对应的侧信道攻击, 以微体系结构状态的形式(例如, cache侧信道攻击中的时间信息)提取机密信息.
在软件侧信道攻击中, 由于cache侧信道攻击技术[13-37]十分成熟、空间和时间分辨率高、噪声低, 因此攻击者更倾向于构建cache侧信道攻击提取机密信息. 根据攻击者对受害者访问能力的差异, 将cache侧信道攻击分为时间驱动攻击(time-driven attack)[38]、访问驱动攻击(access-driven attack)[39]以及踪迹驱动攻击(trace-driven attack)[40]. 在时间驱动攻击中, 攻击者仅了解受害者执行的总时间即可获取攻击者想要的信息. 另外, 根据攻击者的位置, 时间驱动攻击又可分为主动攻击和被动攻击; 在访问驱动攻击中, 攻击者监视受害者在运行期间是否与cache组发生交互行为, 通过测量cache hit和cache miss发生的时间来推断出受害者访问过的数据, 访问驱动攻击要求攻击者和受害者彼此共享缓存; 在踪迹驱动攻击中, 攻击者通过操纵cache来观测受害者进程在运行期间是否与cache行发生交互行为(例如, cache hit或cache miss), 基于此交互信息来获取机密信息, 踪迹驱动攻击比时间驱动攻击更高效、更复杂. 常见的cache侧信道攻击方法原理如后文表1所示.
![]() |
表 1 常见的cache侧信道攻击方法 |
计算设备中常见的攻击可以分为3类, 分别是软件攻击、电路板级物理攻击和芯片级物理攻击. 软件攻击指只执行纯软件的攻击, 实施这类攻击所需要的条件不高, 因此软件攻击最常见. 电路板级物理攻击指采用低成本硬件(例如, 探针)而发起的攻击, 它通过在电路板上挂载攻击设备以窃听或篡改计算设备上的信息[41]. 芯片级物理攻击指对芯片内部的机密信息进行攻击, 比如CPU根密钥, 这类攻击依赖的攻击设备昂贵, 并且对攻击者具有很高的要求, 攻击成本很高. 为了增强计算机系统的安全性, 学术界利用TEE技术给应用程序提供一个隔离的执行环境. TEE通常可以抵抗软件攻击和电路板级物理攻击, ARM TrustZone技术通过对系统资源进行隔离从而保证位于普通世界的恶意软件无法攻击安全世界的应用程序, 因此ARM TrustZone技术可以抵御软件攻击; Intel SGX技术和AMD SEV技术都可以抵御电路板级物理攻击, 因为Intel SGX利用内存加密技术保证飞地代码和数据加密存储在内存上, AMD SEV/SNP通过内存加密技术保护虚拟机数据在片外内存的安全性, 它们都将机密代码和数据以密文的形式存储在CPU外部, 因此可以抵御第2类攻击. 目前所有的TEE技术都没有对CPU芯片进行物理防护, 因此都不能抵抗芯片级物理攻击.
虽然现在主流的TEE技术可以通过硬件层面的隔离技术来保护应用程序免受软件攻击或电路板级物理攻击, 但它们未在处理器微体系结构层面进行隔离. 现代处理器从成本和效率角度出发, 在微体系结构层面使用了许多共享和优化机制, 系统运行会在微体系结构中遗留下一些副作用信息. 软件侧信道攻击者通过构建微体系结构的侧信道攻击, 就能将微体系结构层面的副作用信息提取出来并进一步推测得到软件运行时的机密信息.
软件侧信道攻击严重威胁着TEE隔离架构的安全, 但是当前学术界对TEE软件侧信道攻击面缺乏系统分析, 这不利于研究人员进一步挖掘TEE隔离架构的侧信道漏洞. 为了使TEE中软件侧信道攻击面的研究系统化, 本文提出一种基于CPU指令流水线的TEE攻击面分类方法.
CPU指令流水线的执行过程几乎涉及了计算设备全部的微体系结构组件, 通过分析ARM体系结构中CPU的指令流水线, 找出此过程可能出现侧信道攻击面的组件, 本文提出一种通用的TEE攻击面分类方法. 现代CPU执行指令的过程一般分为5个阶段: 取指令(instruction fetch, IF)、指令译码(instruction decode, ID)、指令执行(execution, EX)、内存访问(memory access, MEM)和结果写回(writeback, WB). IF阶段CPU将一条指令从内存中取到指令寄存器, 此过程中可能涉及到的组件有cache、分支预测单元(branch prediction unit, BPU). 取出指令之后, 计算机进入ID阶段, 在该阶段, 指令译码器对取出的指令进行翻译, 识别并区分出不同的指令, 此阶段尚未发现侧信道漏洞. 当指令译码完成之后, 接着进入EX阶段, 此阶段会完成指令的具体任务, 此过程可能涉及到的组件有瞬态执行相关部件(如, reorder buffer, reservation station以及retirement buffer). 根据指令需要, 有可能要访问内存, 读取操作数, 这样就进入了内存访问(MEM)阶段, 此阶段可能涉及到的组件有TLB、page table、cache、DRAM等. WB阶段会把EX阶段的运行结果写回到CPU的内部寄存器或内存中. 图2描述了CPU指令流水线过程中可能用到的组件.
![]() |
图 2 ARM体系结构中CPU指令流水线过程所需组件 |
利用上述TEE攻击面分类方法, 可以将目前已知的所有TEE软件侧信道攻击方法进行系统归类. 目前已经发现的TEE软件侧信道攻击方法包括: 瞬态执行攻击、分支预测攻击、基于TLB的攻击、cache侧信道攻击、基于page fault的攻击和基于DRAM的攻击等, 与这些攻击对应的组件有: 重排序缓冲区、预留站、退休缓冲区、分支预测器、TLB、cache、page table和DRAM. 表2按照通用的TEE攻击面分类方法对目前已知的软件侧信道攻击进行系统分类.
![]() |
表 2 指令流水线过程中所需组件以及对应的TEE软件侧信道攻击 |
按照上述对软件侧信道攻击的分类标准, 本节剩余部分将分别展示不同的TEE软件侧信道攻击. 首先, 根据软件侧信道攻击的3个通用步骤(参考第1.4节)对不同的TEE软件侧信道攻击技术进行归纳总结. 具体来说, 将微体系结构组件划分为CPU内部的优化组件、分支预测器、存储结构和操作系统功能组件这4类, 那么软件侧信道攻击技术与这4类微体系结构组件之间的关系如下: 瞬态执行攻击依赖CPU内部的优化组件, 分支预测攻击利用分支预测器泄露机密信息, TLB侧信道攻击、cache侧信道攻击和基于DRAM的侧信道攻击与存储结构相关, 基于page table的侧信道攻击通过操作系统功能组件获取机密信息, 组合攻击实质上是物理攻击与软件侧信道攻击相结合形成的攻击手段. 然后分别阐述不同的TEE软件侧信道攻击的技术原理和攻击实例.
(1) 瞬态执行攻击[42–54]: 现代处理器中微体系结构层面的优化组件(例如, 重排序缓冲区)可以泄露体系结构层面无法访问的信息; 攻击者通过构建数据提取或数据注入两种软件侧信道攻击方法, 将机密信息提取到微体系结构组件中; 最后, 根据不同的微体系结构组件, 构建基于微体系结构的侧信道攻击提取机密信息. 常见的瞬态执行攻击有Meltdown-type的数据提取攻击、Spectre-type的分支诱导攻击以及基于逆向推测性执行(reversely speculative execution)的数据注入攻击.
(2) 分支预测攻击[52,55–62]: 在上下文切换期间, 隔离架构不会刷新分支预测器BPU, 因此BPU中遗留了与受害者相关的机密信息; 攻击者以软件形式将BPU中受害者的分支信息显式地缓存在其他攻击者能够访问的微体系结构组件中; 通过构建基于微体系结构的侧信道攻击提取受害者的分支信息, 将分支信息与受害者源码中的各种分支结构相互对比, 攻击者可以推断出TEE中受害者细粒度的控制流. 常见的分支预测攻击有基于分支目标缓冲区的“Branch Shadowing”攻击和基于定向分支预测器的BranchScope攻击.
(3) TLB侧信道攻击[63,64]: 由于TLB组件能够在攻击者和受害者之间共享, 因此TLB在理论上存在TEE软件侧信道漏洞. 攻击者通过监视隔离架构上下文切换期间TLB条目的变化, 可以推断出受害者访问的TLB条目.
(4) cache侧信道攻击[65–74]: 隔离架构中的cache软件侧信道攻击类似于在普通处理器(即, 通用执行环境)中的cache侧信道攻击, 当受害者执行完毕之后, 会将数据遗留在cache中; 攻击者通过测量系统事件发生的时间(例如, cache hit/cache miss的时间)或监视受害者在执行期间的访问轨迹等方法来获取隔离架构的机密信息. 常见的cache侧信道攻击有Prime+Count攻击、缓存定时攻击(cache-timing attack)、CacheZoom攻击等.
(5) 基于page table的侧信道攻击[75,76]: 攻击者通过操纵受害者的页表条目(page table entry, PTE)的某些标志位可以泄露其控制流和数据访问模式, 这类攻击的应用场景一般是Intel SGX. 首先, 根攻击者操纵受害者飞地的PTE的某些标志位(例如, “present”标志位), 使得受害者飞地再次访问该页时发生page fault; 然后, 受害者飞地执行完后, 攻击者通过是否发生page fault来判断受害者飞地是否访问过上述被操纵的页, 以此推断受害者飞地与机密信息相关的数据流访问模式. 常见的基于page table的攻击有Controlled-Channel攻击、SPM攻击等.
(6) 基于DRAM的侧信道攻击[77–79]: DRAM中row buffer的作用类似于cache, 攻击者利用row buffer造成的内存访问的时间差推断受害者的内存访问信息. 在Intel SGX中, 飞地的所有信息被存储在处理器保留内存PRM中的安全页面缓存EPC中, 飞地外部的应用程序无法访问EPC. 因此, 要在隔离架构中构建基于DRAM的侧信道攻击, 攻击者和受害者必须满足共享同一个DRAM row的条件. 常见的基于DRAM的侧信道攻击有cache-DRAM攻击.
(7) 组合攻击[80]: 组合攻击是微体系结构攻击与其他攻击相结合而形成的攻击手段, 例如, 缓存侧信道攻击与总线监听技术相结合. 常见的组合攻击有Membuster攻击.
2.1 瞬态执行攻击现代处理器之所以拥有很高的计算性能, 与其内部复杂的微体系结构优化密切相关. 微体系结构级别的优化会预测控制流甚至重排序指令流, 使得指令流水线时刻保持满载状态, 从而提高了处理器的执行效率. 然而, 这些为了提升CPU计算性能而在微体系结构上做出的优化有时可能会导致CPU运行时发生错误, 例如, 预测错误. 发生错误之后, CPU会刷新指令流水线并丢弃在发生错误期间CPU处理的指令的所有体系结构级别的状态信息. 换句话说, 从发生错误到CPU发现这种错误期间执行的任何指令, 都是暂时执行的, 以后还会被丢弃掉, 所以称这段时期执行的指令叫瞬态执行[42-46]. 瞬态执行的结果永远不会提交到体系结构层面, 但可能会在微体系结构状态中留下痕迹, 攻击者通过微体系结构状态信息就能提取到机密信息, 这就是瞬态执行攻击.
原始的瞬态执行攻击有Meltdown攻击和Spectre攻击, 它们的攻击目标是普通的处理器(即, 通用执行环境), 并没有涉及到可信执行环境. 研究人员发现, 可信执行环境中处理器内部微体系结构的优化组件会给TEE隔离架构带来安全隐患, 攻击者通过微体系结构的状态信息可以提取TEE隔离架构的机密信息. TEE隔离架构中的瞬态执行攻击可以分为Meltdown-type的数据提取攻击、Spectre-type的分支诱导攻击以及基于逆向推测性执行的数据注入攻击: Meltdown-type攻击利用了处理器乱序执行(out-of-order execution, OoOE)的能力提取体系结构层面无法访问的数据, Spectre-type攻击利用了处理器推测执行(speculation execution)的能力诱导受害者分支偏离正确的执行路径, 逆向推测性执行攻击将攻击者控制的数据注入到微体系结构数据缓冲区或预测器中进而提取机密信息.
● Meltdown-type攻击
基于Meltdown-type的数据提取攻击有Foreshadow攻击、ZombieLoad攻击[48]和RIDL攻击[49], 它们利用处理器在约束条件下(例如, 发生页面错误或微码辅助)会瞬态读取L1D cache或行填充缓冲区(line-fill buffer, LFB)中的旧值(stale value)的特点, 从而提取受害者机密信息. 下面以Foreshadow攻击为例进行介绍.
比利时荷语鲁汶大学的imec-DistriNet研究团队提出了一种Foreshadow攻击[47], 该攻击利用了Intel处理器中乱序执行导致的错误而从CPU缓存中窃取飞地的机密信息. Foreshadow攻击是一种Meltdown-type攻击, 基本的Foreshadow攻击分为缓存飞地机密信息、瞬态执行和接收机密信息这3个阶段. 在Intel SGX中, 只有当数据驻留在L1D cache中时, 处理器由于乱序执行才会将数据转发给后续的瞬态执行操作. 因此Foreshadow攻击首先运行受害者飞地, 在飞地机密信息缓存到L1D cache中时利用SGX-Step中断技术或超线程技术异步中断飞地将机密信息暂时保留在L1D cache中; 在Foreshadow攻击的第2个阶段, 无特权的攻击者需要通过执行错误指令以触发处理器进入瞬态执行状态(例如, 普通应用程序通过指针访问受害者飞地的内存). 但在SGX中, 普通应用程序访问飞地内存不会产生page fault且读取的数据会被伪值取代. 因此攻击者利用“mprotect”系统调用撤销对目标受害者飞地的访问权限, 这样对飞地页面的任何访问都会产生page fault, 从而为后续指令的执行创造一个瞬态执行窗口. 另外, 与Meltdown攻击不同, Foreshadow攻击在瞬态指令流执行期间, 机密信息会被转换成oracle缓冲区中的slot entry; 第3阶段, 处理器发生page fault, 将调用攻击者的异常处理程序. 该程序会Reload所有的oracle slot, 并计算每个slot的加载时间, 其中与机密信息相关的slot的加载时间最短. 通过实验测试, 无特权攻击者的成功率为96.82% (使用TSX); 通过对Intel Launch Enclave进行实际攻击, 经过13次page fault可以无噪声地提取128位密钥; 在对Intel Quoting Enclave进行的攻击中, 经过14次page fault可以提取128位密钥, 攻击成功率达100%.
● Spectre-type攻击
基于Spectre-type的分支诱导攻击[50-53]包括SgxPectre攻击和SpectreRSB攻击[51]: SgxPectre攻击利用了处理器中分支预测单元在不同安全域上共享的特点, 使得攻击者容易诱导受害者分支的执行路径, 从而导致推测性执行攻击; SpectreRSB则利用返回堆栈缓冲区(return stack buffer, RSB)在不同安全域上共享的特点, 通过不受信任的攻击者操纵RSB使得执行飞地时发生错误推测从而导致推测性执行攻击. 下面以SgxPectre攻击为例进行介绍.
俄亥俄州立大学的研究团队提出了一种SgxPectre攻击[53], 它利用分支指令解析(resolution)的延迟与推测性执行内存引用之间存在的瞬态执行攻击窗口来生成侧信道痕迹从而读取内存内容. SgxPectre攻击是一种Spectre-type的攻击, 它可以分为5个步骤: 毒化分支目标缓冲区(branch target buffer, BTB)、扩大瞬态攻击窗口、设置飞地的寄存器、飞地小工具执行以及侧信道攻击提取机密信息. 第1步, 攻击者构造一个间接跳转指令, 该指令的源地址和目标地址的低32位与受害者飞地中的目标分支指令地址相对应. 利用此跳转指令训练BTB, 使得当受害者飞地在目标分支指令处执行时, 会瞬态更改飞地代码的控制流到攻击者提前选择好的目标地址处; 第2步, 攻击者利用具体的方法扩大瞬态执行攻击的窗口, 例如, 通过刷新受害者的分支目标地址以延长分支目标指令退休的时间等. 通过这些方法可以最大限度地延长分支指令退休时间并减少代码小工具瞬态执行的时间, 从而扩大瞬态执行窗口; 第3步, 在EENTER进入飞地之前, 攻击者设置小工具代码中使用的飞地寄存器, 使它们能够读取目标飞地内存的机密信息. 这些寄存器在进入飞地后会一直由攻击者控制, 直到被飞地代码修改为止; 第4步, 飞地代码开始执行, 由于BTB已经被攻击者毒化, 因此在解析源地址处的ret指令时, 飞地会根据BTB中的entry推测性地执行目标地址. 在目标地址处的代码利用第3步设置的寄存器值对目标地址的机密信息进行编码, 这些编码值与受攻击者控制的数组entry相对应, 这样目标地址处的数据就等于数组entry; 第5步, 使用Flush+Reload侧信道攻击提取机密信息. 实验表明, SgxPectre攻击可以从飞地中窃取封装密钥和证明密钥, 从而严重破坏Intel SGX的机密性.
● 注入式攻击
基于逆向推测性执行的数据注入攻击有加载值注入(load value injection, LVI)攻击, 它利用处理器在约束条件下(例如, 页面偏移量相同)会导致瞬态转发L1D cache、LFB、存储缓冲区(store buffer, SB)中stale value的特点, 从而开发了逆向推测性的数据注入攻击.
比利时荷语鲁汶大学的研究团队提出了基于LVI的新型攻击[54], 它采用基于注入的方法来逆向研究推测性执行导致的微体系结构数据泄露. LVI攻击是一种Meltdown-type的攻击, 完整的LVI攻击分为4个阶段: 准备微体系结构缓冲区、错误的瞬态转发、小工具编码机密信息和侧信道分析接收机密信息. 在第1阶段, LVI攻击者以微体系结构组件作为瞬态数据注入源, 将攻击者控制的数据填充到相应的微体系结构组件中; 第2阶段, 由于Intel CPU中的优化组件(例如L1D cache或存储缓冲区等)在满足一定的约束条件(例如, 对于存储缓冲区, 其约束条件为: 当可信加载导致页面错误时, 如果该加载操作的页面偏移量与最近的存储操作的页面偏移量一致, 那么该加载会从存储缓冲区中获取攻击者的数据)时可以导致错误的瞬态转发, 因此攻击者在受害者飞地之外通过修改飞地的堆栈PTE等操作, 使飞地在下一次执行与堆栈相关的操作时产生页面错误或微码辅助. 当受害者飞地再次访问相应的堆栈或页时会导致错误的瞬态转发, 从而将攻击者的数据注入到受害者飞地的瞬态执行流中; 第3阶段, 攻击者必须在受害者飞地代码中找到满足LVI攻击条件的全部小工具, 它们能将第2阶段注入的攻击者的数据进行编码或重定向控制流, 并将计算结果保留在微体系结构组件中; 第4阶段, 根据微体系结构组件进行相应的侧信道分析, 从而恢复受害者飞地的机密信息. LVI攻击很难被防御, 能抵御Meltdown攻击的处理器也无法防御LVI攻击(因为零值也可以被LVI攻击者利用), 该团队展示了基于编译器的防御措施会造成2–19倍的运行开销.
2.2 分支预测攻击现代计算机按照流水线方式执行指令. 处理器在处理分支指令时, ID阶段才能知道该指令是否为条件分支指令, 待分支指令通过了EX阶段才会把下一条指令送入流水线的IF阶段, 这大大降低了处理器的处理效率. 分支预测是现代处理器在程序分支指令执行前预测其结构的一种机制, 采用分支预测, 处理器会提前预测分支的走向, 并且基于预测结果进行后续的取指和译码工作. 然而, 在上下文切换期间, 分支预测器BPU并不会被处理器刷新. 也就是说, BPU中可能保留有隔离架构的机密信息, 这些信息会被攻击者以软件侧信道方式窃取, 从而导致严重的安全隐患[55-62].
在现代处理器中, BPU一般由两部分组成, 分别是BTB和定向分支预测器(directional branch predictor): BTB预测分支的目标地址, 定向分支预测器预测分支的方向(taken或not taken). BTB和定向分支预测器都能泄露隔离架构的机密信息.
美国佐治亚理工学院的研究团队提出了“Branch Shadowing”攻击[56], 它利用BTB中遗留的受害者飞地的分支目标信息来泄露飞地机密信息. 该攻击首先通过Branch Shadowing代码引入组冲突, 然后探查共享的分支目标缓冲区BTB条目, 并根据执行时间确定目标分支指令的历史记录是否存储在CPU内部的BTB中, 最后通过最近分支记录(last branch record, LBR)间接地显示enclave的分支信息. “Branch Shadowing”攻击可以分为4步: 第1步, 代码分析阶段, 攻击者通过详细分析受害者飞地的源代码, 找到所有类型的分支及其目标地址; 第2步, 构建“Branch Shadow”, 根据源代码中的分支类型(条件分支、无条件分支以及间接分支), 为每种分支编写与之对应的影子代码, 不同的分支对应的影子代码不同; 第3步, 探测分支历史, 在Intel SGX中, 由于BPU被不同安全域的应用程序共享, 并且在上下文切换期间没有清除分支历史, 使得BPU中遗留了飞地的机密信息. 为了从BPU中获得受害者飞地的分支历史信息, 攻击者首先执行飞地代码. 当执行完某种分支指令后, 与该指令相关的信息被缓存在BPU中. 然后攻击者中断飞地执行, 转而执行与该分支对应的影子代码. 影子代码中分支的执行结果与BPU中的分支历史密切相关: 如果飞地代码的分支指令发生跳转(taken), 那么处理器会根据此分支历史预测性地执行影子代码, 影子代码的分支指令也会发生跳转. 预测执行的结果会通过LBR显式地记录下来, 根据LBR的记录结果可以知道受害者飞地细粒度的分支执行流; 第4步, 通过分析这些分支信息推断飞地执行的全部控制流. 实验结果表明, 该攻击能以99.8%的准确率提取RSA密钥.
美国威廉与玛丽学院的研究团队开发的BranchScope攻击[52]是另一类基于定向分支预测器的侧信道攻击, 它与基于BTB的攻击类似. 攻击者通过操纵定向分支预测器来强制攻击者与受害者分支之间发生冲突, 从而推断受害者条件分支指令的方向. 此外, NCC Group的研究人员[55]将cache侧信道攻击与分支预测侧信道攻击相结合, 开发出一种针对ARM TrustZone的低噪声、高时间分辨率和高空间分辨率的攻击, 并成功从高通公司硬件支持的密钥库中恢复了256位密钥.
2.3 TLB侧信道攻击现代处理器利用转换后备缓冲区 (translation lookaside buffer, TLB)来缓存虚拟地址与物理地址之间的转换关系. 在某些设计中, TLB是竞争性共享的微体系结构资源, 而任何竞争性共享的资源都能产生侧信道. 目前, 学术界没有出现实际的针对TEE的TLB侧信道攻击案例, 但TLB在理论上是存在侧信道漏洞的.
荷兰阿姆斯特丹自由大学的研究团队首先提出了一种针对Intel处理器(非SGX)的TLBleed攻击[64]. 在此基础上, 中国科学院信息工程研究所的研究团队[63]系统地分析了Intel SGX的侧信道攻击面. 其中TLB可能存在的侧信道攻击面有两类: 第1类攻击面是由于处理器启用超线程时TLB能够在受害者进程与攻击者进程之间共享. 这样, 与受害者进程相关的TLB entry会受到攻击者进程的影响从而产生侧信道漏洞; 第2类攻击面是由于Intel处理器通过启用TLB条目中的“进程上下文标识符(process-context identifier, PCID)”字段来允许在上下文切换期间有选择地刷新TLB条目. 这样, 处于飞地之外的攻击者可以在上下文切换期间根据已刷新的TLB条目推断飞地进程的执行. 然而, 该研究团队没有针对该TLB攻击面构建基于TLB的侧信道攻击, 只是将TLB攻击面作为刷新TLB的手段应用到该团队开发的基于page table的SPM (sneaky page monitoring)攻击中.
2.4 cache侧信道攻击在现代的CPU架构中, 处理器的处理能力和内存访问之间的速度不匹配, 这个问题严重制约了计算机处理能力的提高. 缓存的出现就是为了匹配CPU和内存之间的速度问题, 即计算机把处理器最近用过的数据存在cache中, 当处理器再次访问该数据时可以在cache中直接获取. 基于cache的攻击大都利用了传统cache侧信道攻击技术, 通过测量受害者的执行时间或监视受害者在执行期间的访问轨迹等方法来获取机密信息[16, 65-74].
美国亚利桑那州立大学的研究团队提出Prime+Count缓存侧信道攻击技术[16], 该技术能在ARM TrustZone中构建跨世界的隐蔽信道. 该攻击分为3步: 第1步, Prime阶段, 攻击者通过连续访问自身的地址空间从而使攻击者的数据完全填充cache; 第2步, 等待受害者执行, 在受害者执行过程中如果TA发生内存访问, 将会逐出攻击者cache行中的数据并将TA的数据填充进去; 第3步, Count阶段, 攻击者再次访问其自身的地址空间, 并根据PMU对发生变化的cache行进行计数. 这种攻击技术空间分辨率较差但噪声低. 德国埃朗根-纽伦堡大学的研究团队证明了Intel SGX容易受到缓存定时攻击[66]. 该团队在Intel平台上启用了超线程技术, 攻击者和受害者是位于同一个进程的不同线程. 受害者线程在飞地中运行加密程序, 产生加密密钥. 攻击者线程是飞地之外的普通应用程序, 它通过读取性能监视计数器(performance monitoring counters, PMC)来进行Prime+Probe缓存侧信道攻击. 实验表明, 此缓存定时攻击能以不到10 s的时间获得Intel SGX飞地的AES密钥.
另外, 还有一些团队也做出了与根级缓存定时攻击(root-level cache-timing attack)类似的成果, 例如, 美国伍斯特理工学院的研究团队提出的用于分析SGX飞地内存访问的攻击CacheZoom[67], 德国达姆施塔特工业大学的研究团队提出的针对Intel SGX的缓存侧信道攻击[74]等.
2.5 基于page table的侧信道攻击当应用程序访问物理内存时, CPU会发出逻辑地址(虚拟地址)交由MMU进行内存寻址, 找到物理内存上的内容. 当要访问的页面不在内存中时, 处理器发生page fault, 由OS负责将缺失的部分装入物理内存. 基于page table的攻击大都针对Intel SGX隔离架构. 在SGX中, 内存管理留给了不可信的OS, OS可以在enclave执行的任意时刻强制设置飞地页面为不可访问. 此时, enclave对该页面的任何访问都会触发page fault, 攻击者根据发生page fault的飞地页面可以获取与机密信息有关的enclave控制流和数据访问模式.
中国科学院信息工程研究所的研究团队[63]按照飞地页面PTE中不同的标志位, 将Intel SGX中基于page table的侧信道漏洞系统地分为4类: 第1种漏洞是根攻击者通过清除受害者飞地PTE中的“present”标志位来收集飞地页面的访问踪迹, 从而推断出依赖于机密信息的控制流或数据访问模式; 第2种漏洞是攻击者通过监视PTE中的“accessed”标志位的更新检测受害者飞地访问的页面; 第3种漏洞是监视PTE中的“dirty”标志位, 根据该标志位是否发生变化推断受害者飞地对页面的内存写操作; 第4种漏洞是利用PTE中的其他位, 例如一些保留位, 攻击者利用这些位来触发page fault以探测飞地页面的机密信息. 美国德克萨斯大学奥斯汀分校的研究团队提出了Controlled-Channel侧信道攻击[75, 76], 它利用第1种漏洞造成的page fault来探测飞地页面的数据访问模式. 另外, 该团队开发了一种利用PTE中“accessed”标志位的基于page table的侧信道攻击, 并将该侧信道攻击称为SPM攻击. SPM攻击者是飞地外运行的系统级进程, 它可以检查每个page table条目的“accessed”标志位. 当飞地访问该页面时, “accessed”标志位被置1, 攻击者会将PTE的置位信息记录下来, 然后将其重置为0, 从而达到反复检测飞地页面访问踪迹的目的. 然而, 飞地在第1次页表遍历之后, 相应的PTE信息会被缓存在TLB中. 下次飞地再访问该页面时, PTE中的“accessed”标志位不会发生变化, 攻击者也无法探测飞地对同一页面的第2次页面访问. 为了解决此问题, 攻击者在不同的CPU核中生成处理器间中断(inter-processor interrupt, IPI)以导致飞地进入异步飞地退出(asynchronous enclave exits, AEX), 从而刷新与当前PCID关联的TLB条目. 上述SPM攻击称为基本的SPM (basic SPM, B-SPM)攻击. 由于B-SPM存在时间分辨率不高以及对同一页面的重复访问会触发较高的中断频率等问题, 该团队提出了相应的优化方案: 时间增强型SPM (timing-enhanced SPM, T-SPM)攻击通过测量飞地中不同页面上两条指令之间的执行时间来推断页面中分支的执行方向; 超线程SPM (hyper threading SPM, HT-SPM)攻击通过打开超线程功能即可清除TLB而不触发任何中断.
2.6 基于DRAM的侧信道攻击基于DRAM的攻击与DRAM本身的结构有关. DRAM通常由多个channel组成, 一个channel被分为许多个DIMM, 每个DIMM通常有两个rank, 不同rank上有许多DRAM chip, 每个chip可以分为多个bank, 一个bank可以看成一个矩阵的形式, 每个bank中都有一个row buffer用来缓存最近访问过的某个row. 其中每个row通常为8 KB, 可以由两个4 KB的页共享. 同一个bank中的row是否位于row buffer中会给内存访问造成时间差异, 根据时间差异极容易判断出当前受害者的内存访问情况[63, 77-79].
奥地利格拉茨工业大学的研究团队首次提出了基于DRAM的侧信道攻击: DRAMA攻击[77]. 基于此攻击, 中国科学院信息工程研究所的研究团队[63]在Intel SGX隔离环境中成功实施了针对Intel SGX的跨飞地DRAMA攻击和cache-DRAM攻击. 跨飞地DRAMA攻击可以捕获飞地进程是否访问了某个物理地址的信息. 在实施攻击之前, 攻击者通过逆向工程DRAM的寻址算法, 在同一个DRAM bank中分别找到受害者飞地的目标地址a、与a共享同一个row的地址b以及不与a共享同一个row的地址c. 实施DRAMA攻击具体可分为3步: 首先, 攻击者多次访问物理地址c, 使得row buffer中缓存了被地址c占据的row; 其次, 等待受害者执行; 最后, 攻击者访问物理地址b并测量其访问时间. 如果b的访问时间较短, 说明此时row buffer中缓存的是被地址a和b占据的row, 因此能够判断受害者飞地访问了目标地址a. 然而, 跨飞地DRAMA攻击存在很多诸如空间粒度粗糙和噪声高等限制条件. 为了解决这些问题, 该团队在上述攻击的基础上提出了cache-DRAM攻击. cache-DRAM攻击的攻击者是两个线程, 其中一个线程在飞地之外, 执行Prime+Probe侧信道攻击, 该攻击的目的是将缓存在cache中的目标地址a清除出去, 以便飞地每次都能在DRAM中访问地址a; 另一个线程是恶意飞地程序, 与受害者飞地程序在同一个飞地中, 用于执行跨飞地DRAMA攻击. 这样, 通过测量地址b的访问时间即可确定受害者飞地程序是否访问了目标地址a.
2.7 组合攻击除了基于微体系结构的侧信道之外, 研究人员将其他类型的攻击与微体系结构攻击相结合, 构成一种新颖的组合攻击. 这类攻击吸收了微体系结构攻击的优势, 足以攻破当前TEE隔离架构而泄露大量敏感信息. 组合攻击最典型的例子就是将物理攻击与cache侧信道攻击相结合从而破坏了Intel SGX的Membuster攻击.
美国加利福尼亚大学伯克利分校的研究团队通过片外监听内存总线、片上制造内存访问发生cache miss的方式构造了一种Membuster攻击[80]. Membuster攻击引入了关键页面白名单、缓存压缩、基于oracle的模糊匹配算法这3种技术, 从而使攻击具有无干扰、细粒度、隐蔽的特性. Membuster能以很高精度窃取enclave中应用程序的机密信息. 首先, 在受害者计算机系统boot之前, 攻击者需要在DIMM插槽上安装插入器并等待受害者执行, 然后根据受害者的执行情况收集DRAM信号并通过插入器将收集到的信号存储起来; 其次, 利用从DRAM插入器收集到的信息, 对Intel CPU的寻址算法进行逆向工程, 得到物理地址与DRAM之间的映射关系, 之后, 通过修改SGX驱动程序, 获取物理地址与虚拟地址之间的映射关系; 然后, 利用关键页面白名单、跨核Prime和缓存压缩技术来增加缓存未命中率, 从而导致飞地访问DRAM的频率增加; 最后, 通过基于oracle的模糊匹配算法降低噪声, 从而获取飞地细粒度的机密信息.
3 威胁模型可信执行环境通过减少可信计算基(trusted computing base, TCB)限制安全敏感的应用程序与恶意应用程序之间的交互, 从而保证计算设备在隔离的可信执行环境中存储和处理机密信息. TEE中的TCB通常仅包含CPU或少量代码. 在ARM TrustZone中, CPU、可信操作系统和监视器Monitor是可信的组件, 除上述组件之外, 其余组件均被视为受攻击者控制而被排除在TCB之外. Intel SGX的可信计算基更小, 仅包括CPU, 除CPU之外的其他所有组件都不可信. 尽管通过减小可信执行环境的TCB可以减少TEE中的软件漏洞, 但无法抵御TEE软件侧信道攻击.
当前针对TEE的软件侧信道攻击中, 包含3类不同能力的攻击者, 分别是用户级攻击者、内核级攻击者以及物理攻击者. 用户级攻击者不需要具备任何特权级权限, 仅通过用户层的恶意应用程序就能发起攻击; 内核级攻击者要求获得系统内核层的权限以执行特权攻击; 物理攻击者则需要将攻击设备物理接触目标设备.
(1) 用户级攻击者
用户级攻击者通常是一个无特权的应用程序, 它不必具备任何特权级的权限, 通过执行一段恶意代码或执行系统调用就能将受害者机密信息泄露到微体系结构中, 用户级攻击者模型如图3(a)所示. 用户级攻击者的一个显著特点是: 攻击者只需运行非特权代码, 就能破坏TEE中不同特权级和地址空间之间的内存隔离. Foreshadow攻击、ZombieLoad攻击、RIDL攻击和DRAMA攻击都是用户级攻击者. 以Foreshadow攻击为例, 飞地外的恶意应用程序利用“mprotect”系统调用清除飞地PTE中的当前位, 从而使对该页的任何访问都导致page fault, 操作系统捕获到该page fault之后转向执行异常处理函数, 系统执行异常处理函数的这段时间给攻击者创造了一个乱序执行的窗口.
![]() |
图 3 TEE中3种不同能力的攻击者模型 |
(2) 内核级攻击者
内核级攻击者通常会控制目标设备的特权级软件, 通过调用操作系统提供的特权指令和内核功能对可信应用程序发起攻击, 内核级攻击者模型如图3(b)所示. 内核级攻击者的特点是需要控制操作系统内核. 常见的内核级攻击者有SgxPectre攻击、LVI攻击、Branch Shadowing攻击、BranchScope攻击、Prime+Count缓存侧信道攻击、CacheZoom攻击、Controlled-Channel攻击、SPM攻击等. 以Branch Shadowing攻击为例, 攻击者是恶意的操作系统, 它通过操纵飞地进程的虚拟地址空间, 可以创建与目标飞地中分支指令相冲突的分支影子指令. 在受害者飞地运行期间, 攻击者通过频繁中断目标飞地的执行以运行分支影子代码, 从而推测出受害者内部细粒度的控制流.
(3) 物理攻击者
物理攻击者需要攻击设备能够物理探测被攻击设备的硬件, 然后利用收集到的信息推断受害者的机密信息, 物理攻击者模型如图3(c)所示. 物理攻击者与上述两类攻击者的不同之处在于: 用户级攻击者和内核级攻击者都是软件攻击, 而物理攻击者需要利用物理器件探测设备的信息. 典型的物理攻击者是Membuster攻击, 它通过收集受害者执行过程中DRAM产生的信号变化, 对Intel SGX的寻址算法进行逆向工程, 再利用cache侧信道攻击获取飞地的细粒度机密信息.
4 TEE侧信道攻击针对TEE软件侧信道攻击的防御措施可以从硬件层面和软件层面两方面考虑. TEE软件侧信道攻击大都利用了微体系结构组件的优化功能, 因此重新设计硬件结构能从根本上解决TEE软件侧信道攻击带来的问题. 然而, 硬件层面的防御措施短期内无法部署到计算设备中, 因此安全研究人员提出了一些软件层面的防御措施, 用于短期内部署到计算设备中来缓解TEE侧信道攻击.
本节按照第2节对TEE侧信道攻击面的分类, 分别介绍不同TEE软件侧信道攻击的防御措施. 表3总结了不同的TEE软件侧信道攻击对应的防御措施, 与硬件层面的对策相比, 软件层面的防御措施往往会引入较高性能开销. 下面将从硬件层面和软件层面两部分分别探讨软件侧信道攻击的防御措施.
![]() |
表 3 不同的TEE软件侧信道攻击对应的防御措施 |
由于瞬态执行攻击滥用了现代处理器中用于提升计算效率的微体系结构组件, 因此软件层面的对策(例如在瞬态执行指令之后插入lfence屏障)或硬件层面的微码更新无法彻底抵御瞬态执行攻击, 硬件层面通过更改处理器硅片结构等措施能从根本上抵御瞬态执行侧信道攻击.
● 硬件层面
(1) 更新微码: 通过发布微码更新, 可以对具有瞬态执行漏洞的硬件打补丁. 例如, 通过在飞地退出时刷新L1 cache可以抵御Foreshadow攻击[47]、通过刷新行填充缓冲区并在刷新操作完成之后增加一个lfence屏障可以抵御ZombieLoad攻击[48]和RIDL攻击[49]、带有微码补丁的Intel处理器会在进入或恢复飞地时刷新分支目标缓冲区从而抵御SgxPectre攻击[51].
(2) 硅片级更改: 在硅片级别重新设计处理器[47, 49, 50, 52-54]以禁止瞬态执行指令进行瞬态计算, 从而使得错误加载不会瞬态转发任何数据. 该方案可以从根本上解决当前处理器中一些优化技术带来的侧信道, 从而保护TEE隔离架构免受瞬态执行的影响. 这是一种长期解决方案, 其特点在于能从根本上解决瞬态执行侧信道, 缺点是短期内无法部署.
(3) 修改分支预测器: SpecCFI[81]通过在BTB条目中增加一个与目标地址相关的CFI (control-flow integrity)标签或划分出一块内存区域充当影子调用堆栈(shadow call stack, SCS), 从而抵御基于BTB和基于RSB的Spectre-type攻击.
● 软件层面: 基于编译器的软件防御措施可以缓解LVI攻击[47]. 通过分析飞地源码, 在每条瞬态执行指令之后插入lfence屏障, 可以序列化处理器流水线. 这能确保瞬态执行指令加载的值不是攻击者控制的注入值, 而是体系结构上正确的值.
4.2 分支预测侧信道防御措施分支预测侧信道攻击滥用了现代处理器中的分支预测单元, 硬件层面通过修改BPU结构或更新微码以使安全域上下文切换期间刷新BPU能从根本上抵御此攻击, 而软件层面通过消除受害者源码中的条件分支指令能缓解此攻击.
● 硬件层面
(1) 更新微码: 通过更新微码[51, 56, 60]使得受害者飞地在上下文切换期间刷新BPU中与受害者机密信息相关的分支信息.
(2) 修改BPU结构: 通过修改BPU的结构[51]缓解分支预测攻击可以从两方面考虑: 第一, 对BPU进行分区. 分区之后, 攻击者无法访问与受害者有关的BPU条目, 从而无法探测受害者的分支信息; 第二, 静态预测安全敏感的分支. 将受害者源码中的所有安全敏感的分支标记出来, 这些分支只能被静态预测且每次预测之后不能更新BPU条目, 这样BPU中永远不会出现与安全敏感的分支相关的信息, 从而抵御分支预测侧信道攻击.
● 软件层面
(1) Zigzagger技术: 利用Zigzagger技术[56]可以缓解Branch Shadowing攻击. Zigzagger技术利用CMOV指令将受害者源码中的条件分支转换为Zigzagger蹦床(trampoline)中的无条件分支, 经过蹦床多次跳转才能到达目标地址. 与条件分支相比, 无条件分支的执行难以被攻击者分辨.
(2) if-conversion技术: 基于编译器的if-conversion技术[51]通过在受害者程序中消除条件分支以抵御分支预测攻击. 与Zigzagger类似, if-conversion也使用CMOV指令将条件分支指令转换为顺序执行的代码, 通过消除条件分支结果对机密信息的依赖性来保护敏感数据. 利用if-conversion删除条件分支指令可以缓解BranchScope攻击.
(3) 禁用性能计数器: 通过禁用高精度的性能计数器[60]等方法可以使攻击者难以准确读取受害者的执行时间, 从而无法判断分支执行的方向.
4.3 TLB侧信道防御措施中国科学院信息工程研究所的研究团队在基于page table的SPM攻击中利用了TLB刷新技术, 在受害者飞地每次内存访问之后利用超线程技术刷新TLB, 从而提高SPM攻击的成功率和准确性[63]. 因此, 硬件层面可以通过重新设计TLB结构抵御此侧信道攻击, 软件层面通过禁用超线程技术可以防止攻击者刷新TLB.
● 硬件层面: 通过更改TLB硬件结构[82]能够抵御大多数TLB侧信道攻击, 例如, 根据不同安全域对TLB进行分区.
● 软件层面: 攻击者利用超线程技术[63]可以监视受害者飞地已访问的TLB条目或通过刷新TLB为其他类型的攻击(SPM攻击)创造条件, 因此可以禁用超线程技术以防止攻击者对TLB进行恶意操作, 从而缓解TLB侧信道漏洞.
4.4 cache侧信道防御措施TEE隔离架构中cache侧信道攻击十分普遍, 也有许多针对该攻击的防御措施[83-98], 其中硬件层面的防御措施能从根本上抵御cache侧信道漏洞, 例如分区技术和随机化技术等; 软件层面的对策包括时间差消除技术、隔离技术以及检测技术.
● 硬件层面
(1) cache分区: 对缓存分区将使得攻击者与受害者无法共享cache行, 从而提供强大的隔离缓存机制来抵抗缓存侧信道攻击, 这类防御措施有STEALTHMEM的cache行锁定技术[84]、基于cache组分区[13]的页面着色技术 (page coloring)、基于缓存way分区[13]的缓存分配技术 (cache allocation technology, CAT)、Catalyst技术[86]、DAWG (dynamically allocated way guard)技术[83]和缓存分区锁定(partition-locked cache, PLcache)技术[85]等.
(2) 随机化(randomization)技术: 将内存到缓存之间的映射关系随机化可以增加攻击者找到与受害者地址相冲突的cache组的难度, 这类防御措施有随机排列缓存(random-permutation cache, RPcache)技术[85]和ScatterCache技术[87]等.
● 软件层面
(1) 时间差消除技术: cache侧信道攻击会根据受害者访问内存的时间差异来推断机密信息, 因此可以利用时间差消除技术(例如, 注入噪声)阻止攻击者测量受害者内存访问的时间. 这类防御措施包括噪声注入技术[89]、禁用高精度计时器[88-94]、恒定时间(constant-time)技术[87]等.
(2) 基于检测的技术: cache侧信道攻击可以导致大量的缓存未命中等系统事件发生, 利用性能计数器[17, 18]检测系统事件(例如, cache hit或cache miss)能够判断cache侧信道攻击是否发生.
(3) 基于隔离的技术: SmokeBomb技术[95]是一种典型的基于隔离的技术, 它利用软件缓存锁定技术将L1缓存作为每个进程的私有空间, 只用于安全敏感的操作, 从而防止攻击者通过测量受害者访问时间获取机密信息.
4.5 基于page table的侧信道防御措施基于page table的侧信道攻击利用页表PTE的标志位泄露受害者的内存访问模式. 硬件层面通过硬件隔离技术抵御此攻击, 软件层面的防御措施主要包括软件隔离技术、检测技术、重写源码以及Heisenberg技术等.
● 硬件层面: 硬件层面的防御措施主要是硬件隔离技术, 硬件隔离技术通过重新设计硬件使得安全敏感的页面访问模式对恶意的操作系统不可见, 从而抵御基于page table的侧信道攻击. 这类防御措施包括自分页(self-paging)技术[100]和Sanctum技术[99], 这两种技术都可以为SGX飞地提供独立的page table.
● 软件层面
(1) 软件隔离技术: 利用编译器技术将所有依赖于机密信息的执行隔离保护, 使得恶意应用程序无法探测受害者飞地的内存访问模式. 这类防御措施主要有T-SGX技术[101]和确定性复用(deterministic multiplexing)技术: T-SGX技术利用硬件事务内存(transactional memory)隔离保护受害者飞地; 确定性复用技术将依赖于机密信息的代码和数据放在一个代码页中顺序执行, 从而导致攻击者检测到的page fault序列全部相同.
(2) 基于检测的技术: 基于page table的侧信道攻击会出现大量的AEX, 因此可以通过检测AEX发生的频率来抵御该攻击. 这类防御措施主要有Déjà Vu技术[102].
(3) 重写源码: 受害者源码中存在依赖于机密信息的内存访问指令, 通过重写可信应用程序代码可以消除或隐藏内存访问模式对敏感数据的依赖性.
(4) Heisenberg技术: Heisenberg技术[103]可以全面抵御基于page table的侧信道攻击, 该技术要求TLB在恢复飞地执行时预加载目标飞地的页面转换关系, 使得飞地在内存访问时不会出现页表遍历, 从而防止发生page fault以抵御基于page table的侧信道攻击.
4.6 基于DRAM的侧信道防御措施由于计算机DRAM中的row buffer会对内存访问造成时间差异, 因此只能从硬件层面消除基于DRAM的侧信道漏洞. 软件层面通过检测系统事件或注入噪声等方法可以检测或缓解该攻击[63].
● 硬件层面
通过更改DRAM和处理器架构可以从根本上解决基于DRAM的侧信道攻击.
● 软件层面
(1) 基于检测的技术: 基于DRAM的侧信道攻击会产生大量的缓存未命中, 因此通过性能计数器检测系统事件可以检测该攻击.
(2) 时间差消除技术: 与cache侧信道攻击类似, 基于DRAM的侧信道攻击也需要测量不同内存访问之间的时间差异才能推断受害者的机密信息, 因此, 可以通过禁用高精度的计时器或向攻击过程中注入噪声使测量结果精度下降, 从而缓解该攻击.
4.7 组合攻击的防御措施Membuster攻击[80]是物理攻击与软件侧信道攻击的结合, 因此其防御措施可以从两个方面着手: 一方面通过修改硬件等对策使得物理攻击难以窃取受害者的物理地址, 另一方面利用ORAM技术隐藏受害者的内存访问模式.
● 硬件层面: 硬件层面必须要更改DRAM和CPU架构以实现对数据总线和地址总线的加密.
● 软件层面: 利用ORAM (oblivious RAM)技术来隐藏CPU的实际内存访问模式.
5 研究展望软件侧信道攻击的出现促使研究人员持续在TEE侧信道攻击和防御两方面进行研究. 结合最新的研究趋势, 本节从攻击和防御两方面对未来可能出现的研究点进行探讨, 以供相关研究人员参考.
从攻击方面, 侧信道攻击从最开始需要大量昂贵设备探测物理信号以推断机密信息发展到现在以软件方式捕获微体系结构状态信息来提取机密信息, 这使得越来越多的研究人员开始深入研究计算机微体系结构可能存在的侧信道漏洞. 在TEE隔离架构中, Intel SGX极容易遭受基于微体系结构攻击的威胁, ARM TrustZone也发现了基于微体系结构的侧信道. 未来针对可信执行环境的侧信道攻击, 可以考虑以下几个研究方向.
(1) 挖掘微体系结构侧信道漏洞: 根据第2节对TEE侧信道攻击面的描述, 当前针对可信执行环境的TEE软件侧信道攻击几乎都利用了处理器微体系结构组件的优化功能. 也就是说, 现代处理器中的微体系结构优化组件在提升计算效率的同时牺牲了计算设备的安全性, 利用这些组件可能会造成严重的安全问题. 因此, 未来需要继续挖掘TEE隔离架构中微体系结构优化组件的侧信道漏洞, 通过详细分析Intel SGX和ARM TrustZone等可信执行环境在硬件层面的处理流程、安全检查机制以及隔离机制, 寻找可能会影响TEE隔离机制的侧信道漏洞.
(2) 探索TLB在上下文切换期间的处理逻辑: 当前, TEE隔离架构中没有出现基于TLB的侧信道攻击案例, 但是TLB理论上存在侧信道漏洞(参考第2.3节). 例如, 上下文切换期间有选择地刷新TLB条目, 攻击者通过监视TLB即可了解受害者进程的内存访问模式. 因此, 需要继续探索TEE隔离架构中的TLB漏洞, 并且构建出基于TLB的侧信道攻击实例.
从防御方面, 针对TEE侧信道攻击的防御措施主要分为软件层面和硬件层面两个方向, 整体呈现“软件为主, 硬件为辅”的趋势. 硬件层面可以通过重新设计硬件结构、更新微码等方法从根本上解决TEE软件侧信道攻击问题. 由于硬件层面的对策短期内不太容易部署且成本很高, 故研究人员针对具体攻击提出了相应的软件层面的防御措施. 与硬件层面的对策相比, 软件层面的防御措施更容易实现但无法从根本上防御TEE软件侧信道攻击, 有时甚至会引入大量性能开销. 因此, 未来对于TEE软件侧信道攻击的防御措施, 可能存在以下几个研究方向:
(1) 探索“硬件为主, 软件为辅”的防御措施: TEE软件侧信道攻击利用了现代CPU内部微体系结构的优化组件来提取受害者的机密信息, 因此基于软件的方法只能起到缓解作用而不能一劳永逸, 彻底解决TEE侧信道攻击问题需要朝着“硬件为主, 软件为辅”的方向探索防御措施. 这类防御措施的技术原理如下: 针对当前TEE侧信道防御措施中软件方案开销较大以及难以抵御的攻击(例如, 瞬态执行攻击或组合攻击等), 硬件层面, 硬件开发人员需要尽快重新设计DRAM和CPU结构, 消除DRAM和CPU中优化技术带来的侧信道漏洞; 软件层面, 软件开发人员应该继续探索减小性能开销的技术(例如, 静态分析技术). 针对当前TEE侧信道防御措施中软件方案开销较小或易于抵御的攻击(例如, 分支预测攻击), 软件开发人员可以通过注入噪声等方法进行缓解.
(2) 寻找通用的缓解措施: 目前, 在针对基于Flush的cache侧信道攻击[104, 105]或针对基于page table的侧信道攻击的研究中, 研究人员已经找到了抵御这些攻击的通用方法. 除此之外, 大多数防御措施都只针对具体的攻击, 没有尝试将该防御措施扩展到其他类似攻击的防御中, 这不利于软件层面的防御措施的应用与发展. 因此未来针对防御措施的研究需要在原有对策的基础上找到能够抵御同类攻击的通用缓解措施.
6 结束语本文针对TEE隔离架构中的软件侧信道攻击, 详细调研其威胁模型、相关技术和实际的攻击案例, 重点阐述基于处理器指令流水线的TEE攻击面分类方法, 并按照上述分类方法对实际的攻击技术进行系统归类, 同时, 从硬件层面和软件层面两个角度分类归纳不同软件侧信道攻击对应的防御技术. 最后, 对可信执行环境软件侧信道攻击技术和其防御措施进行更深层次的探讨, 展望未来的发展趋势并给出一些研究方向, 以期对TEE隔离架构的安全研究提供参考.
[1] |
Kocher P, Jaffe J, Jun B, Rohatgi P. Introduction to differential power analysis. Journal of Cryptographic Engineering, 2011, 1(1): 5-27.
[doi:10.1007/s13389-011-0006-y] |
[2] |
Mangard S, Oswald E, Popp T. Power Analysis Attacks: Revealing the Secrets of Smart Cards. Berlin: Springer, 2007. 5–6.
|
[3] |
Standaert FX. Introduction to side-channel attacks. In: Verbauwhede IMR, ed. Secure Integrated Circuits and Systems. Boston: Springer, 2010. 27–42.
|
[4] |
Joy PG, Prabhu M, Shanmugalakshmi R. Side channel attack-survey. Int’l Journal of Advanced Scientific Research and Review, 2011, 1(4): 54-57.
|
[5] |
Pongaliur K, Abraham Z, Liu AX, Xiao L, Kempel L. Securing sensor nodes against side channel attacks. In: Proc. of the 11th IEEE High Assurance Systems Engineering Symp. Nanjing: IEEE, 2008. 353–361.
|
[6] |
Agrawal D, Archambeault B, Rao JR, Rohatgi P. The EM side-channel(s). In: Proc. of the 4th Int’l Workshop on Cryptographic Hardware and Embedded Systems. California: Springer, 2002. 29–45.
|
[7] |
Kocher P, Jaffe J, Jun B. Differential power analysis. In: Proc. of the 19th Annual Int’l Cryptology Conf. California: Springer, 1999. 388–397.
|
[8] |
Kocher PC. Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems. In: Proc. of the 16th Annual Int’l Cryptology Conf. California: Springer, 1996. 104–113.
|
[9] |
ARM Limited. ARM security technology—Building a secure system using TrustZone technology. Technical Report, Cambridge: ARM, 2009.
|
[10] |
Mukhtar MA, Bhatti MK, Gogniat G. Architectures for security: A comparative analysis of hardware security features in Intel SGX and ARM TrustZone. In: Proc. of the 2nd Int’l Conf. on Communication, Computing and Digital systems (C-CODE). Islamabad: IEEE, 2019. 299–304.
|
[11] |
Pinto S, Santos N. Demystifying ARM TrustZone: A comprehensive survey. ACM Computing Surveys, 2019, 51(6): 130.
[doi:10.1145/3291047] |
[12] |
Kaplan D, Powell J, Woller T. AMD memory encryption. White Paper, Santa Clara: AMD, 2016.
|
[13] |
Ge Q, Yarom Y, Cock D, Heiser G. A survey of microarchitectural timing attacks and countermeasures on contemporary hardware. Journal of Cryptographic Engineering, 2018, 8(1): 1-27.
[doi:10.1007/s13389-016-0141-6] |
[14] |
Irazoqui G, Inci MS, Eisenbarth T, Sunar B. Wait a minute! A fast, cross-VM attack on AES. In: Proc. of the 17th Int’l Symp. on Research in Attacks, Intrusions and Defenses. Gothenburg: Springer, 2014. 299–319.
|
[15] |
Green M, Rodrigues-Lima L, Zankl A, Irazoqui G, Heyszl J, Eisenbarth T. AutoLock: Why cache attacks on ARM are harder than you think. In: Proc. of the 26th USENIX Security Symp. Vancouver: USENIX Association, 2017. 1075–1091.
|
[16] |
Cho H, Zhang PH, Kim D, Park J, Lee CH, Zhao ZM, Doupé A, Ahn GJ. Prime+Count: Novel cross-world covert channels on ARM TrustZone. In: Proc. of the 34th Annual Computer Security Applications Conf. San Juan: ACM, 2018. 441–452.
|
[17] |
Lyu Y, Mishra P. A survey of side-channel attacks on caches and countermeasures. Journal of Hardware and Systems Security, 2018, 2(1): 33-50.
[doi:10.1007/s41635-017-0025-y] |
[18] |
Lipp M. Cache attacks on ARM [MS. Thesis]. Graz: University of Technology, 2016.
|
[19] |
Tromer E, Osvik DA, Shamir A. Efficient cache attacks on AES, and countermeasures. Journal of Cryptology, 2010, 23(1): 37-71.
[doi:10.1007/s00145-009-9049-y] |
[20] |
van Schaik S, Giuffrida C, Bos H, Razavi K. Malicious management unit: Why stopping cache attacks in software is harder than you think. In: Proc. of the 27th USENIX Security Symp. Baltimore: USENIX Association, 2018. 937–954.
|
[21] |
Zhang N, Sun K, Shands D, Lou WJ, Hou YT. TruSpy: Cache side-channel information leakage from the secure world on ARM devices. Cryptology ePrint Archive, 2016. 980.
|
[22] |
Lipp M, Gruss D, Spreitzer R, Maurice C, Mangard S. ARMageddon: Cache attacks on mobile devices. In: Proc. of the 25th USENIX Security Symp. Austin: USENIX Association, 2016. 549–564.
|
[23] |
Yarom Y, Benger N. Recovering OpenSSL ECDSA nonces using the Flush+Reload cache side-channel attack. Cryptology ePrint Archive, 2014. 140.
|
[24] |
Ristenpart T, Tromer E, Shacham H, Savage S. Hey, you, get off of my cloud: Exploring information leakage in third-party compute clouds. In: Proc. of the 16th ACM Conf. on Computer and Communications Security. Chicago: ACM, 2009. 199–212.
|
[25] |
Neve M, Seifert JP. Advances on access-driven cache attacks on AES. In: Proc. of the 13th Int’l Workshop on Selected Areas in Cryptography. Montreal: Springer, 2006. 147–162.
|
[26] |
Gullasch D, Bangerter E, Krenn S. Cache games—Bringing access-based cache attacks on AES to practice. In: Proc. of the 32nd IEEE Symp. on Security and Privacy. Oakland: IEEE, 2011. 490–505.
|
[27] |
Liu FF, Yarom Y, Ge Q, Heiser G, Lee RB. Last-level cache side-channel attacks are practical. In: Proc. of the 36th IEEE Symp. on Security and Privacy. San Jose: IEEE, 2015. 605–622.
|
[28] |
Yarom Y, Falkner K. Flush+Reload: A high resolution, low noise, L3 cache side-channel attack. In: Proc. of the 23rd USENIX Security Symp. San Diego: USENIX, 2014. 719–732.
|
[29] |
Gruss D, Maurice C, Wagner K, Mangard S. Flush+Flush: A fast and stealthy cache attack. In: Proc. of the 13th Int’l Conf. on Detection of Intrusions and Malware, and Vulnerability Assessment. San Sebastián: Springer, 2016. 279–299.
|
[30] |
Gülmezoğlu B, Inci MS, Irazoqui G, Eisenbarth T, Sunar B. A faster and more realistic Flush+Reload attack on AES. In: Proc. of the 6th Int’l Workshop on Constructive Side-channel Analysis and Secure Design. Berlin: Springer, 2015. 111–126.
|
[31] |
Miao XL, Jiang LH, Chang R. Survey of access-driven cache-based side channel attack. Journal of Computer Research and Development, 2020, 57(4): 824-835(in Chinese with English abstract).
[doi:10.7544/issn1000-1239.2020.20190581] |
[32] |
Schwarz M, Weiser S, Gruss D, Maurice C, Mangard S. Malware guard extension: Using SGX to conceal cache attacks. In: Proc. of the 14th Int’l Conf. on Detection of Intrusions and Malware, and Vulnerability Assessment. Bonn: Springer, 2017. 3–24.
|
[33] |
Bruinderink LG, Hülsing A, Lange T, Yarom Y. Flush, Gauss, and Reload—A cache attack on the bliss lattice-based signature scheme. In: Proc. of the 18th Int’l Conf. on Cryptographic Hardware and Embedded Systems. Santa Barbara: Springer, 2016. 323–345.
|
[34] |
Disselkoen C, Kohlbrenner D, Porter L, Tullsen D. Prime+Abort: A timer-free high-precision L3 cache attack using Intel TSX. In: Proc. of the 26th USENIX Security Symp. Vancouver: USENIX Association, 2017. 51–67.
|
[35] |
Ge JQ, Gao N, Tu CY, Xiang J, Liu ZY. More secure collaborative APIs resistant to Flush+Reload and Flush+Flush attacks on ARMv8-A. In: Proc. of the 26th Asia-Pacific Software Engineering Conf. (APSEC). Putrajaya: IEEE, 2019. 410–417.
|
[36] |
Briongos S, Malagón P, Moya JM, Eisenbarth T. Reload+Refresh: Abusing cache replacement policies to perform stealthy cache attacks. In: Proc. of the 29th USENIX Security Symp. Berkeley: USENIX Association, 2020. 1967–1984.
|
[37] |
Korpershoek JJ. Profiling encryption algorithms using ARM-based cache eviction attacks [MS. Thesis]. Enschede: University of Twente, 2020.
|
[38] |
Brumley BB, Hakala RM. Cache-timing template attacks. In: Proc. of the 15th Int’l Conf. on the Theory and Application of Cryptology and Information Security. Tokyo: Springer, 2009. 667–684.
|
[39] |
Zhang YQ, Juels A, Reiter MK, Ristenpart T. Cross-VM side channels and their use to extract private keys. In: Proc. of the 19th ACM Conf. on Computer and Communications Security. Raleigh: ACM, 2012. 305–316.
|
[40] |
Acıiçmez O, Koç ÇK. Trace-driven cache attacks on AES (short paper). In: Proc. of the 8th Int’l Conf. on Information and Communications Security. Raleigh: Springer, 2006. 112–121.
|
[41] |
Zhang QY, Zhao SJ. Survey of research on protection mechanisms of operating system against board level physical attacks. Ruan Jian Xue Bao/Journal of Software, 2020, 31(10): 3120–3146 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/6067.htm
|
[42] |
Schwarz M, Gruss D. How trusted execution environments fuel research on microarchitectural attacks. IEEE Security & Privacy, 2020, 18(5): 18-27.
[doi:10.1109/MSEC.2020.2993896] |
[43] |
Canella C, van Bulck J, Schwarz M, Lipp M, von Berg B, Ortner P, Piessens F, Evtyushkin D, Gruss D. A systematic evaluation of transient execution attacks and defenses. In: Proc. of the 28th USENIX Security Symp. Santa Clara: USENIX Association, 2019. 249–266.
|
[44] |
Lipp M, Schwarz M, Gruss D, Prescher T, Haas W, Fogh A, Horn J, Mangard S, Kocher P, Genkin D, Yarom Y, Hamburg M. Meltdown: Reading kernel memory from user space. In: Proc. of the 27th USENIX Security Symp. Baltimore: USENIX Association, 2018. 973–990.
|
[45] |
Kocher P, Horn J, Fogh A, Genkin D, Gruss D, Hass W, Hamburg M, Lipp M, Mangard S, Prescher T, Schwarz M, Yarom Y. Spectre attacks: Exploiting speculative execution. In: Proc. of the 40th IEEE Symp. on Security and Privacy (SP). San Francisco: IEEE, 2019. 1–19.
|
[46] |
Wu XH, He YP, Ma HT, Zhou QM, Lin SF. Microarchitectural transient execution attacks and defense methods. Ruan Jian Xue Bao/Journal of Software, 2020, 31(2): 544−563 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5979.htm
|
[47] |
van Bulck J, Minkin M, Weisse O, Genkin D, Kasikci B, Piessens F, Silberstein M, Wenisch TF, Yarom Y, Strackx R. Foreshadow: Extracting the keys to the Intel SGX kingdom with transient out-of-order execution. In: Proc. of the 27th USENIX Security Symp. Baltimore: USENIX Association, 2018. 991–1008.
|
[48] |
Schwarz M, Lipp M, Moghimi D, van Bulck J, Stecklina J, Prescher T, Gruss D. ZombieLoad: Cross-privilege-boundary data sampling. In: Proc. of the 26th ACM SIGSAC Conf. on Computer and Communications Security. London: ACM, 2019. 753–768.
|
[49] |
van Schaik S, Milburn A, Österlund S, Frigo P, Maisuradze G, Razavi K, Bos H, Giuffrida C. RIDL: Rogue in-flight data load. In: Proc. of the 40th IEEE Symp. on Security and Privacy (SP). San Francisco: IEEE, 2019. 88–105.
|
[50] |
van Schaik S, Kwong A, Genkin D, Yarom Y. SGAxe: How SGX fails in practice. 2020. https://sgaxeattack.com/
|
[51] |
Koruyeh EM, Khasawneh KN, Song CY, Abu-Ghazaleh N. Spectre returns! Speculation attacks using the return stack buffer. In: Proc. of the 12th USENIX Workshop on Offensive Technologies. Baltimore: USENIX Association, 2018. 1–12.
|
[52] |
Evtyushkin D, Riley R, Abu-Ghazaleh N, Ponomarev D. BranchScope: A new side-channel attack on directional branch predictor. In: Proc. of the 23rd Int’l Conf. on Architectural Support for Programming Languages and Operating Systems. Williamsburg: ACM, 2018. 693–707.
|
[53] |
Chen GX, Chen SC, Xiao Y, Zhang YQ, Lin ZQ, Lai TH. SgxPectre: Stealing Intel secrets from SGX enclaves via speculative execution. In: Proc. of the 4th IEEE European Symp. on Security and Privacy (EuroS&P). Stockholm: IEEE, 2019. 142–157.
|
[54] |
van Bulck J, Moghimi D, Schwarz M, Lippi M, Minkin M, Genkin D, Yarom Y, Sunar B, Gruss D, Piessens F. LVI: Hijacking transient execution through microarchitectural load value injection. In: Proc. of the 41st IEEE Symp. on Security and Privacy (SP). San Francisco: IEEE, 2020. 54–72.
|
[55] |
Ryan K. Hardware-backed heist: Extracting ECDSA keys from Qualcomm’s TrustZone. In: Proc. of the 26th ACM SIGSAC Conf. on Computer and Communications Security. London: ACM, 2019. 181–194.
|
[56] |
Lee S, Shih MW, Gera P, Kim T, Kim H, Peinado M. Inferring fine-grained control flow inside SGX enclaves with branch shadowing. In: Proc. of the 26th USENIX Security Symp. Vancouver: USENIX Association, 2017. 557–574.
|
[57] |
Nilsson A, Bideh PN, Brorsson J. A survey of published attacks on Intel SGX. arXiv:2006.13598, 2020.
|
[58] |
Bhattacharya S, Maurice C, Bhasin S, Mukhopadhyay D. Branch prediction attack on blinded scalar multiplication. IEEE Trans. on Computers, 2019, 69(5): 633-648.
[doi:10.1109/TC.2019.2958611] |
[59] |
Tan Y, Wei JZ, Guo W. The micro-architectural support countermeasures against the branch prediction analysis attack. In: Proc. of the 13th IEEE Int’l Conf. on Trust, Security and Privacy in Computing and Communications. Beijing: IEEE, 2014. 276–283.
|
[60] |
Evtyushkin D, Ponomarev D, Abu-Ghazaleh N. Jump over ASLR: Attacking branch predictors to bypass ASLR. In: Proc. of the 49th Annual IEEE/ACM Int’l Symp. on Microarchitecture (MICRO). Taipei: IEEE, 2016. 1–13.
|
[61] |
Acıiçmez O, Gueron S, Seifert JP. New branch prediction vulnerabilities in OpenSSL and necessary software countermeasures. In: Proc. of the 11th IMA Int’l Conf. on Cryptography and Coding. Cirencester: Springer, 2007. 185–203.
|
[62] |
Agosta G, Breveglieri L, Pelosi G, Koren I. Countermeasures against branch target buffer attacks. In: Proc. of the 4th Workshop on Fault Diagnosis and Tolerance in Cryptography (FDTC). Vienna: IEEE, 2007. 75–79.
|
[63] |
Wang WH, Chen GX, Pan XR, Zhang YQ, Wang XF, Bindschaedler V, Tang HX, Gunter CA. Leaky cauldron on the dark land: Understanding memory side-channel hazards in SGX. In: Proc. of the 24th ACM SIGSAC Conf. on Computer and Communications Security. Dallas: ACM, 2017. 2421–2434.
|
[64] |
Gras B, Razavi K, Bos H, Giuffrida C. Translation leak-aside buffer: Defeating cache side-channel protections with TLB attacks. In: Proc. of the 27th USENIX Security Symp. Baltimore: USENIX Association, 2018. 955–972.
|
[65] |
Wang J, Fan CY, Cheng YQ, Zhao B, Wei T, Yan F, Zhang HG, Ma J. Analysis and research on SGX technology. Ruan Jian Xue Bao/Journal of Software, 2018, 29(9): 2778−2798 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5594.htm
|
[66] |
Götzfried J, Eckert M, Schinzel S, Müller T. Cache attacks on Intel SGX. In: Proc. of the 10th European Workshop on Systems Security. Belgrade: ACM, 2017. 1–6.
|
[67] |
Moghimi A, Irazoqui G, Eisenbarth T. Cachezoom: How SGX amplifies the power of cache attacks. In: Proc. of the 19th Int’l Conf. on Cryptographic Hardware and Embedded Systems. Taipei: Springer, 2017. 69–90.
|
[68] |
Hähnel M, Cui WD, Peinado M. High-resolution side channels for untrusted operating systems. In: Proc. of the 2017 USENIX Annual Technical Conf. Santa Clara: USENIX Association, 2017. 299–312.
|
[69] |
Irazoqui G, Eisenbarth T, Sunar B. S$A: A shared cache attack that works across cores and defies VM sandboxing and its application to AES. In: Proc. of the 36th IEEE Symp. on Security and Privacy. San Jose: IEEE, 2015. 591–604.
|
[70] |
Spreitzer R, Moonsamy V, Korak T, Mangard S. Systematic classification of side-channel attacks: A case study for mobile devices. IEEE Communications Surveys & Tutorials, 2018, 20(1): 465-488.
[doi:10.1109/COMST.2017.2779824] |
[71] |
Crane S, Homescu A, Brunthaler S, Larsen P, Franz M. Thwarting cache side-channel attacks through dynamic software diversity. In: Proc. of the 22nd Annual Network and Distributed System Security Symp. San Diego: NDSS, 2015. 1–14.
|
[72] |
Szefer J. Survey of microarchitectural side and covert channels, attacks, and defenses. Journal of Hardware and Systems Security, 2019, 3(3): 219-234.
[doi:10.1007/s41635-018-0046-1] |
[73] |
van Schaik S, Minkin M, Kwong A, Genkin D, Yarom Y. CacheOut: Leaking data on Intel CPUs via cache evictions. In: Proc. of the 42nd IEEE Symp. on Security and Privacy (SP). San Francisco: IEEE, 2021. 339–354.
|
[74] |
Brasser F, Müller U, Dmitrienko A, Kostiainen K, Capkun S, Sadeghi AR. Software grand exposure: SGX cache attacks are practical. In: Proc. of the 11th USENIX Workshop on Offensive Technologies. Vancouver: USENIX Association, 2017. 1–12.
|
[75] |
Xu YZ, Cui WD, Peinado M. Controlled-channel attacks: Deterministic side channels for untrusted operating systems. In: Proc. of the 36th IEEE Symp. on Security and Privacy. San Jose: IEEE, 2015. 640–656.
|
[76] |
Shinde S, Chua ZL, Narayanan V, Saxena P. Preventing page faults from telling your secrets. In: Proc. of the 11th ACM on Asia Conf. on Computer and Communications Security. Xi’an: ACM, 2016. 317–328.
|
[77] |
Pessl P, Gruss D, Maurice C, Schwarz M, Mangard S. DRAMA: Exploiting DRAM addressing for cross-CPU attacks. In: Proc. of the 25th USENIX Security Symp. Washington: USENIX Association, 2016. 565–581.
|
[78] |
Wang MH, Zhang Z, Cheng YQ, Nepal S. DRAMDig: A knowledge-assisted tool to uncover DRAM address mapping. In: Proc. of the 57th ACM/IEEE Design Automation Conf. (DAC). San Francisco: IEEE, 2020. 1–6.
|
[79] |
Xiao Y, Zhang XK, Zhang YQ, Teodorescu R. One bit flips, one cloud flops: Cross-VM row hammer attacks and privilege escalation. In: Proc. of the 25th USENIX Security Symp. Washington: USENIX Association, 2016. 19–35.
|
[80] |
Lee D, Jung D, Fang IT, Tsai CC, Popa RA. An off-chip attack on hardware enclaves via the memory bus. In: Proc. of the 29th USENIX Security Symp. Berkeley: USENIX Association, 2020. 487–504.
|
[81] |
Koruyeh EM, Shirazi SHA, Khasawneh KN, Song CY, Abu-Ghazaleh N. SpecCFI: Mitigating spectre attacks using CFI informed speculation. In: Proc. of the 41st IEEE Symp. on Security and Privacy (SP). San Francisco: IEEE, 2020. 39–53.
|
[82] |
Deng SW, Xiong WJ, Szefer J. Secure TLBs. In: Proc. of the 46th ACM/IEEE Annual Int’l Symp. on Computer Architecture (ISCA). Phoenix: IEEE, 2019. 346–359.
|
[83] |
Kiriansky V, Lebedev I, Amarasinghe S, Devadas S, Emer J. DAWG: A defense against cache timing attacks in speculative execution processors. In: Proc. of the 51st Annual IEEE/ACM Int’l Symp. on Microarchitecture (MICRO). Fukuoka: IEEE, 2018. 974–987.
|
[84] |
Kim T, Peinado M, Mainar-Ruiz G. STEALTHMEM: System-level protection against cache-based side channel attacks in the cloud. In: Proc. of the 21st USENIX Security Symp. Bellevue: USENIX Association, 2012. 189–204.
|
[85] |
Wang ZH, Lee RB. New cache designs for thwarting software cache-based side channel attacks. ACM SIGARCH Computer Architecture News, 2007, 35(2): 494-505.
[doi:10.1145/1273440.1250723] |
[86] |
Liu FF, Ge Q, Yarom Y, Mckeen F, Rozas C, Heiser G, Lee RB. CATalyst: Defeating last-level cache side channel attacks in cloud computing. In: Proc. of the 22nd IEEE Int’l Symp. on High Performance Computer Architecture (HPCA). Barcelona: IEEE, 2016. 406–418.
|
[87] |
Werner M, Unterluggauer T, Giner L, Schwarz M, Gruss D, Mangard S. Scattercache: Thwarting cache attacks via cache set randomization. In: Proc. of the 28th USENIX Security Symp. Santa Clara: USENIX Association, 2019. 675–692.
|
[88] |
Coppens B, Verbauwhede I, de Bosschere K, de Sutter B. Practical mitigations for timing-based side-channel attacks on modern x86 processors. In: Proc. of the 30th IEEE Symp. on Security and Privacy. Oakland: IEEE, 2009. 45–60.
|
[89] |
Hu WM. Reducing timing channels with fuzzy time. Journal of Computer Security, 1992, 1(3–4): 233-254.
[doi:10.3233/JCS-1992-13-404] |
[90] |
Martin R, Demme J, Sethumadhavan S. Timewarp: Rethinking timekeeping and performance monitoring mechanisms to mitigate side-channel attacks. In: Proc. of the 39th Annual Int’l Symp. on Computer Architecture (ISCA). Portland: IEEE, 2012. 118–129.
|
[91] |
Zhou ZQ, Reiter MK, Zhang YQ. A software approach to defeating side channels in last-level caches. In: Proc. of the 23rd ACM SIGSAC Conf. on Computer and Communications Security. Vienna: ACM, 2016. 871–882.
|
[92] |
Chandra S, Karande V, Lin ZQ, Khan L, Kantarcioglu M, Thuraisingham B. Securing data analytics on SGX with randomization. In: Proc. of the 22nd European Symp. on Research in Computer Security. Oslo: Springer, 2017. 352–369.
|
[93] |
Seo J, Lee B, Kim S, Shih MW, Shin I, Han DS, Kim T. SGX-shield: Enabling address space layout randomization for SGX programs. In: Proc. of the 24th Annual Network and Distributed System Security Symp. San Diego: NDSS. 2017. 1–15.
|
[94] |
Gruss D, Lettner J, Schuster F, Ohrimenko O, Haller I, Costa M. Strong and efficient cache side-channel protection using hardware transactional memory. In: Proc. of the 26th USENIX Security Symp. Vancouver: USENIX Association, 2017. 217–233.
|
[95] |
Cho H, Park J, Kim D, Zhao ZM, Shoshitaishvili Y, Doupé A, Ahn GJ. SmokeBomb: Effective mitigation against cache side-channel attacks on the ARM architecture. In: Proc. of the 18th Int’l Conf. on Mobile Systems, Applications, and Services. Toronto: ACM, 2020. 107–120.
|
[96] |
Liu FF, Lee RB. Random fill cache architecture. In: Proc. of the 47th Annual IEEE/ACM Int’l Symp. on Microarchitecture. Cambridge: IEEE, 2014. 203–215.
|
[97] |
Wang Y, Ferraiuolo A, Zhang DF, Myers AC, Suh GE. SecDCP: Secure dynamic cache partitioning for efficient timing channel protection. In: Proc. of the 53rd Annual Design Automation Conf. Austin: ACM, 2016. 1–6.
|
[98] |
Dessouky G, Frassetto T, Sadeghi AR. HybCache: Hybrid side-channel-resilient caches for trusted execution environments. In: Proc. of the 29th USENIX Security Symp. Berkeley: USENIX Association, 2020. 451–468.
|
[99] |
Costan V, Lebedev I, Devadas S. Sanctum: Minimal hardware extensions for strong software isolation. In: Proc. of the 25th USENIX Security Symp. Washington: USENIX Association, 2016. 857–874.
|
[100] |
Fu YC, Bauman E, Quinonez R, Lin ZQ. Sgx-Lapd: Thwarting controlled side channel attacks via enclave verifiable page faults. In: Proc. of the 20th Int’l Symp. on Research in Attacks, Intrusions, and Defenses. Atlanta: Springer, 2017. 357–380.
|
[101] |
Shih MW, Lee S, Kim T, Peinado M. T-SGX: Eradicating controlled-channel attacks against enclave programs. In: Proc. of the 24th Annual Network and Distributed System Security Symp. San Diego: NDSS, 2017. 1–15.
|
[102] |
Chen SC, Zhang XK, Reiter MK, Zhang YQ. Detecting privileged side-channel attacks in shielded execution with Déjá Vu. In: Proc. of the 12th ACM on Asia Conf. on Computer and Communications Security. Abu Dhabi: ACM, 2017. 7–18.
|
[103] |
Dall F, de Micheli G, Eisenbarth T, Genkin D, Heninger N, Moghimi A, Yarom Y. Cachequote: Efficiently recovering long-term secrets of SGX EPID via cache attacks. IACR Trans. on Cryptographic Hardware and Embedded Systems, 2018(2): 171-191.
[doi:10.13154/tches.v2018.i2.171-191] |
[104] |
Tang CR, Liu ZB, Ma CQ, Ge JQ, Tu CY. SecFlush: A hardware/software collaborative design for real-time detection and defense against Flush-based cache attacks. In: Proc. of the 21st Int’l Conf. on Information and Communications Security. Beijing: Springer, 2019. 251–268.
|
[105] |
Mukhtar MA, Bhatti MK, Gogniat G. IE-Cache: Counteracting eviction-based cache side-channel attacks through indirect eviction. In: Proc. of the 35th IFIP TC 11 Int’l Conf. on ICT Systems Security and Privacy Protection. Maribor: Springer, 2020. 32–45.
|
[31] |
苗新亮, 蒋烈辉, 常瑞. 访问驱动下的cache侧信道攻击研究综述. 计算机研究与发展, 2020, 57(4): 824-835.
[doi:10.7544/issn1000-1239.2020.20190581] |
[41] |
张倩颖, 赵世军. 抗电路板级物理攻击的操作系统防御技术研究. 软件学报, 2020, 31(10): 3120–3146. http://www.jos.org.cn/1000-9825/6067.htm
|
[46] |
吴晓慧, 贺也平, 马恒太, 周启明, 林少锋. 微架构瞬态执行攻击与防御方法. 软件学报, 2020, 31(2): 544–563. http://www.jos.org.cn/1000-9825/5979.htm
|
[65] |
王鹃, 樊成阳, 程越强, 赵波, 韦韬, 严飞, 张焕国, 马婧. SGX技术的分析和研究. 软件学报, 2018, 29(9): 2778−2798. http://www.jos.org.cn/1000-9825/5594.htm
|