Spectre 能否通过清除 CPU 缓存在未来的硬件中得到修复?

信息安全 侧信道 幽灵
2021-08-17 20:58:17

据我了解,Spectre 是由推测执行引起的,它没有完全消除错误分支预测的所有副作用(特别是,没有撤消 CPU 缓存写入)。这是否意味着在未来的硬件中修复相对简单,只需确保在发生错误预测时清除由于推测执行而出现的任何缓存条目?我在一篇 LWN 文章中读到,缓存驱逐行为也可能存在问题;如果是这样,那会是什么?

1个回答

可以使用任何可见的推测执行的副作用。有一些(可能很多)副作用根本不涉及缓存。

来自Spectre 白皮书

...在本节中,我们探讨了潜在的组合并得出结论,推测性执行代码的几乎任何可观察到的影响都可能导致敏感信息的泄漏

...

指令时序。

Spectre 漏洞不一定需要涉及缓存。时序取决于操作数的值的指令可能会泄漏有关操作数的信息。在以下示例中,乘数被multiply R1, R2. 乘法器何时可用于multiply R3, R4(无序执行或识别出错误预测之后)的时间可能会受到第一次乘法的时间的影响,从而揭示有关R1和 的信息R2

if (false but mispredicts as true)
  multiply R1, R2
multiply R3, R4