Side-channel attacks pose serious threats to many security models, especially sandbox-based browsers. While transient-execution side channels in out-of-order processors have previously been blamed for vulnerabilities such as Spectre and Meltdown, we show that in fact, the capability of out-of-order execution \emph{itself} to cause mayhem is far more general. We develop Hacky Racers, a new type of timing gadget that uses instruction-level parallelism, another key feature of out-of-order execution, to measure arbitrary fine-grained timing differences, even in the presence of highly restricted JavaScript sandbox environments. While such environments try to mitigate timing side channels by reducing timer precision and removing language features such as \textit{SharedArrayBuffer} that can be used to indirectly generate timers via thread-level parallelism, no such restrictions can be designed to limit Hacky Racers. We also design versions of Hacky Racers that require no misspeculation whatsoever, demonstrating that transient execution is not the only threat to security from modern microarchitectural performance optimization. We use Hacky Racers to construct novel \textit{backwards-in-time} Spectre gadgets, which break many hardware countermeasures in the literature by leaking secrets before misspeculation is discovered. We also use them to generate the first known last-level cache eviction set generator in JavaScript that does not require \textit{SharedArrayBuffer} support.
翻译:侧气道攻击对许多安全模式,特别是沙箱浏览器构成了严重的威胁。虽然过去曾指责超序处理器中的中转执行侧渠道存在诸如Spectre和Meltdown等弱点,但我们表明,事实上,超序执行\emph{itself}造成破坏的能力远比一般得多。我们开发了“超速”赛车,这是一种新型的计时装置,它使用的是教学级平行,这是执行命令的另一个关键特征,用来测量任意的微调时间差异,即使是在高度受限的 JavaScript 沙箱环境中也是如此。虽然这种环境试图通过降低时间精确度和删除语言特性,例如\ textitle{SharedArrayBuffer} 来间接生成计时器。我们开发了“超速”赛车,这种新型的定时器无法用来限制哈奇跑。我们也设计了“超速”赛车的设计版本,不需要任何错误猜测,可以证明“超速”赛车道执行是“超时空”级执行过程,但“超时尚值”不值”并不代表了“超时空”的时尚值执行,在现代智能分析中制造中制造中制造中,也需要“超时空分析。