Intel芯片级安全漏洞Meltdown和Spectre

1. 事件简介
两组CPU特性漏洞:
"Meltdown"(CVE-2017-5754)
"Spectre"(CVE-2017-5753 & CVE-2017-5715)
漏洞会造成CPU运作机制上的信息泄露,低权级的攻击者可以通过漏洞来远程泄露(浏览器形式)
用户信息或本地泄露更高权级的内存信息。

2. 影响范围:
每个人以及每台设备都会受到影响。所有芯片厂商(Intel, AMD, ARM)和主要的操作系统
(Windows, Linux, macOS, Android, ChromeOS)、云服务提供者 (Amazon, Google, Microsoft) 都会有影响。

3. 背景
现代处理器为了更好利用处理器资源,已经开始启用并行执行,这个技术已经应用了20年左右(1995年开始);
CPU的推测执行(Speculative Execution)技术:
在当前的指令或分支还未执行完成前就开始执行可能会被执行的指令或分支,
如果猜对了,直接使用,CPU执行加速了,
如果猜错了,则取消操作并恢复到原来的现场(寄存器,内存等),结果会被忽略。

4. 漏洞信息
“猜错了”存在副作用,比如TLB或缓存状态并没有被回滚。
可被黑客通过旁道攻击(Side Channel Attack)的方式获取到缓存的内容。如果攻击者能触发推测执行去访问指定
的敏感数据区域的话,就可能可以读取到原本是其它用户或更高特权级的敏感数据。

Meltdown:会打破应用程序和操作系统之间的隔离,软件可以直接访问内存,从而可直接调取其他应用程序和操作系统的资源
Spectre:打破不同应用程序之间的隔离,可以让黑客进行伪装,骗过系统的检测,最终达到调取资源的目的

攻击的三种场景:
1) “边界检查绕过”:通过污染分支预测,来绕过kernel或hypervisor的内存对象边界检测。比如,攻击者可以对高权级的代码段,或虚拟环境中hypercall,通过构造的恶意代码来触发有越界的数据下标,造成越界访问。
2) “分支目标注入”: 污染分支预测。抽象模型比较好的代码往往带有间接函数指针调用的情况,CPU在处理时需要会进行必要的内存访问,这个过程有点慢,所以CPU会预测分支。攻击者可以通过类似的ROP的方式来进行信息泄露。
3) 流氓数据加载”:部分CPU上,为了速度并不是每次都对指令作权限检查的,检查的条件存在一定的缺陷;

实际攻击场景可做到:
泄露出本地操作系统底层运作信息,秘钥信息等;
通过获取泄露的信息,可以绕过内核(Kernel), 虚拟机超级管理器(HyperVisor)的隔离防护;
云服务中,可以泄露到其它租户隐私信息;
通过浏览器泄露受害者的帐号,密码,内容,邮箱, cookie等用户隐私信息;

5. 解决方法
几大系统厂商各自在操作系统内核中引入了KPTI的技术,旨在和用户态的页表隔离,这样一来就可以
解决”Meltdown”和”Spectre”漏洞问题,但可能会带来5%到30%性能上的损失。

参考:http://www.360zhijia.com/360anquanke/335872.html

 http://xiaogr.com/?p=163

原文地址:https://www.cnblogs.com/stellar/p/8204163.html