Spectre: Problema con Understanding POC - Lettura dei dati dalla cache

2

Comprendo la vulnerabilità (Spectre) e, in teoria, cosa fa il PoC . Ma non capisco la parte del PoC , quando legge o identifica i dati dalla cache, tra le righe 86 - 108. So che il PoC sta leggendo i dati dalla cache misurando il tempo di lettura da * addr (a 90), ma quale esercizio ha results[] e perché mix_i colpisce la cache quando rappresenta il byte all'indirizzo della cache hit?

    
posta user104787 11.01.2018 - 16:45
fonte

1 risposta

1

what exercise has results[]

Non è un'arte esatta. La cache può essere colpita per un indice che non è quello colpito da victim_function. La soglia potrebbe portare a risultati borderline.

Quindi il codice esegue l'attacco 999 volte e incrementa i risultati [mix_i] quando pensa che ci sia un hit nella cache. Quindi seleziona il risultato con il valore del risultato più alto (la maggior parte dei colpi di cache attesi) e assume che sia il valore corretto per il byte della vittima.

why mix_i hits the cache when it represents the byte at the address of the cache hit?

mix_i è solo un modo per mischiare i.

for (i = 0; i < 256; i++) {
    mix_i = ((i * 167) + 13) & 255;
    ...
}

I risultati sopra riportati in mix_i vengono inizializzati come ogni valore compreso tra 0-255 una volta sola ma non nell'ordine 0,1,2,3 (come lo sono io). Questo è fatto per il motivo indicato nei commenti - a impedisce la previsione del passo ;

    
risposta data 11.01.2018 - 17:27
fonte