我知道 Spectre 主要通过利用分支预测器状态来工作。边界检查绕过和分支目标注入是同一个硬币的两个面,推测执行与分支预测器的交互。
现在,当我听到这个消息时,我立即认为我们需要一条指令来清除分支预测器状态。当从用户空间切换到内核空间或反之亦然或在两个用户空间进程之间切换上下文时,可以使用这样的指令。
显然我并不孤单。Mark 对Spectre 到底有多糟糕?马克提出了同样的建议。这也已在Real World Tech 讨论论坛上提出。
然而,这是对 Spectre 的完整修复吗?对于需要在运行受信任代码的同一用户空间进程中运行不受信任代码的虚拟机(例如 JVM)呢?该指令是否有助于保护此类虚拟机?