Modern x86 processors have many prefetch instructions that can be used by programmers to boost performance. However, these instructions may also cause security problems. In particular, we found that on Intel processors, there are two security flaws in the implementation of PREFETCHW, an instruction for accelerating future writes. First, this instruction can execute on data with read-only permission. Second, the execution time of this instruction leaks the current coherence state of the target data. Based on these two design issues, we build two cross-core private cache attacks that work with both inclusive and non-inclusive LLCs, named Prefetch+Reload and Prefetch+Prefetch. We demonstrate the significance of our attacks in different scenarios. First, in the covert channel case, Prefetch+Reload and Prefetch+Prefetch achieve 782 KB/s and 822 KB/s channel capacities, when using only one shared cache line between the sender and receiver, the largest-to-date single-line capacities for CPU cache covert channels. Further, in the side channel case, our attacks can monitor the access pattern of the victim on the same processor, with almost zero error rate. We show that they can be used to leak private information of real-world applications such as cryptographic keys. Finally, our attacks can be used in transient execution attacks in order to leak more secrets within the transient window than prior work. From the experimental results, our attacks allow leaking about 2 times as many secret bytes, compared to Flush+Reload, which is widely used in transient execution attacks.
翻译:现代的 X86 处理器有许多预发指令,程序员可以用这些指令提高性能。然而,这些指令还可能造成安全问题。特别是,我们发现在Intel 处理器上,在执行PREFETCHW(加速未来的指令)中存在两个安全缺陷。首先,该指令可以在数据上执行,只读许可。第二,该指令的执行时间泄露了目标数据目前的一致性状态。根据这两个设计问题,我们建立了两个跨核心的私人缓存袭击,它们与包容性和非包容性的LLLC(Prefetch+Reload+Reload and Pretch+Prefetrech)一起工作。我们发现,在Intretel 处理器中,我们在实施Prefet+Prefetchet时存在两个安全缺陷。首先,Prefetchet+Prefetch可以根据只读权限执行数据执行数据。第二点的执行时间,当发送者和接收者之间只使用一个共享的缓存线时,即最大至最晚的单线隐藏渠道。此外,在侧通道中,我们关于秘密应用中几乎可以监测我们的秘密攻击过程的进入性攻击模式。我们之前使用过往前的F攻击过程的进入。