8

最近发现的硬件漏洞 Meltdown 和 Spectre 之间的主要区别是什么?我知道它们都依赖于推测执行,但是它们之间有什么不同呢?

4

3 回答 3

3

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

幽灵

Spectre 攻击有两种形式。最危险的 Spectre 使用分支错误预测和缓存副作用来读取当前进程虚拟内存中的任何字节。它适用于各种处理器,包括手机、桌子等。

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

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

崩溃

Meltdown 是某些处理器(Intel、一些 ARM、一些 IBM POWER)上的硬件问题,这些处理器并行读取内存和检查权限。这打开了读取您无权访问的内存的可能性。例如,由于 Meltdown,用户进程能够读取内核内存。

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

幽灵与崩溃

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

概念证明

这是我的基于 Linux Spectre 的 Meltdown(即 2 合 1)概念证明,仅 99 行代码:

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

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

于 2018-01-31T13:50:31.880 回答
2

崩溃

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

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

幽灵

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

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


资源:

https://meltdownattack.com

为了更好地理解,您还想观看 Computerphile 关于 Spectre & Meltdown 的精彩视频:

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

于 2018-01-12T17:03:01.663 回答
2

要开始这...

关于 Meltdown (Moritz Lapp, et al) 和 Spectre (Paul Kocher et al) 的论文将通过校对得到改进……后者在 1.4 节中将 Spectre 与 Meltdown 进行了比较。这“融化”了保持内核内容不可访问的障碍,因此运行时值可以以每秒 100 KB 的速度读取,并且错误率很低。禁止的内存访问会导致“陷阱”,但是,在触发陷阱之前,进一步代码的推测性提前执行已经改变了缓存状态(因为实际的内存访问是由幽灵进行的),该状态在其他影响的取消后仍然存在鬼处决。可以检测到这些变化。

然而,Spectre 依赖于通过向 IF ... THEN ... 呈现多个无害的用法来误导微码中的分支预测;type 语句,然后是特别选择的数据,这样测试结果将是错误的,但是,通常的结果是正确的,ghost 执行将继续访问某个感兴趣的位置并根据其值修改内存位置。然后“假”结果导致所有更改的撤消 - 除了缓存状态。或者,分支目标缓冲区可能会被误导,这样就会出现代码的幽灵执行,这些代码将访问应该无法访问的感兴趣的东西,并且结果再次被抑制但副作用仍然存在。

似乎有超过一百条指令可以处于推测执行的各个阶段,因此可以使用相对复杂的探测代码。

于 2018-01-11T09:30:04.667 回答