新闻动态LATEST NEWS

今天火狐因客户而 成就,将来客户也因火狐而骄傲!

您当前位置: 首页 > 新闻动态 > 公司新闻
影响全球的    CPU漏洞深度解读:熔 断去与幽灵2018-01-06
来源:成都火狐狸 科技 

一 漏洞背景和影响

1月4日,国外安全研究 机构公布了两组CPU漏洞:

Meltdown(熔断),对应漏 洞CVE-2017-5754;

Spectre(幽灵),对应漏 洞CVE-2017-5753/CVE-2017-5715。

由于漏洞严重而且 影响范围广泛,引起了全球的关注。利用Meltdown漏洞,低权限用户 可以访问内核的内容,获取本地操作系统底层的信息;当用户通过浏览器访问了包含Spectre恶意利用程序的网 站时,用户的如帐号,密码,邮箱等个人隐私信息可能会被泄漏;在云服务场景中,利用Spectre可以突破用户间的 隔离,窃取其他用户的数据。Meltdown漏洞影响几乎所有 的Intel CPU和部分ARM CPU,而Spectre则影响所有的 Intel CPU和AMD CPU,以及主流的 ARM CPU。从个人电脑、服 务器、云计算机服务器到移动端的智能手机,都受到这两组硬件漏洞的影响。这两组漏洞来源于 芯片厂商为了提高CPU性能而引入的新特 性。现代CPU为了提高处理性能 ,会采用乱序执行(Out-of-Order Execution)和预测执行 (SpeculativePrediction)。乱序执行是指 CPU并不是严格按照指 令的顺序串行执行,而是根据相关性对指令进行分组并行执行,最后汇总处理各组指令执行的结果。预测执行是CPU根据当前掌握的信息预测某个条件判断的结果,然后选择对应的分支提前执行。乱序执行和预测执行 在遇到异常或发现分支预测错误时,CPU会丢弃之前执行的 结果,将CPU的状态恢复到乱序 执行或预测执行前的正确状态,然后选择对应正确的指令继续执行。这种异常处理机制保证了程序能够正确的执行,但是问题在于,CPU恢复状态时并不会 恢复CPU缓存的内容,而这 两组漏洞正是利用了这一设计上的缺陷进行测信道攻击。

二 漏洞原理解析

1、Meltdown漏洞原理

乱序执行可以简单 的分为三个阶段,如下图所示:每个阶段执行的操 作如下:

1)获取指令,解码 后存放到执行缓冲区Reservations Stations

2)乱序执行指令, 结果保存在一个结果序列中

3)退休期Retired Circle,重新排列结果序 列及安全检查(如地址访问的权限检查),提交结果到寄存器

结合Meltdown利用的代码片段来 看:

; rcx = kernel address

; rbx = probe array

1  mov al, byte [rcx]

2  shl rax, 0xc

3  mov rbx, qword [rbx + rax]

Meltdown漏洞的利用过程有 4个步骤:

1)        指令获取解码

2)     乱序执行3条指令,指令 2和指令3要等指令1中的读取内存地址 的内容完成后才开始执行,指令3会将要访问的 rbx数组元素所在的页 加载到CPU Cache中。

3)        对2)的结果进行重新排 列,对1-3条指令进行安全检 测,发现访问违例,会丢弃当前执行的所有结果,恢复CPU状态到乱序执行之 前的状态,但是并不会恢复CPU Cache的状态

4)        通过缓存测信道攻 击,可以知道哪一个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出内 核地址的内容

2、Spectre漏洞原理

与Meltdown类似,Spectre的原理是,当 CPU发现分支预测错误 时会丢弃分支执行的结果,恢复CPU的状态,但是不会 恢复CPU Cache的状态,利用这一 点可以突破进程间的访问限制(如浏览器沙箱)获取其他进程的数据。

Spectre的利用代码片段:

if (x < array1_size) {

y = array2[array1[x] * 256];

// do something using Y that is

// observable when speculatively executed

}

具体攻击过程可以 分为三个阶段:

1)训练CPU的分支预测单元使 其在运行利用代码时会进行特定的预测执行

2)预测执行使得 CPU将要访问的地址的 内容读取到CPU Cache中

3)通过缓存测信道攻 击,可以知道哪一个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出地 址的内容。

三 漏洞验证

目前开源社区 github已经放出来了漏洞 的验证代码(PoC),如下:

https://github.com/Eugnis/spectre-attack

https://github.com/feruxmax/meltdown

https://github.com/gkaindl/meltdown-poc

https://github.com/turbo/KPTI-PoC-Collection

经过我们和其他安 全研去究人员实际验证,漏洞可在Windows、Linux、Mac-OS等操作系统下,成 功读取任意指定内存地址的内容,如下图所示:

提醒:如果文章内 容有侵权或涉及您的隐私,请来信告知,我们在确认后会纠正或者删除。
© 2007-2018 www. All Rights Reserved. 蜀ICP备10202512号-1
免责声明 - 企业邮箱 - | 服务热线: 028-86289202
友情链接:    七匹狼彩票   V8彩票   金沙彩票   金沙彩票   七喜彩票集团