https://www.usenix.org/system/files/sec19-islam.pdf
@inproceedings {236252,
author = {Saad Islam and Ahmad Moghimi and Ida Bruhns and Moritz Krebbel and Berk Gulmezoglu and Thomas Eisenbarth and Berk Sunar},
title = {{SPOILER}: Speculative Load Hazards Boost Rowhammer and Cache Attacks},
booktitle = {28th {USENIX} Security Symposium ({USENIX} Security 19)},
year = {2019},
isbn = {978-1-939133-06-9},
address = {Santa Clara, CA},
pages = {621--637},
url = {https://www.usenix.org/conference/usenixsecurity19/presentation/islam},
publisher = {{USENIX} Association},
month = aug,
}
Saad Islam 和 Ahmad Moghimi,伍斯特理工学院;Ida Bruhns 和 Moritz Krebbel,吕贝克大学;Berk Gulmezoglu,伍斯特理工学院;Thomas Eisenbarth,伍斯特理工学院和吕贝克大学;Berk Sunar,伍斯特理工学院
现代微架构采用了推测加载和存储转发等优化技术,以改善内存瓶颈。处理器在存储之前就推测性地执行加载,并在存在潜在依赖时将先前存储的数据转发给加载。这提升了性能,因为加载无需等待前面的存储完成。然而,依赖预测依赖于部分地址信息,可能导致虚假依赖和停顿风险。
在这项工作中,我们首次证明,服务于推测加载的依赖解析逻辑可以被利用来获取物理页面映射的信息。微架构侧信道攻击(如 Rowhammer)和缓存攻击(如 Prime+Probe)依赖于对虚拟地址到物理地址映射的反向工程。我们提出了 SPOILER 攻击,利用这种泄漏将反向工程速度提升 256 倍。然后,我们展示了这如何将 Prime+Probe 攻击的驱逐集搜索速度提升 4096 倍,即使是在 JavaScript 等沙盒环境中。最后,我们改进了 Rowhammer 攻击,展示了 SPOILER 如何以高达 100% 的概率确定性触发 DRAM 行冲突,并通过普通用户权限演示了双面 Rowhammer 攻击。后者得益于使用 SPOILER 泄漏检测连续内存页面的可能性。
$ make
$ ./spoiler
如果尚未安装 gnuplot,请安装它,或者用其他软件绘制 t2.txt。提供了 plot_t2.m MATLAB 脚本。
$ gnuplot
gnuplot> plot 't2.txt' with lines
如果你看到的峰值类似于 peaks_linux.png,则你的 CPU 易受 SPOILER 攻击。如果没有,可以尝试调整参数 "PAGE_COUNT, WINDOW 和 THRESH_OUTLIER"。例如,对于第 11 代 CPU,将 WINDOW 大小改为 256 即可。原因可能是更高代处理器中存储缓冲区大小增加。详情请阅读论文。
双击或通过命令提示符执行 "spoiler.exe"。如果需要更改任何参数,请重新编译代码。使用任何软件或 plot_t2.m MATLAB 脚本绘制 "t2.txt"。