
Les aléas de chargement spéculatifs renforcent les attaques Rowhammer et par cache - 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 et Ahmad Moghimi, Worcester Polytechnic Institute ; Ida Bruhns et Moritz Krebbel, University of Luebeck ; Berk Gulmezoglu, Worcester Polytechnic Institute ; Thomas Eisenbarth, Worcester Polytechnic Institute et University of Luebeck ; Berk Sunar, Worcester Polytechnic Institute
Les microarchitectures modernes intègrent des techniques d'optimisation telles que les chargements spéculatifs et le store forwarding pour atténuer le goulot d'étranglement de la mémoire. Le processeur exécute le chargement de manière spéculative avant les stores, et transmet les données d'un store précédent au chargement s'il existe une dépendance potentielle. Cela améliore les performances car le chargement n'a pas à attendre que les stores précédents se terminent. Cependant, la prédiction de dépendance s'appuie sur une information d'adresse partielle, ce qui peut conduire à de fausses dépendances et à des risques de blocage.
Dans ce travail, nous sommes les premiers à montrer que la logique de résolution des dépendances qui sert le chargement spéculatif peut être exploitée pour obtenir des informations sur les mappages de pages physiques. Les attaques par canaux auxiliaires microarchitecturaux telles que Rowhammer et les attaques par cache comme Prime+Probe reposent sur la rétro-ingénierie du mappage des adresses virtuelles en adresses physiques. Nous proposons l'attaque SPOILER qui exploite cette fuite pour accélérer cette rétro-ingénierie d'un facteur 256. Ensuite, nous montrons comment cela peut améliorer l'attaque Prime+Probe en accélérant d'un facteur 4096 la recherche d'ensembles d'éviction, même depuis des environnements sandboxés comme JavaScript. Enfin, nous améliorons l'attaque Rowhammer en montrant comment SPOILER aide à provoquer des conflits de lignes DRAM de manière déterministe avec une probabilité allant jusqu'à 100 %, et en démontrant une attaque Rowhammer à double face avec les privilèges d'un utilisateur normal. Cette dernière est rendue possible par la détection de pages mémoire contiguës à l'aide de la fuite SPOILER.
$ make
$ ./spoiler
Installez gnuplot s'il n'est pas déjà installé, ou tracez t2.txt dans n'importe quel autre logiciel. Le script MATLAB plot_t2.m est fourni.
$ gnuplot
gnuplot> plot 't2.txt' with lines
Si vous observez des pics similaires à ceux de peaks_linux.png, votre CPU est vulnérable à SPOILER. Dans le cas contraire, vous pouvez essayer de jouer avec les paramètres "PAGE_COUNT, WINDOW et THRESH_OUTLIER". Par exemple, pour un processeur de 11e génération, changer la taille de WINDOW en 256 a fonctionné. La raison peut être que la taille du store buffer augmente dans les générations supérieures. Veuillez lire l'article pour plus de détails.
Exécutez "spoiler.exe" en double-cliquant ou à partir de l'invite de commandes. Si vous devez modifier des paramètres, veuillez recompiler le code. Tracez "t2.txt" avec n'importe quel logiciel ou avec le script MATLAB plot_t2.m.