He entendido que Spectre funciona principalmente al explotar el estado del predictor de rama. El bypass de comprobación de límites y la inyección de rama derivada son dos caras de la misma moneda, la interacción de la ejecución especulativa con el predictor de rama.
Ahora, inmediatamente después de escuchar esto, pensé que necesitamos una instrucción para borrar el estado del predictor de rama. Dicha instrucción podría usarse al cambiar el contexto del espacio del usuario al espacio del kernel o viceversa o entre dos procesos del espacio del usuario.
Al parecer no estoy solo en esto. Mark tiene una excelente respuesta a la pregunta ¿Qué tan malo es Specter? y Mark propone lo mismo. Esto también se ha propuesto en foros de discusión de Real World Tech .
Sin embargo, ¿es esto una solución completa para Specter? ¿Qué pasa con las máquinas virtuales como las JVM que necesitan ejecutar código no confiable en el mismo proceso de espacio de usuario que también ejecuta código de confianza? ¿Podría la instrucción ayudar a asegurar tales máquinas virtuales?