intel漏洞详细解析

Posted Hsin wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了intel漏洞详细解析相关的知识,希望对你有一定的参考价值。

1. CVE-2017-5754(Meltdown):恶意数据缓存加载
即采用特定指令,探测内核访问不到的内存内容。
通过本地运行特定程序的方式读取系统运行的CPU缓存,获得当前运行系统缓存的所有信息

比喻:https://baijiahao.baidu.com/s?id=1588835621748074141&wfr=spider&for=pc
简化的例子:https://baijiahao.baidu.com/s?id=1589161700913499450&wfr=spider&for=pc

1)乱序执行:
代码:
a = 1; b = 2; c = 3; d = a + b + c;
CPU:
a = 1
b = 2 -> d = a + b + c;
c = 3
乱序执行出现bug -> oops -> 恢复现场 -> cache中的数据仍存在 -> 通过cache的访问延时来推测

2)Meltdown –限制
只能访问同一地址空间的内容,因此被攻击的数据必须与攻击者位于同一地址空间。
传统的Linux进程与内核采用同一页表,成为用户程序获取内核数据的基础。
理论上,用户程序可以获取位于同一地址空间的任何数据(比如没有r权限的数据)。
另外,攻击手段依赖CPU的设计失误,也就是乱序执行时不检查访问权限,因此只对intel的CPU有效。

3)Meltdown –防御
内核与用户态页表隔离
KASLR: kernel address isolation to have side-channels efficiently removed
KPTI: Kernel Page Table Isolation

4)性能问题
由于引进了PCID技术,性能影响较小
PCID:
进程切换不需要刷新TLB(ASID in ARM)
12bits: 4096项
多核问题

 

2. CVE-2017-5753(Spectre1):分支目标注入
即利用了间接分支预测器,有意让间接分支目标出现错误的(攻击者指定的)预测。

 

3. CVE-2017-5715(Spectre2):边界检查旁路
即利用了条件分支指令之后的预测执行,有意让条件分支出现错误的(攻击者指定的)预测。

if (condition){
codea();
}
codeb();

CPU执行顺序(预测):两个分支同时执行
if (condition) > codea() > codeb() > ...
                    > 回退


Meltdown vs Spectre
Meltdown: 攻击者在自己的代码中访问目标数据,依赖CPU的乱序执行不检查权限Bug
Spectre: 攻击者创造条件,让攻击者之外的代码去访问目标数据

 

以上是关于intel漏洞详细解析的主要内容,如果未能解决你的问题,请参考以下文章

转帖intel 2018年1 月2号爆出漏洞分析 知乎匿名用户

Intel CPU 漏洞分析

Intel Quartus Prime Pro Edition 权限提升漏洞

使用Intel PT与IPTAnalyzer进行漏洞利用

Centos打补丁解决intel的Spectre和Meltdown漏洞

亲历Intel CPU漏洞的正面袭击