
Spekulative Load Hazards verstärken Rowhammer- und Cache-Angriffe - CVE-2019-0162 -
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 und Ahmad Moghimi, Worcester Polytechnic Institute; Ida Bruhns und Moritz Krebbel, University of Luebeck; Berk Gulmezoglu, Worcester Polytechnic Institute; Thomas Eisenbarth, Worcester Polytechnic Institute und University of Luebeck; Berk Sunar, Worcester Polytechnic Institute
Moderne Mikroarchitekturen integrieren Optimierungstechniken wie spekulative Loads und Store Forwarding, um den Speicher-Engpass zu entschärfen. Der Prozessor führt den Load spekulativ vor den Stores aus und leitet die Daten eines vorhergehenden Stores an den Load weiter, wenn eine potenzielle Abhängigkeit besteht. Dies verbessert die Leistung, da der Load nicht auf den Abschluss vorhergehender Stores warten muss. Allerdings stützt sich die Abhängigkeitsvorhersage auf partielle Adressinformationen, was zu falschen Abhängigkeiten und Stall-Hazards führen kann.
In dieser Arbeit sind wir die ersten, die zeigen, dass die Abhängigkeitsauflösungslogik, die den spekulativen Load bedient, ausgenutzt werden kann, um Informationen über die physischen Seitenzuordnungen zu gewinnen. Mikroarchitektonische Seitenkanalangriffe wie Rowhammer und Cache-Angriffe wie Prime+Probe beruhen auf dem Reverse Engineering der virtuell-zu-physischen Adresszuordnung. Wir schlagen den SPOILER-Angriff vor, der dieses Leck ausnutzt, um dieses Reverse Engineering um den Faktor 256 zu beschleunigen. Anschließend zeigen wir, wie dies den Prime+Probe-Angriff um den Faktor 4096 bei der Eviction-Set-Suche beschleunigt, selbst aus Sandbox-Umgebungen wie JavaScript. Schließlich verbessern wir den Rowhammer-Angriff, indem wir zeigen, wie SPOILER hilft, DRAM-Zeilenkonflikte deterministisch mit bis zu 100% Wahrscheinlichkeit durchzuführen, und indem wir einen doppelseitigen Rowhammer-Angriff mit normalen Benutzerrechten demonstrieren. Letzteres ist auf die Möglichkeit zurückzuführen, zusammenhängende Speicherseiten mithilfe des SPOILER-Leaks zu erkennen.
$ make
$ ./spoiler
Installieren Sie gnuplot, falls es noch nicht installiert ist, oder plotten Sie t2.txt mit einer anderen Software. Das MATLAB-Skript plot_t2.m wird bereitgestellt.
$ gnuplot
gnuplot> plot 't2.txt' with lines
Wenn Sie ähnliche Spitzen wie in peaks_linux.png sehen, ist Ihre CPU anfällig für SPOILER. Wenn nicht, können Sie mit den Parametern "PAGE_COUNT, WINDOW und THRESH_OUTLIER" experimentieren. Bei einer CPU der 11. Generation zum Beispiel hat die Änderung der WINDOW-Größe auf 256 funktioniert. Der Grund dafür kann sein, dass die Größe des Store-Puffers in höheren Generationen zunimmt. Bitte lesen Sie das Paper für Details.
Führen Sie "spoiler.exe" per Doppelklick oder über die Eingabeaufforderung aus. Wenn Sie Parameter ändern müssen, kompilieren Sie den Code bitte neu. Plotten Sie "t2.txt" mit einer beliebigen Software oder mit dem MATLAB-Skript plot_t2.m.