Shared microarchitectural state has become a prime target for side-channel attacks that leverage timing measurements to leak information across security domains. Combined with speculative execution, they cause vulnerabilities like Spectre and Meltdown. Such vulnerabilities often stay undetected for a long time because we lack the tools for systematic testing of CPUs against them. In this paper, we propose an approach to automatically detect microarchitectural information leakage in commercial black-box CPUs. We base our approach on speculation contracts, which we employ to specify the permitted side effects of program execution on the microarchitectural state. We propose a technique, called Model-based Relational Fuzzing (MRF), that enables testing of CPUs against these specifications. We implement MRF in a fuzzing framework called Revizor, and showcase its effectiveness on real Intel x86 CPUs: It automatically detects violations of a rich set of contracts, or indicates their absence. A highlight of our findings is that Revizor managed to automatically surface Spectre, MDS, and LVI by fuzzing against increasingly liberal contracts.
翻译:共享微观构造状态已成为侧通道攻击的首要目标,这些侧通道攻击利用时间测量方法在安全领域泄漏信息。 与投机性执行相结合,它们造成弱点, 如光谱和熔化。 这些弱点往往长时间不被发现, 因为我们缺乏系统测试CPU的工具。 在本文中, 我们提出一个自动检测商业黑箱CPU中微结构信息泄漏的方法。 我们以投机合同为基础, 我们使用这些合同来具体说明程序执行在微结构构造状态上的允许副作用。 我们提出一种技术, 叫做基于模型的Relational Fuzzing(MRF), 能够根据这些规格测试CPU。 我们在一个称为Revizor的模糊框架中实施MRF, 并在真实的Intel x86 CPUs上展示其有效性: 它自动检测违反大量合同的情况, 或者表明它们不存在。 我们发现的一个亮点是, Revizor通过对日益宽松的合同进行阻断, 来自动管理地表面监视、 MDS 和 LVI 。