【发布时间】:2018-06-20 09:50:48
【问题描述】:
最近发现的硬件漏洞 Meltdown 和 Spectre 之间的主要区别是什么?我知道它们都依赖于投机执行,但是它们之间有什么不同呢?
【问题讨论】:
标签: caching intel processor speculative-execution spectre
最近发现的硬件漏洞 Meltdown 和 Spectre 之间的主要区别是什么?我知道它们都依赖于投机执行,但是它们之间有什么不同呢?
【问题讨论】:
标签: caching intel processor speculative-execution spectre
要开始这个...
关于 Meltdown (Moritz Lapp, et al) 和 Spectre (Paul Kocher et al) 的论文将通过校对得到改进...... 1.4 节中的后者将 Spectre 与 Meltdown 进行了比较。这“融化”了保持内核内容不可访问的障碍,因此运行时值可以以每秒 100 KB 的速度读取,并且错误率很低。禁止的内存访问会导致“陷阱”,但是,在触发陷阱之前,进一步代码的推测性提前执行已经改变了缓存状态(因为实际的内存访问是由幽灵进行的),该状态在其他影响的取消后仍然存在鬼处决。可以检测到这些变化。
然而,Spectre 依赖于通过向 IF ... THEN ... 呈现多个无害的用法来误导微码中的分支预测; type 语句,然后特别选择的数据使得测试结果为假,但是,通常的结果为真,ghost 执行将继续访问某个感兴趣的位置并根据其值修改内存位置。然后“假”结果会导致所有更改的撤消 - 除了缓存状态。 或者,分支目标缓冲区可能会被误导,这样就会出现代码的幽灵执行,这些代码将访问应该无法访问的感兴趣的东西,结果再次被抑制,但副作用仍然存在。
似乎有超过一百条指令可以处于推测执行的各个阶段,因此可以使用相对复杂的探测代码。
【讨论】:
Meltdown 打破了用户应用程序和操作系统之间最基本的隔离。这种攻击允许程序访问内存,从而访问其他程序和操作系统的秘密。
如果您的计算机具有易受攻击的处理器并运行未打补丁的操作系统,则在不泄露信息的情况下处理敏感信息是不安全的。这既适用于个人计算机,也适用于云基础设施。幸运的是,有针对 Meltdown 的软件补丁。
Spectre 打破了不同应用程序之间的隔离。它允许攻击者欺骗遵循最佳实践的无错误程序泄露其秘密。事实上,上述最佳实践的安全检查实际上增加了攻击面,并可能使应用程序更容易受到 Spectre 的影响
Spectre 比 Meltdown 更难利用,但也更难缓解。但是,可以通过软件补丁阻止基于 Spectre 的特定已知漏洞。
来源:
为了更好地理解,您还想观看 Computerphile 关于 Spectre & Meltdown 的精彩视频:
【讨论】:
最近发现的硬件漏洞 Meltdown 和 Spectre 之间的主要区别是什么?
Spectre 攻击有两种形式。最危险的味道 Spectre 使用分支错误预测和缓存副作用来读取当前进程中的任何字节 虚拟内存。它适用于各种处理器,包括手机、桌子等。
那么,为什么我们不能只读取当前进程中的任何字节,而不使用任何 Spectre?为什么 Spectre 很危险?有多种语言可以创建沙箱 (JavaScript) 或虚拟机 (Java),以将本地机器与您从 Internet 下载的潜在危险代码隔离开来。
由于 Spectre,不再有这种隔离,因此从网站下载的 JavaScript 可以读取浏览器中的任何数据。可能存在一些密码、信用卡号和其他敏感信息。
Meltdown 是某些处理器(Intel、某些 ARM、某些 IBM POWER)上的硬件问题,这些处理器并行读取内存和检查权限。这开启了读取您无权访问的内存的可能性。例如,由于 Meltdown,用户进程能够读取内核内存。
为什么 Meltdown 很危险? 内核存储加密密钥、密码甚至其他进程的物理页面,由于 Meltdown,它们可能会从系统中的任何用户进程中读取。
Spectre 和 Meltdown 之间的主要区别在于,由于 Spectre,您可以读取或欺骗其他进程以相同权限级别泄漏内存,使用 Meltdown 您可以读取您没有的内存访问权限。
这是我的基于 Linux Spectre 的 Meltdown(即 2 合 1)概念证明,仅 99 行代码:
https://github.com/berestovskyy/spectre-meltdown
它允许使用边界检查绕过(即 Spectre)读取内核空间(即 Meltdown)。
【讨论】: