首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

听说只有CPU好的电脑才会有这个漏洞,反正我是中招了

链接:

https://pan.baidu.com/s/1FzFuPxxBPvYECvSRYqEsQg 密码: g2yi

下载后运行YuSi.exe

如果成功出现以下场景,说明你的CPU很好哦~哈哈哈哈

相信懂行的小伙伴已经猜出了这篇文章要讲啥了~

之前爆出的Intel CPU的两个漏洞,一个是spectre(幽灵),一个是meltdown(熔断),今天我们就来讲讲spectre漏洞是怎么回事~

spectre主要是针对CPU中的分支预测引起的漏洞。

现代CPU为了追求速度,采用了分支预测的策略,什么是分支预测呢?

举个栗子:

if(a>0) { password ="Yu Si"; }

这个语句就是一条分支,当a>0时执行该条指令,CPU为了快,会先根据之前的if分支情况预测这个if分支是否满足,然后提前执行该分支的代码。

一个你一看就懂的spectre攻击过程

1.进程A有一个私有变量password ="Yu Si"。

2.进程B想要获取进程A中的passWord的值,passWord的第一个字母是‘Y‘。

3.进程B构建数组array1,array2。其中,array1的大小为16,array2的大小为256,对应ASCII的数字。

4.令malicious_x = addr(‘Y‘)-addr(array1),那么array1[malicious_x] = ‘Y’就是passWord的第一个字母,但事实上没法合法访问到array1的下标malicious_x,因为数组越界了。

5.进程B中的代码:

6.步骤5中的if分支代码是为了欺骗CPU的分支预测器,进程B可以让前5次传的x都为满足if的,最后一次的x传入malicious_x,但此时CPU分支预测这个if还是满足的(因为前5次都满足),于是读array2[array1[malicious_x]]并把下标array1[malicious_x]的值传入cache中(事实上此处应该数组越界的,但CPU预执行是不检测的)。

7.CPU真的执行到这句了,但是if是false,不执行,于是程序不报错,但在步骤5中,array1[malicious_x]的值已经传到cache中了。

8.遍历array2,读取速度最快的元素,即是放到cache中的值,是array1[malicious_x],也就是passWord的第一个字母‘Y’,剩下的字母读取类似。该步骤是借助了CPU的缓存读数据速度比内存读数据快的原理,那么只要这个数据读取时间快的话就证明了这个数据在cache中,也就是我们要找的数据了,而越好的CPU中的cache读数据越快(和内存比),所以有这个漏洞的胖友们大概是CPU太好了吧(比如我

Q1:步骤5中虽然array1[malicious_x]已经放在cache中了,但我们还有测试的为了迷惑CPU分支的那些值不也进入cache了吗?

A1:因为那些值的大小都在0-15之间(array1size为16),可以用_mm_clflush函数可以将cache中的这些值(0-15)刷新掉,那么cache中只存在array1[malicious_x]。那么为啥array1[malicious_x]一定不在array1size之间呢?因为ascii的编码保证了,大家可以去看看ascii的编码,0-15位一般都不存在在字符串中。

Q2:步骤8中,具体怎么测试哪个数据更快呢?

A2:

用到了高精度的rdtscp来计时,time2是读取数据的时间,如果time2小于cache命中时间的阈值,那么认为这个数据是在cache中的。这里还硬编码了167和13进去,其实就是两个质数,目的就是让cache预读摸不着头脑,不会因为线性预读取干扰了测时。

这个是spectre的论文~论文最后有本文最开始的exe以及这篇文里出现的源代码(本文的代码是抽象出来的结果)

https://spectreattack.com/spectre.pdf

一些黑客可以利用spectre攻击来获取你的chrome存的很多密码↓

喜欢这篇文章的可以点赞加关注哦~也许下一期我们就会讲为啥spectre可以让你的chrome存的密码泄露?

下一期想要看中间人攻击还是spectre chrome可以留言告诉我哦~(挖坑无数的一个人

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180720G1I7ST00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券