Meltdown 和 Spectre 之间有什么区别?

Dra*_*ght 8 caching processor intel speculative-execution spectre

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

小智 2

为了开始这个...

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

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

看起来超过一百条指令可以处于推测执行的各个阶段,因此相对复杂的探测代码是可能的。