联系
我们
投稿
反馈
评论 返回
顶部

内容字号: 默认 大号超大号

段落设置: 段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

你用了高性能CPU,我就可以窥探你的密码

2018-07-02 10:06 出处:互联网 人气: 评论(
仁科百华 家庭教师 高颗 香港人围堵大陆游客 绪川里绪 穿越仙剑之逍遥后宫 湖南留学生张丽 夜菜网 小伙注册芈月商标 警绳五花大绑 摩力极速

由于攻击的是硬件漏洞,因此目前市面所有主流操作系统,包括windows,linux,Mac OS都处在攻击范围内,隔离程度不够高的众多半虚拟化方案,Docker,LXC等,也在受影响范围,因此这个漏洞将极大地影响云计算服务提供商。目前Google,Amazon,国内的阿里,腾讯等大型云服务提供商都已宣布了补丁计划。

从业界厂商的角度看,尽管Intel,AMD,ARM各有说辞[7][8][9],但从专业从业人士的角度看,Intel妥妥地同时受到熔毁和幽灵两个漏洞影响,而AMD和ARM在熔毁漏洞面前也只是暂时安全,熔毁的攻击原理也适用于AMD和ARM,只是因为分支预测器结构不同、流水线长度较短导致可利用的时间窗口不大等等因素,才没有像Intel一样被熔毁攻破。而幽灵则针对分支预测器进行注入攻击,目前所有厂商的分支预测器部分都没有做比较好的安全防护,因此Intel和ARM,AMD都会受到影响,而且分支预测器为了提高性能,天生就设计成部分地址哈希进行模糊匹配的模式,使得相关防御措施很难在不伤害性能的情况下修补漏洞。

既然敏感数据已经被提取至CPU核心内部可以参与临时计算,那么就可以用它作为存储器访问的路标k,把内存中的第k块数据装入缓存。这大概要花费上百个时钟周期也就是大约几十纳秒,这个时间处在乱序执行允许的窗口范围内,如果窗口范围不够大了,还可以用其他手段再把这个窗口拉大一些。但终归到最后,乱序执行的指令要走到提交检查的一步,CPU检查发现这个敏感数据被访问了,就会把对应指令的结果抛掉,k的值被扔掉以后,恶意代码就无法读取到k的值了。而这里遗漏了关键的一点,在乱序执行中被装入缓存的内存第k块数据,并没有被清理。于是后继代码就可以大大方方地把相关内存地址都扫一遍,放在缓存里面的数据的访问延迟与放在内存里面的数据是不同的,如果扫描到第10块内存的时候发现它的响应速度特别快,就可以确定先前被读取上来的k值是10。

这时候大家才知道,原来具体漏洞在2017年6月-7月份左右就已经被多个团队独立发现,相关研究人员在当时就已经知会Intel、AMD、ARM等著名CPU设计(制造)公司和微软、苹果、linux kernel核心开发组等相关机构和团体,并在所有知情人中间形成了默契的封口令[3],众多参与者本来打算等到一两周之后所有补丁和更新都准备好了再对外公布,没想到并不知情的theregister网站从linux开源社区的邮件列表里发现了蛛丝马迹,提前捅破触发了公关危机,于是1月4号早上Intel也决定提前发布消息,随后谷歌的研究者也打破沉默,上线了那个早已准备好的漏洞介绍网站和相关论文[4],于是一切被公诸于世。

1.kfc里卖的有薯条、鸡块、汉堡、可乐。

在常规状态下,访问被保护的敏感区域会直接被权限鉴别的过程给拒绝,但是熔毁在这个小的时间窗口中,故意插入指令访问了一些本该被保护的关键区域,这些敏感数据就会被提至处理器核心内部的寄存器里参与运算。直到这一步,ROB仍然在维护超前执行状态 - 正常状态的分界线,整个系统仍然在保护之下,因为虽然敏感数据被提至处理器内部,但是并未经过安全检查和异常检查的确认,所以它的值只能用来作临时运算,不能用来参与正常运算,不会被更新到架构可见寄存器与缓存上,也就无法被上层软件读取,而等检查进行到它所处位置的时候,CPU就会发现问题,然后及时制止,所以不会发生问题。但是这里出现了整个漏洞利用中最漂亮的一步:时间差分攻击。

为什么之前没有发现这个漏洞?

这两个漏洞都具有同一个特点,利用了现代高性能微处理器中的关键特性 - 推测执行和乱序执行,这两项技术都是推动微处理器性能进步、让大家的电脑、手机能够高速运行越来越复杂应用的核心支柱。

针对幽灵漏洞,目前没有很好的防御方式,linux的发行版之一suse最近公开的一个安全更新显示[10],AMD和Intel已经向相关OS厂商推送了一个微码更新,这个微码更新会关闭分支预测来暂时封堵幽灵漏洞。由于分支预测对性能影响巨大,即便分支预测只被关闭一部分也很容易造成性能衰退二代左右的幅度,如果整个分支预测器都被关闭,CPU性能将退回2000年以前的水平。对于这个更新是否将被应用,相关从业人士正在持续跟进关注。

4.点餐小姐姐说,不好意思您前面还有一位,稍等下,但是后厨听到了,麻溜的做了个汉堡。

这个缝隙虽然隐蔽但是危害极大,研究者已经成功通过它偷出来了浏览器保存的网站密码。幸运的是偷密码的过程十分复杂,坏人这几天应该还来不及用它实际作恶;不幸的是堵上这个缝隙极度困难,而且看起来要付出电脑明显变慢的重大代价。

推测执行技术是指,处理器为了提高性能,会去提前猜测接下去需要执行什么动作,然后提前执行,如果发现推测错误,则回滚至正常状态。通常应用的推测执行技术都能达到80%-90%以上的推测准确率。需要指出的是,推测执行技术是一个大类技术的统称,包括分支预测,预读取,推测性内存访问,缓存缺失的重叠/乱序处理(MSHR)等等,幽灵漏洞就利用了分支预测、推测性内存访问和MSHR这三个特性。

5.轮到a狗仔点餐了,点餐小姐姐说。不能这样点哦,侵犯人家隐私了,保安把这个狗仔ccq!

下面是来自NGA用户kprismk的一个比喻。注意这是比喻,省略了大量细节:

可以看到,这些技术都是经过数十年发展验证的成熟技术,此前爆出过的也只是程序运行错误的功能bug,并没有如此严重的安全漏洞,而且推测执行和乱序执行对性能的提高都是成倍的影响力,例如在模拟器上的验证表明,关闭乱序执行大约会损失一半的性能,关闭推测执行中的分支预测则会将处理器的最大指令吞吐的理论上限打回上世纪90年代的水平,因此这两项技术已经成为当之无愧的高性能微处理器的结构顶梁柱。而根据推测执行和乱序执行的框架设计,其中有一个叫做重排序缓冲(ROB)的部件会负责树立推测状态和正常状态之间的分界线,有了ROB的保护之后,推测执行(分支预测)和乱序执行的状态信息就不会被上层感知,这是写在每一本计算机体系结构教科书里的内容,被一代又一代的工程师沿用。

电脑运行的时候,所有用到的数据都必须经过内存。这里面既有你至关重要的银行密码,也有你故意和非故意打开的莫名其妙小网站小程序。

漏洞原理
分享给小伙伴们:
本文标签:

更多文章

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

  • 蛮便宜
  • 抠门网
  • Copyright © 2002-2014 版权所有