
I pericoli di caricamento speculativo potenziano gli attacchi Rowhammer e alla 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 e Ahmad Moghimi, Worcester Polytechnic Institute; Ida Bruhns e Moritz Krebbel, University of Luebeck; Berk Gulmezoglu, Worcester Polytechnic Institute; Thomas Eisenbarth, Worcester Polytechnic Institute e University of Luebeck; Berk Sunar, Worcester Polytechnic Institute
Le microarchitetture moderne incorporano tecniche di ottimizzazione come i caricamenti speculativi e lo store forwarding per alleviare il collo di bottiglia della memoria. Il processore esegue il caricamento speculativamente prima delle store e inoltra i dati di una store precedente al caricamento se esiste una potenziale dipendenza. Questo migliora le prestazioni poiché il caricamento non deve attendere il completamento delle store precedenti. Tuttavia, la previsione delle dipendenze si basa su informazioni parziali dell'indirizzo, il che può portare a false dipendenze e hazard di stallo.
In questo lavoro, siamo i primi a mostrare che la logica di risoluzione delle dipendenze che serve il caricamento speculativo può essere sfruttata per ottenere informazioni sui mapping delle pagine fisiche. Gli attacchi side-channel microarchitetturali come Rowhammer e gli attacchi cache come Prime+Probe si basano sull'ingegneria inversa del mapping degli indirizzi da virtuale a fisico. Proponiamo l'attacco SPOILER, che sfrutta questa perdita di informazioni per accelerare questa ingegneria inversa di un fattore 256. Successivamente, mostriamo come questo possa migliorare l'attacco Prime+Probe accelerando di un fattore 4096 la ricerca dell'eviction set, anche da ambienti sandbox come JavaScript. Infine, miglioriamo l'attacco Rowhammer mostrando come SPOILER aiuti a condurre conflitti di riga DRAM in modo deterministico con una probabilità fino al 100%, e dimostrando un attacco Rowhammer double-sided con i privilegi di un normale utente. Quest'ultimo è dovuto alla possibilità di rilevare pagine di memoria contigue sfruttando la perdita di informazioni di SPOILER.
$ make
$ ./spoiler
Installare gnuplot se non è già installato oppure tracciare t2.txt con qualsiasi altro software. Viene fornito lo script MATLAB plot_t2.m.
$ gnuplot
gnuplot> plot 't2.txt' with lines
Se vedi picchi simili a quelli in peaks_linux.png, la tua CPU è vulnerabile a SPOILER. In caso contrario, puoi provare a giocare con i parametri "PAGE_COUNT, WINDOW e THRESH_OUTLIER". Ad esempio, su una CPU di 11ª generazione, impostare la dimensione di WINDOW a 256 ha funzionato. Il motivo potrebbe essere che la dimensione dello store buffer aumenta nelle generazioni più recenti. Leggi l'articolo per i dettagli.
Esegui "spoiler.exe" con un doppio clic o dal prompt dei comandi. Se hai bisogno di modificare qualche parametro, per favore ricompila il codice. Traccia "t2.txt" usando qualsiasi software o con lo script MATLAB plot_t2.m.