From a74957e9b9b89f1a01120aedb5d5fbfb9cf2d695 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Thu, 9 May 2019 17:47:57 +0800 Subject: upd --- chap/chap2.tex | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'chap/chap2.tex') diff --git a/chap/chap2.tex b/chap/chap2.tex index 19a604f..0ab30ea 100644 --- a/chap/chap2.tex +++ b/chap/chap2.tex @@ -213,7 +213,60 @@ enclave 中的数据。 通过将一个页设为不存在,绕过地址翻译,从一级缓存读取数据的攻击方式, Intel 将其称为L1终端错误(L1 Terminal Fault)\supercite{l1tf}。 Foreshadow-NG\supercite{foreshadowNG} 利用这种攻击方法,可以绕过操作系 -统和虚拟机的隔离。 +统和虚拟机的隔离。Foreshadow-NG 包含了 Foreshadow-OS 和 Foreshadow-VMM. + +% forshadow-OS +操作系统内核将虚拟内存页从内存交换至外部持久存储时,都需要清除页表项的 +存在位。但是,根据处理器的体系结构规范,内核可以根据需要,自由地使用标 +记为不存在的页表项中的剩余位。例如,操作系统可以保持这些位不变,将它们 +归零,或者使用它们来存储用于把页从磁盘复制回内存的元数据。因此,虽然非 +特权用户空间应用程序不能直接控制页表项,但是当页表项取消映射相应的虚拟 +页时,操作系统在页表项中留下的元数据仍然可以指向包含敏感数据的有效物理 +地址。在内核清除相应页表项中的存在位后,从用户空间解引用未映射的页将导 +致终端错误。 + +然而,危险的是,尽管错误存在,在页表项中的元数据表示在缓存中的物理地址 +的情况下,处理器仍然将一级数据高速缓存中未授权数据传递到瞬时乱序执行中。 +然后可以和其他瞬时执行攻击一样,将秘密数据从微架构瞬时执行域带入体系结 +构状态中,例如,使用基于缓存的隐蔽通道。更糟糕的是,如果操作系统支持大 +于 4KB 的页(例如,2MB 或 1GB),攻击者可以通过无意的映射访问最大页面大 +小的内存范围。由于所有软件本质上共享相同的物理地址空间,因此元数据创建 +的虚拟到物理映射可能指向属于操作系统内核,VMM 内存,SGX +enclave,或 SMM 内存的数据。在操作系统通过 munmap 系统调用释放内存时, +将页表项清零的常见情况下,攻击者可以访问存储在物理地址 0x00 的数据。 + +实验结果表明,在一个 i7-6820HQ CPU 上,Foreshadow-OS 通过利用瞬态执行, +可以从已清除存在位的页中读取一级缓存的数据。 + +% foreshadow-VMM + +虽然上述 Foreshadow-OS 变体允许无特权的攻击者使用未经授权的物理内存位置 +上的数据进行瞬时计算,但他们无法直接控制访问哪些物理地址。因此, +Foreshadow 攻击使用在可以直接控制客户机器物理地址和一级缓存标签比较的 +不可信虚拟机时时,会变得更有破坏性。 + +根据 Intel 处理器的架构规范\supercite{intel-spec},客户机物理地址经过基 +于 EPT 的转换过程以找到底层主机物理内存地址。英特尔的分 +析\supercite{l1tf}显示,终端错误发生时,虚拟地址到物理地址处于早期阶段, +在经过 EPT 转换之前,将转换出来的客户机物理地址传到一级缓存中进行标签比 +较。因此,恶意虚拟机可以控制用于访问一级缓存的瞬时指令的物理地址。特别 +的,不可信的恶意客户虚拟机可以在自己的客户页表中修改页表项,指向客户机 +物理内存。该地址不会经过 EPT 转换,和一级缓存中的标签进行比较,就像它是 +主机物理地址一样。 + +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{foreshadow-vmm.eps} + \caption{Foreshadow VMM 的一种使用场景。同一物理核上的虚拟机共享一级 + 缓存,攻击者可以操作其内存访问,读取受害者虚拟机在一级缓存的内容。} + \label{fig:foreshadow-vmm} +\end{figure} + +图 \ref{fig:foreshadow-vmm} 展示了一种情况,一个恶意的虚拟机可以利用瞬 +时执行攻击窃取属于同一处理器核的另一个虚拟机中的数据。这种攻击并不局限 +于超线程受害者,因为 Foreshadow-VMM 可以提取处理器物理核心一级数据高速 +缓存中的任何秘密。 + \subsubsection{LazyFP} -- cgit v1.2.3