L'istruzione di scarico del predittore di branche è una correzione completa dello spettro?

6

Ho capito che Spectre funziona principalmente sfruttando lo stato del predittore del ramo. I limiti controllano il bypass e l'iniezione target del ramo sono due facce della stessa moneta, l'interazione dell'esecuzione speculativa con il predittore del ramo.

Ora, subito dopo aver sentito ciò, ho pensato che abbiamo bisogno di un'istruzione per cancellare lo stato del predittore del ramo. Tale istruzione può essere utilizzata quando si passa dal contesto dello spazio utente allo spazio del kernel o viceversa o tra due processi dello spazio utente.

Apparentemente non sono solo in questo. Mark ha una risposta eccellente alla domanda Quanto è cattivo Spectre? e Mark propone la stessa cosa Questo è stato anche proposto ai forum di discussione di Real World Tech .

Questa è una correzione completa per Spectre? Che dire delle macchine virtuali come le JVM che devono eseguire codice non affidabile nello stesso processo dello spazio utente che esegue anche il codice attendibile? Le istruzioni possono aiutare a proteggere tali VM?

    
posta juhist 04.01.2018 - 14:20
fonte

1 risposta

5

Un'istruzione di predittore a livello è necessaria ma non sufficiente per la protezione da Spectre. Una protezione completa contro l'attacco Spectre richiede due cose :

  1. Flusso dello stato del predittore di ramo sull'interruttore di contesto. Ciò impedisce ad un processo di attaccarne un altro dando a ogni processo il proprio stato di predittore di ramo. Tuttavia, non impedisce a un componente in modalità sandbox di un processo (come JavaScript JIT-compilato) di attaccare altri componenti dello stesso processo.
  2. Lo stato predittore di ramo deve tenere conto dell'indirizzo completo dell'istruzione di ramo (attualmente, per risparmiare spazio, vengono utilizzati solo i bit di ordine inferiore). Ciò impedirà a un processo di attaccare se stesso, poiché diverse parti del processo devono avere indirizzi diversi. Tuttavia, non impedisce a un processo di attaccarne un altro, poiché processi diversi potrebbero utilizzare lo stesso indirizzo.
risposta data 05.01.2018 - 00:11
fonte

Leggi altre domande sui tag