diff options
Diffstat (limited to 'chap/chap2.tex')
-rw-r--r-- | chap/chap2.tex | 78 |
1 files changed, 42 insertions, 36 deletions
diff --git a/chap/chap2.tex b/chap/chap2.tex index 86ab846..7f6b4f8 100644 --- a/chap/chap2.tex +++ b/chap/chap2.tex @@ -38,7 +38,7 @@ Diffie-Hellman,RSA 等密码的私钥。\supercite{TimingAttack} 这是最早 的数据,通过测量访问时间推断受害者是否访问了这个共享的地址 \end{itemize} -\section{Meltdown和Spectre攻击} +\section{Meltdown 和 Spectre 攻击的各种变体} 处理器在执行指令遇到异常,或者推测式执行了错误的指令后,会回卷错误执行 的指令,丢弃它们对体系结构状态的修改,这些被回卷的指令称为暂态指令 @@ -50,13 +50,13 @@ Spectre\supercite{spectre} 是最早发现的两个利用暂态指令的攻击 究\supercite{systematic},将所有暂态执行攻击分为 Meltdown型攻击 和 Spectre 型攻击两类。 -\subsection{Meltdown型攻击} +\subsection{Meltdown 型攻击} Meltdown 型攻击利用的是处理器异常产生的暂态指令,这些指令使用了体系结构 层次上不可访问的数据,从而绕过硬件的安全策略,泄露体系结构层次上不可访 问的数据。 -\subsubsection{Meltdown} +\subsubsection{“熔断”(Meltdown)攻击} 内存隔离是现代操作系统的核心安全功能之一。操作系统确保用户程序无法访问 其他程序的内存或内核的内存。这种隔离是现代计算环境的基石,使得系统上可 @@ -152,21 +152,21 @@ Meltdown 打破了处理器内存隔离功能提供的所有安全保障。这 度、TLB 和高速缓存大小、DRAM 速度等,可以以 3.2KB/s 到 503KB/s 的速度 读取内核内存。因此,大量系统受到影响。 -\subsubsection{Foreshadow} +\subsubsection{“预兆”(Foreshadow)攻击} % foreshadow introduction 由于现代广泛使用的操作系统和应用程序的大小可以轻松地达到数百万行代码, 并且单个漏洞通常会破坏所有安全保证,所以在安全上很难信任现有的操作系统 和应用程序。为了应对这些挑战,学术界和工业界开发了可信执行环境 (Trusted Execution Environment, TEE),其中包含一个处理器常规执行环境 -之外的非分层保护模型,用于隔离应用程序,称为 enclave. TEE 利用只含有处 -理器和微码的最小可信计算基础(Trusted Computing Base),来保证相互不信 -任的 enclave 的保密性和完整性。 每个 enclave 的私有处理器和内存状态只可 -以由其内部运行的代码访问,并且在任何特权级别(包括潜在的恶意操作系统和 -虚拟机管理程序)上运行的所有其他 enclave 和软件都无法访问。除了强大的内 -存隔离外,TEE 通常还提供一个证明(attestation)原语,从而可以本地或远程 -地在运行时从密码学上验证特定的 enclave 已经加载到真正的(因而被认为是安 -全的)TEE 处理器上。 +之外的非分层保护模型,用于隔离应用程序,称为隔离区(enclave)。 TEE 利 +用只含有处理器和微码的最小可信计算基础(Trusted Computing Base),来保 +证相互不信任的隔离区的保密性和完整性。 每个隔离区的私有处理器和 +内存状态只可以由其内部运行的代码访问,并且在任何特权级别(包括潜在的恶 + 意操作系统和虚拟机管理程序)上运行的所有其他隔离区和软件都无法访 +问。除了强大的内存隔离外,TEE 通常还提供一个证明(attestation)原语, +从而可以本地或远程地在运行时从密码学上验证特定的隔离区已经加载到真 +正的(因而被认为是安全的)TEE 处理器上。 随着 2013 年 Intel 软件防护扩展(Software Guard eXtention, SGX)\supercite{sgx}的发布,硬件强制的 TEE 隔离和证明可以在现成的x86处 @@ -180,28 +180,28 @@ Whisper Systems 依靠 SGX 在 Signal 网络中实现隐私友好的联系人发 然而,当前的 SGX 实现并没有满足它的安全目标。Foreshadow 攻击利用现 代 Intel 处理器中的乱序执行机制,可以从处理器的缓存中泄露明文 -的 enclave 数据。Foreshadow 攻击的核心是利用 Meltdown 攻击相同的处理器 +的隔离区数据。Foreshadow 攻击的核心是利用 Meltdown 攻击相同的处理器 漏洞,即处理器的访问控制逻辑允许攻击者在瞬态的乱序执行指令回滚之前,使 用未授权内存访问的结果。然而,Meltdown 攻击针对传统的分层保护域, 而 Foreshadow 考虑了一种非常不同的攻击模型,攻击者的目标不是从用户空间 -读取内核内存,而是破坏最先进的地址空间内 enclave 保护域,它不在已经部署 +读取内核内存,而是破坏最先进的地址空间内隔离区保护域,它不在已经部署 的用于防御 Meltdown 的内核页表隔离技术的保护之内。Foreshadow 使用了一 种新的漏洞利用方法,并且基本的攻击完全可以由无特权的攻击者使用,而无需 用 root 权限访问受害者机器。对于有 root 权限的攻击者,还可以使用一组可 选的内核级优化技术,进一步降低 Foreshadow 攻击的噪声。 Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响,在没有微码补 -丁的情况下,当前的SGX处理器无法保证 enclave 的数据保密性,也无法证 -明enclave 执行的完整性,包括英特尔自己的 enclave 架构。此外,尽管 SGX +丁的情况下,当前的SGX处理器无法保证隔离区的数据保密性,也无法证 +明隔离区执行的完整性,包括英特尔自己的隔离区架构。此外,尽管 SGX 希望内核级别的攻击者,但现有的 SGX 处理器甚至无法在没有特权的用户空间 -攻击者面前保护 enclave 中的秘密数据。 +攻击者面前保护隔离区中的秘密数据。 所有先前已知的针对 SGX 的攻击都依赖于软件特定的侧信道泄露或软件漏 -洞。 人们普遍认为,精心编写的 enclave 可以通过坚持良好的编码实践,例如 +洞。 人们普遍认为,精心编写的隔离区可以通过坚持良好的编码实践,例如 不使用依赖秘密数据的分支,来防止信息泄露。Intel 认为这些攻击都没有破 -坏 SGX 的安全保证,防止侧信道攻击应该是 enclave 开发者的责任。 然 +坏 SGX 的安全保证,防止侧信道攻击应该是隔离区开发者的责任。 然 而,Foreshadow 否定了这一论点,因为它完全依赖于基本的 Intel x86 处理器 -的行为,并且不利用任何软件漏洞,甚至不需要知道受害者 enclave 的源代码。 +的行为,并且不利用任何软件漏洞,甚至不需要知道受害者隔离区的源代码。 % foreshadow attack \begin{figure}[htbp] @@ -217,9 +217,9 @@ Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响,在 如果在虚拟机环境中,则需要如图 \ref{fig:addr-tran} 所示,增加一个扩展 页表(Extended Page Table,EPT)的访问过程,将客户机的物理地址翻译为底 层物理机的物理地址。最后,启用了 Intel SGX 的处理器还会进一步检查地址 -翻译的结果,确保这个地址翻译遵守硬件强制的 enclave 访问控制限制。如果 +翻译的结果,确保这个地址翻译遵守硬件强制的隔离区访问控制限制。如果 这三个独立的阶段报告一个访问违例,则处理器抛出一个页错误,控制流转向异 -常处理代码,而对于 SGX,大多数的 enclave 内存违例会被处理器忽视,将内 +常处理代码,而对于 SGX,大多数的隔离区内存违例会被处理器忽视,将内 存装载指令得到的值设为 abort page 的值 -1. 在体系结构层次上,以上的地址翻译过程在文档中有精确的描述。现代处理器为 @@ -236,13 +236,13 @@ Foreshadow 对 Intel SGX 所追求的安全模型产生了深远的影响,在 路的物理地址标签对比,在某一个有效的缓存路存在正确的物理地址时,此时一 级缓存命中,数据返回至处理器的执行单元。 -Foreshadow\supercite{foreshadow} 是一种可以读取 Intel SGX enclave 中秘 +Foreshadow\supercite{foreshadow} 是一种可以读取 Intel SGX 隔离区中秘 密数据的 Meltdown 型攻击。如果对 SGX 使用 Meltdown 攻击,攻击者读取未授 -权的 enclave 内存,不会产生异常,而是读出 abort page 值 -1. 但是 abort +权的隔离区内存,不会产生异常,而是读出 abort page 值 -1. 但是 abort page 只在页权限检查通过后发生,攻击者可以将该页 present 位清除,即将该 页设为不存在,此时处理器便会产生异常,但由于一级缓存使用虚拟地址索引, 因此仍然可以从一级缓存读取该虚拟地址中的数据,从而暂态指令可以泄露 SGX -enclave 中的数据。 +隔离区中的数据。 通过将一个页设为不存在,绕过地址翻译,从一级缓存读取数据的攻击方 式,Intel 将其称为L1终端错误(L1 Terminal @@ -269,7 +269,7 @@ Foreshadow-OS 利用了这种错误造成的暂态执行的指令。虽然访问 于 4KB 的页(例如,2MB 或 1GB),攻击者可以通过无意的映射访问最大页面大 小的内存范围。由于所有软件本质上共享相同的物理地址空间,因此元数据创建 的虚拟到物理映射可能指向属于操作系统内核,VMM 内存,SGX -enclave,或 SMM 内存的数据。在操作系统通过 munmap 系统调用释放内存时, +隔离区,或 SMM 内存的数据。在操作系统通过 munmap 系统调用释放内存时, 将页表项清零的常见情况下,攻击者可以访问存储在物理地址 0x00 的数据。 实验结果表明,在一个 i7-6820HQ CPU 上,Foreshadow-OS 通过利用瞬态执行, @@ -304,7 +304,7 @@ Foreshadow 攻击使用在可以直接控制客户机器物理地址和一级缓 缓存中的任何秘密。 -\subsubsection{LazyFP} +\subsubsection{延迟浮点寄存器状态还原(LazyFP)攻击} % introduction LazyFP\supercite{lazyfp} 是一个 Meltdown 类型的攻击,它可以跨越进程和虚 @@ -829,16 +829,22 @@ flag 的缓存状态会发生变化。如果 \verb|bitstream[x]| 为 1,则 flag \subsection{SgxPectre} SgxPectre \supercite{sgxpectre} 将 Spectre 攻击用于泄露 Intel SGX 环境 -中的数据。通过在 SGX enclave 之外污染 enclave 的 BTB 和 RSB,改变 SGX -enclave 中的控制流,将秘密数据泄露至 SGX 之外。 - -\subsection{MeltdownPrime 和 SpectrePrime} - -MeltdownPrime 和 SpectrePrime \supercite{meltdownprime} 是一种使用 -Prime+Probe 方式进行 Meltdown 和 Spectre 攻击的形式。通过利用缓存一致 -性协议的缓存行失效机制,可以达到和 Flush+Reload 方式的同等精度。 +中的数据。执行隔离区内的代码时,使用的分支预测器仍然受隔离区外代码影响, +并且暂态执行的代码可以在隔离区外产生可见的缓存状态更改。因此攻击者可以从 +推断出隔离区内的内存或寄存器的数据,破坏了 SGX 保证的保密性。 +SgxPectre 通过在 SGX 隔离区之外污染隔离区的 BTB 和 RSB,改变 SGX +隔离区中的控制流,将秘密数据泄露至 SGX 之外。 + +% \subsection{MeltdownPrime 和 SpectrePrime} +% +% MeltdownPrime 和 SpectrePrime \supercite{meltdownprime} 是一种使用 +% Prime+Probe 方式进行 Meltdown 和 Spectre 攻击的形式。通过利用缓存一致 +% 性协议的缓存行失效机制,可以达到和 Flush+Reload 方式的同等精度。 \section{小结} 本章首先介绍侧信道攻击,接着分类介绍各个变体的 Meltdown 型攻击和 -Spectre 型攻击,最后介绍 NetSpectre 等攻击的其他利用形式。 +Spectre 型攻击,其中 Meltdown 型攻击利用来自异常的暂态指令,主要的攻击 +有 Meltdown, Foreshadow 和 LazyFP,Spectre 型攻击利用错误的推测式执行 +产生的暂态指令,根据执行预测的部件分为 Spectre-PHT, Spectre-BTB, +Spectre-RSB 和 Spectre-STL,最后介绍 NetSpectre 等攻击的其他利用形式。 |