Ci sono molte pubblicazioni scientifiche che si occupano di attacchi di cache. Più di recente, è stato pubblicato l'attacco CacheBleed che sfrutta i conflitti di cache cache sull'architettura Intel Sandy Bridge. La maggior parte degli attacchi temporali usa un approccio simile:
- L'attaccante riempie la cache con gli stessi dati casuali che controlla.
- L'attaccante attende mentre la sua vittima sta facendo alcuni calcoli (ad es. crittografia).
- L'attaccante continua l'esecuzione e misura il tempo di caricare ogni set di dati che ha scritto nella cache al punto 1. Se la vittima ha effettuato l'accesso ad alcuni set di cache, avrà sfrattato alcune delle linee dell'attaccante, che l'utente malintenzionato osserva come maggiore latenza di accesso alla memoria per quelle linee.
In questo modo l'utente malintenzionato può scoprire quale cache set o anche quale linea cache è stata aperta dalla vittima.
La maggior parte dei documenti che ho letto concludono automaticamente che l'autore dell'attacco ha quindi la possibilità di dedurre i dati (ad esempio una chiave privata sicura) che è stata scritta in queste posizioni della cache. Questo è quello che non capisco:
Se so che la vittima V ha avuto accesso a una determinata posizione della cache, come posso ottenere i suoi dati? Molti indirizzi di memoria si associano alla stessa posizione di cache e anche se avessi l'indirizzo di memoria completo, dubito che l'autore dell'attacco possa eseguire un DMA.
Come riferimento puoi prendere l'attacco CacheBleed pubblicato di recente.