Meltdown和Spectre有什么区别?

时间:2018-01-11 06:09:08

标签: caching intel processor speculative-execution spectre

最近发现的硬件漏洞Meltdown和Spectre之间的主要区别是什么?我知道他们都依赖于投机执行,但他们如何彼此不同?

3 个答案:

答案 0 :(得分:2)

要开始......

关于Meltdown(Moritz Lapp等人)和Spectre(Paul Kocher等人)的论文将通过校对来改进......后者在1.4节中将Spectre与Meltdown进行了比较。这“屏蔽”屏障,保持内核的内容不可访问,以便可以每秒100 KB读取运行时值,并且误差较小。禁止内存访问会导致“陷阱”,但是,在陷阱被触发之前,推测进一步代码的推进执行已经改变了缓存状态(因为实际的内存访问是由ghost进行的),它在取消其他效果后仍然存在。幽灵执行。可以检测到这些变化。

然而,幽灵通过向IF提供多个无害的用法,依赖于误导微码中的分支预测...那么......;类型语句,然后是特别选择的数据,使得测试结果为假,但是,通常的结果是真的,重影执行将继续访问某些感兴趣的位置并根据其值修改存储器位置。然后,“false”结果导致撤消所有更改 - 除了缓存状态。 或者,分支目标缓冲区可能被误导,因此将执行代码的重影执行,这些代码将访问应该无法访问的感兴趣的内容,并且结果会被抑制,但副作用仍然存在。

似乎超过一百条指令可能处于推测执行的不同阶段,因此可能存在相对复杂的探测代码。

答案 1 :(得分:1)

消融

Meltdown打破了用户应用程序和操作系统之间最基本的隔离。这种攻击允许程序访问内存,从而访问其他程序和操作系统的秘密。

如果您的计算机具有易受攻击的处理器并运行未修补的操作系统,则在不泄漏信息的情况下处理敏感信息是不安全的。这既适用于个人计算机,也适用于云基础架构。幸运的是,有针对Meltdown的软件补丁。

克特

幽灵打破了不同应用程序之间的隔离。它允许攻击者欺骗无错误的程序,这些程序遵循最佳实践,泄露其秘密。实际上,对所述最佳实践的安全检查实际上增加了攻击面并且可能使应用程序更容易受到Spectre的影响

Spectre比Meltdown更难开发,但它也更难以缓解。但是,可以通过软件补丁防止基于Specter的特定已知漏洞利用。

来源:

https://meltdownattack.com

为了更好地理解你还想在Spectre& amp;由Computerphile粉碎:

https://www.youtube.com/watch?v=I5mRwzVvFGE

答案 2 :(得分:1)

  

最近发现的硬件漏洞Meltdown和Spectre之间的主要区别是什么?

克特

幽灵攻击有两种风格。最危险的味道 Spectre使用分支错误预测和缓存副作用来读取当前进程虚拟内存中的任何字节。它适用于各种处理器,包括移动电话,桌子等。

那么,为什么我们不能只读取当前进程中的任何字节,没有任何Spectre?为什么Spectre很危险?有多种语言可以创建沙箱(JavaScript)或虚拟机(Java),以便将本地计算机与您从Internet下载的潜在危险代码隔离开来。

由于Spectre,不再存在此类隔离,因此从网站下载的JavaScript可以读取浏览器中的任何数据。可能存在一些密码,信用卡号和其他敏感信息。

消融

Meltdown是某些处理器(英特尔,某些ARM,某些IBM POWER)上的硬件问题,它们并行读取内存和检查权限。这样就可以读取您无权访问的内存。例如,由于Meltdown,用户进程能够读取内核内存。

为什么Meltdown是危险的?内核存储加密密钥,密码甚至是其他进程的物理页面,由于Meltdown可能会从系统中的任何用户进程读取。

Spectre vs Meltdown

Spectre和Meltdown之间的主要区别在于,由于Spectre你可以读取或欺骗其他进程在相同的权限级别泄漏内存,使用Meltdown你可以读取你没有的内存访问权限

概念证明

这是我在基于99行代码中的基于Linux Spectre的Meltdown(即2合1)概念验证:

https://github.com/berestovskyy/spectre-meltdown

它允许使用边界检查旁路(即Spectre)读取内核空间(即Meltdown)。