From 33eed330c57290e7834702e1d719538640e4bea9 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Wed, 8 May 2019 16:11:05 +0800 Subject: upd --- chap/chap1.tex | 4 ++-- chap/chap2.tex | 34 ++++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/chap/chap1.tex b/chap/chap1.tex index e4ec1f6..4b26c79 100644 --- a/chap/chap1.tex +++ b/chap/chap1.tex @@ -49,10 +49,10 @@ DRAM、crossbar等组件,通过使用Ruby存储系统,还可以模拟自定 本文的组织结构如下: -第\ref{sec:intro}章~\nameref{sec:intro}。阐述本文的选题背景和研究意义、研究平台与环境,并简述论文 +第一章~\nameref{sec:intro}。阐述本文的选题背景和研究意义、研究平台与环境,并简述论文 的组织结构。 -第\ref{sec:attack}章~\nameref{sec:attack}。分析已经发现的 Meltdown 和 +第二章~\nameref{sec:attack}。分析已经发现的 Meltdown 和 Spectre 攻击的各个变体。 第三章~\nameref{sec:defense}。对已经提出的 Meltdown 和 diff --git a/chap/chap2.tex b/chap/chap2.tex index df129b4..0dd4296 100644 --- a/chap/chap2.tex +++ b/chap/chap2.tex @@ -37,15 +37,19 @@ Diffie-Hellman,RSA 等密码的私钥。\supercite{TimingAttack} 这是最早 \section{Meltdown和Spectre攻击} -Meltdown\supercite{meltdown} 和 Spectre\supercite{spectre} 是最早发现 -的两个利用瞬时指令的攻击。此后发现了更多的 Meltdown 和 Spectre 的变体。 -为了找出更多的攻击类型和分析它们的防御方案,Claudio Canella 等人对这些 -攻击及其防御做了系统性的研究\supercite{systematic},将所有瞬时执行攻击 -分为 Meltdown型攻击和 Spectre 型攻击两类。 +处理器在执行指令遇到异常,或者推测式执行了错误的指令后,会回卷错误执行 +的指令,丢弃它们对体系结构状态的修改,这些被回卷的指令称为瞬时指令 +(transient +instruction)。Meltdown\supercite{meltdown} 和 +Spectre\supercite{spectre} 是最早发现的两个利用瞬时指令的攻击。此后发现 +了更多的 Meltdown 和 Spectre 的变体。为了找出更多的攻击类型和分析它们的 +防御方案,Claudio Canella 等人对这些攻击及其防御做了系统性的研 +究\supercite{systematic},将所有瞬时执行攻击分为 Meltdown型攻击 +和 Spectre 型攻击两类。 \subsection{Meltdown型攻击} -Meltdown型攻击利用的是处理器异常产生的瞬时指令,这些指令使用了体系结构 +Meltdown 型攻击利用的是处理器异常产生的瞬时指令,这些指令使用了体系结构 层次上不可访问的数据,从而绕过硬件的安全策略,泄露体系结构层次上不可访 问的数据。 @@ -58,6 +62,24 @@ Meltdown型攻击利用的是处理器异常产生的瞬时指令,这些指令 可以读取内核地址空间的数据,在产生异常前,攻击者构造的瞬时指令序列可以 将读取到的数据通过隐蔽信道发送给攻击者。 +以下是一段 Meltdown 攻击的示例代码,通过它可以读取内核地址空间的数据: + +\begin{minted}{nasm} +xor rax, rax +retry: +mov al, byte [rcx] ; 读取内核空间的数据 +shl rax, 0xc +jz retry +mov rbx, qword [rbx + rax] ; 访问探测数组 +\end{minted} + +以上 X86 指令读取了以 rcx 为地址的内核空间的数据,在用户态下,这个读取 +内核空间数据的指令会产生异常,但是在处理器产生异常之前,这条指令可以将 +内核空间的数据读至寄存器,并且其后的指令也会执行,访问 rbx 指向的探测数 +组。在处理器回卷了产生异常的指令和其后执行的指令后,高速缓存中仍然保留 +了探测数组和内核数据相关的元素,从而攻击者可以通过扫描探测数组的每一 +项,观察访问时间,以推测内核空间数据的值。 + \subsubsection{Foreshadow} Foreshadow\supercite{foreshadow} 是一种可以读取 Intel SGX enclave 中秘 -- cgit v1.2.3