论文标题

骇人听闻的赛车手:利用教学级并行性来产生隐秘的细颗粒计时器

Hacky Racers: Exploiting Instruction-Level Parallelism to Generate Stealthy Fine-Grained Timers

论文作者

Xiao, Haocheng, Ainsworth, Sam

论文摘要

侧通道攻击对许多安全模型,尤其是基于沙箱的浏览器构成了严重威胁。虽然以前在诸如Spectre和Meltdown之类的漏洞中,虽然暂时性处理器中的瞬态侧通道被指责,但我们表明,事实上,实际上,置于级别执行的能力\ emph {本身}导致Mayhem的能力更为笼统。 我们开发了骇人听闻的赛车手,这是一种使用指令级并行性的新型计时小工具,这是排序执行的另一个关键特征,即使在存在高度受限制的JavaScript Sandbox环境的情况下,也可以测量任意的细粒度正时差。尽管此类环境试图通过降低计时器精度并删除诸如\ textIt {sharedArrayBuffer}之类的语言功能来减轻定时侧通道,这些语言功能可用于通过线程级并行性间接生成计时器,但不能设计此类限制来限制限制黑客赛车手。我们还设计了无需拼凑的黑客赛车手的版本,表明瞬态执行并不是现代微体系式性能优化对安全性的唯一威胁。 我们使用骇人听闻的赛车手来构建新颖的\ textit {向后}幽灵小工具,在发现误解之前泄漏了秘密,从而打破了文献中的许多硬件对策。我们还使用它们来生成JavaScript中不需要\ textIt {sharedArrayBuffer}支持的第一个已知的最后级高速缓存集合生成器。

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.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源