可怕!CPU竟成了黑客的帮凶!

前情回顾

还记得我吗,我是阿Q,就是那个CPU一号车间的阿Q啊。如果你忘记了我,记得看看这里回忆一下哦:完了!CPU一味求快出事儿了!

自从我们车间用上了和后,生产效率那是大大提升,领导不仅在全厂的员工大会表扬了我们,还把这两项技术向全厂推广,在我们8个CPU核心车间都铺开了,性能甩开竞争对手CPU几条街。

可是,就在我们还沉醉在取得的成绩时,不知不觉我们竟埋下了灾难的种子······

可怕!CPU竟成了黑客的帮凶!

我和负责数据回写的老K互相看了一眼,都点头表示同意。

于是,就在等待的间隙,我们又给内存那家伙打了电话,让他把的内容也传过来。

等了一会儿,数据总算传了过来:

拿到结果之后,我们开始一边执行的比较指令,一边继续打电话给内存索要的内容。

比较指令执行的结果不出所料,果然是,接下来就要走入我们预测的分支,而我们提前已经将需要的数据准备到缓存中,省去了不少时间。

就这样,我们成功的预测了后续的路线,我们真是一群机智的小伙伴。

可怕!CPU竟成了黑客的帮凶!

老K安慰道:“没事儿,咱们只是提前把数据读到了我们的缓存中,没问题的,放心好啦”

我想了想也对,大不了我们提前做的准备工作白费了,没有多想就继续去执行>16的分支指令了。

随后,同样的事情也时有发生,渐渐的我们就习惯了。

灾难降临

夜越来越深,我们都有点犯困了,突然,领导来了一通电话,让我们放下手里的工作火速去他办公室。

我们几个不敢耽误,赶紧出发。

来到领导的办公室,里面多了两个陌生人,其中一个还被绑着,领导眉头紧锁,气氛很是紧张。

可怕!CPU竟成了黑客的帮凶!

真相大白

安全员显然看出了我们的疑惑,指着被捆绑的那个线程说道:“你把之前交代的再说一遍”

“几位大爷,你们之前是不是遇到了分支预测失败的情况,那人抬头看着我们。

“有啊,跟这有什么关系败了很正常嘛,既然是预测那就不能100%打包票能预测正确啊”,我回答道。

您说的没错,不过如果这个失败是我故意策划的呢/strong>”

可怕!CPU竟成了黑客的帮凶!

“好好好,我这就交代。你们把数据提前准备到了缓存中,我后面去访问这部分数据的时候,发现比访问其他内存快了很多”

“那可不,我们的缓存技术可不是吹牛的!哎等等,怎么又扯到缓存上去了,老K继续问道。

那人继续说道:“如果我想知道某个地址单元内的值,我就以它作为数组的偏移,去访问一片内存区域。利用你们会提前预测执行而且会把数据缓存的机制。你们虽然预测失败了,但对应的那一块数据已经在缓存中了,接着,我依次去访问那一片内存,看看谁的访问时间明显比其他部分短,那就知道哪一块被缓存了,再接着反推就能知道作为偏移的数值是多少了,按照这个思路我可以知道每一个地址单元的内容”

可怕!CPU竟成了黑客的帮凶!

以前的时候,线程执行在用户态和内核态时用的是同一本地址翻译手册,也就是人们说的,通过这本手册,我们CPU就能通过虚拟地址找到真实的内存页面。

现在好了,让线程运行在用户态和内核态时使用不同的手册,用户态线程的手册中,内核地址空间部分是一片空白,来一招釜底抽薪!

本以为我们可以回去了,没想到领导却给我们出了难题,“这祸是你们闯下的,人家操作系统那边虽然做了保护,你们是不是也该拿出点办法来呢,要不然以后我们CPU还怎么抬得起头来

你有什么好办法吗,帮帮我们吧!

幕后

本文描述的是两年前爆发的大名鼎鼎的CPU的与漏洞。

与是现代处理器普遍采用的优化机制。和传统软件漏洞不同,硬件级别的漏洞影响更大更深也更难以修复。

通过判断内存的访问速度来获知是否有被缓存,这类技术有一个专门的术语叫,即通过一些场外信息来分析得出重要结论,进而达成正常途径无法达成的目的。

后面的文章中此类手法的故事还将继续上演,敬请期待!

往期热门回顾

完了!CPU一味求快出事儿了!

哈希表哪家强大编程语言吵起来了!

内核地址空间大冒险4:线程切换

震撼!全网第一张源码分析全景图揭秘Nginx

一个整数+1引发的灾难

一网打尽!每个程序猿都该了解的黑客技术大汇总

看过无数Java GC文章,这5个问题你也未必知道!

一个Java对象的回忆录:垃圾回收

谁动了你的HTTPS流量/p>

路由器里的广告秘密

一个HTTP数据包的奇幻之旅

我是一个流氓软件线程

可怕!CPU竟成了黑客的帮凶!

来源:编程技术宇宙

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月11日
下一篇 2020年4月11日

相关推荐