Spectre漏洞是什么,第1张

Spectre漏洞是分支预测实现中存在的硬件缺陷和安全漏洞,受具有预测执行功能的现代微处理器的影响。漏洞利用是一种基于时间的绕过攻击,它允许恶意进程获取映射内存中其他程序的数据内容。

Spectre漏洞是分支预测实现中存在的硬件缺陷和安全漏洞,受具有预测执行功能的现代微处理器的影响。漏洞利用是一种基于时间的绕过攻击,它允许恶意进程获取映射内存中其他程序的数据内容。

Spectre漏洞是什么,Spectre漏洞是什么,第2张

简介

厉鬼是一系列的漏洞。根据攻击行为的类型,给出了两个通用漏洞公开标识,CVE-2017-5753(边界检查旁路)和CVE-2017-5715(分支目标注入)。2018年1月又伴随了一个,也是基于投机操作机制的,属于重量级的,由于缺陷是由投机操作机制造成的,不同的处理器架构实现投机操作的方式不同,所以不能从根源上修复缺陷,只能通过“看错了什么”的方法来预防,而且由于机制的原因,各种解决方案都有不可预知的性能下降。

CVE-2017-5753依赖于正在运行的JIT系统,并且已经发现用于Javascript的JIT引擎存在此漏洞。一个网站可以读取存储在浏览器中的另一个网站的数据或者浏览器本身的内存。Firefox57.0.4 (part)和Chrome 64通过为每个网站分配一个专用的浏览器进程来阻止此类攻击;操作系统由重写的编译器重新编译,以阻止利用此漏洞的攻击。

对于CVE-2017-5715,除了软件修改,处理器还需要微码更新来阻止此类攻击。

历史

Spectre漏洞是Google Project Zero的Jann Horn独立发现的,Paul Kocher与Daniel Genkin、Mike Hamburg、Moritz Lipp、Yuval Yarom合作发现了这个问题。微软漏洞研究已经把这个问题扩展到浏览器JavaScript的JIT引擎。2017年6月1日,受影响的硬件供应商意识到了这个问题。2018年1月3日,该漏洞与另一个安全漏洞一起被公布。

原则

Spectre漏洞是一个可以强制用户操作系统上的其他程序访问其程序计算机内存中任何位置的漏洞空。

Spectre漏洞不是一个可以轻易修复的单一漏洞,而是一类潜在漏洞的总和。它们都利用了“预测执行”的副作用,这是现代微处理器用来减少内存延迟和加快执行速度的常见方法。具体来说,Spectre漏洞侧重于分支预测,这是预测执行的一部分。与同时披露的相关漏洞的“熔毁”不同,Spectre漏洞是更为一般的漏洞,不依赖于单个处理器上的内存管理和系统保护的具体功能。

白皮书的出发点是攻击带有侧通道时序的分支预测机制,这是现代微处理器乱序执行的一部分。尽管处理器的文档保证在体系结构级别上,在获得正确的结果之后,由预测错误引起的任何后果将被取消,但是预测执行仍然可能留下副作用,例如加载的高速缓存行。这些所谓的非功能方面会影响计算环境。如果此类副作用(包括但不限于内存访问时间)对恶意程序可见,并且可能与受害者进程保存的敏感数据相关,则这些副作用可能会使敏感数据变得可识别。即使正式的安全设计在架构级别正常工作,这种情况仍然会发生。在这种情况下,针对代码执行的低级微体系结构优化仍然可能会泄漏一些对正常程序的正确执行并不十分重要的信息。

Spectre漏洞文件显示了完成攻击的四个基本步骤:

首先阐述了在现代处理器中,恶意程序可以通过程序的内部操作来操纵分支预测逻辑,从而提前判断分支预测的命中或失败。

后来表明缓存命中和未命中的区别可以可靠定时,所以应该是简单的非功能性区别,但实际上可以作为一个秘密通道,从无关信息中提取进程的内部工作信息。

然后,基于一个简单的示例程序和一个运行在浏览器沙箱中的JavaScript片段,将结果与面向返回的编程攻击原理进行综合;在这两种情况下,只需在现有浏览器中使用普通编译器或JavaScript引擎生成的代码,利用条件分支的预测执行,受害进程的整个地址空(即运行程序的内容)就可读了。基本思想是找出现有代码中不可访问的数据可能涉及预测执行的地方,操纵处理器以使预测执行必须触及数据的实际内容,然后对处理器的副作用计时。此时,预取机制已经加载了一个高速缓存行,从而加快了对该高速缓存行的数据访问。

最后,本文将这种攻击推广到受害者进程的任何非功能状态。然后,讨论了总线仲裁延迟等非功能性影响。

Spectre漏洞和flush漏洞的根本区别在于,后者取决于现代英特尔处理器的特定功能:CPU可能会被诱惑预测执行到受保护的系统数据中,并被迫输入和处理相关的安全异常。Spectre中的统计特性更为明显:尽力以某种方式调优处理器的分支预测机制,利用现有库中可用(或不可用)的代码来实现基本相同的事情。

或者换句话说,正如熔毁的论文所说:“熔毁和厉鬼攻击在几个方面是不同的,其中值得注意的是厉鬼需要定制受害者进程的软件环境,但是适用的CPU更广泛,KAISER对其无效。

影响

截至2018年,几乎所有计算机系统都受到Spectre漏洞的影响,包括台式机、笔记本电脑和移动设备。具体来说,Spectre漏洞已被证明在英特尔、AMD和ARM处理器上有效。英特尔官方对报道的安全漏洞做出了回应。根据AMD的一份声明,Spectre漏洞的第二个变种并没有出现在AMD处理器上,而且由于AMD架构的不同,“风险接近于零”。

目前Spectre漏洞只能造成用户级程序之间的相互作用,但这种攻击方式似乎还可以进一步发展。虽然比熔毁更难正确使用,但由于其通用性,Spectre漏洞可能更难抵御。最初的白皮书甚至推测,为了完全解决这个问题,可能需要对微处理器架构进行重大更改。

此外,对于云提供商而言,Spectre漏洞的影响要大于cloud漏洞。熔毁漏洞使未经授权的应用程序能够读取特权内存并获取运行在同一云服务器上的进程的敏感数据,而Spectre漏洞使恶意程序能够诱使虚拟机管理程序将数据传输到运行在其上的客户端系统。

防御措施

由于Spectre漏洞是一种完整的攻击,很有可能一个补丁无法完全解决。虽然这个漏洞的一些特例已经处理过了,但是介绍“厉鬼”和“熔毁”的网站也说厉鬼漏洞很难修复,所以会困扰我们很久。微软Windows系列操作系统于2018年初发布系统补丁,英特尔在事件中多次表示修复漏洞对性能影响不大,但微软测试显示,如果安装Windows 7和Windows 8操作系统,使用2015年或更早制造的英特尔芯片,更新后的速度会明显变慢,直到用户能感觉到差异,还有人说性能下降了30%左右,尤其是较老的Haswell架构和之前的芯片。但如果安装Windows 10,使用Skylake、Kaby Lake等更新的英特尔芯片,性能下降不明显。

然而,有几个程序可以帮助保护家庭计算机和相关设备免受“崩溃”和“幽灵”漏洞的影响。

嵌入网站的JavaScript也可以用来攻击。Chrome 64将默认包含针对此攻击的缓解措施,Chrome 63用户可以通过启用站点隔离功能(Chrome://flags # enable-site-per-process)来手动缓解攻击。在Firefox 57.0.4中,Mozilla正在降低JavaScript计时器的准确性,以帮助防止计时攻击,为未来版本计划的时间模糊技术也在发挥作用。此外,可以通过禁用JavaScript(如NoScript)来防止基于浏览器的攻击。

2018年1月4日,谷歌在其安全博客上详细介绍了新技术“Retpoline”,可以用可以忽略的处理器开销克服Spectre漏洞。它包括在编译器编译期间使间接分支跳转到不同的目标,以减少易受攻击的无序执行。虽然这项技术是为x86指令集开发的,但谷歌工程师认为这项技术也可以用于其他处理器。

还有人建议,在选择性刷新翻译后备缓冲区(TLB)功能的处理器上,可以减少修补漏洞造成的性能损失。此功能在英特尔64架构下称为进程上下文标识符(PCID),在Alpha下称为地址空号(ASN)。这是因为选择性刷新可以隔离对漏洞至关重要的进程和转换后备缓冲区(TLB)行为,而不是不断刷新整个TLB,这是性能损失的主要原因。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Spectre漏洞是什么

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情