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?