¿Puede alguien explicar en términos sencillos cómo Specter y Meltdown exponen los datos protegidos?

1

Estoy trabajando en un documento sobre ellos y creo que entiendo en general lo que sucede - > al explotar el almacenamiento en caché de la memoria de la CPU y la ejecución especulativa, pero estoy un poco perdido de cómo los datos protegidos están realmente expuestos.

Entonces, si entiendo correctamente la ejecución especulativa en un caso de:

if a == true { 
    firstFunction()
} else { 
    secondFunction()
}

la CPU llamará a la primera y la segunda función y las ejecutará antes de que sepa el valor de un? ¿Está almacenando los valores reales dentro de esas funciones o solo sus ubicaciones de memoria en su caché? Y una vez que se resuelve, ¿se descarta cualquier cosa que haya obtenido al ir por el camino equivocado?

Gracias

    
pregunta PruitIgoe 24.10.2018 - 21:54
fuente

2 respuestas

2

No puedo hacer comentarios debido a la restricción de reputación y, por lo tanto, estoy publicando esto como respuesta, pero más como una expansión a la respuesta de @ ThrawnCA. Tenía la impresión de que se pone un poco peor que las corazonadas del siguiente cliente (obviamente, en realidad es el próximo programa). Mi comprensión de Spectre / Meltdown es así:

Un cliente entra en una tienda (esta vez con intenciones maliciosas). Piden un cartón de leche y una botella de whisky. El empleado (procesador) les da la leche, pero comprar alcohol requiere una identificación válida que demuestre que el cliente tiene más de 18 años. Dice que no la tiene y que un amigo se la traerá un poco. El empleado dice que está bien y le maneja la botella de todos modos. El comprador se mueve detrás de algunos estantes y abre y bebe la botella antes de decir que el amigo se perdió y sale de la tienda (ya que un programa malicioso puede inspeccionar alguna ubicación de la memoria antes de que se le niegue el acceso).

    
respondido por el sqlnoob 25.10.2018 - 09:29
fuente
3

Suponga que está comprando y no puede recordar si necesita cereal, pero cree que probablemente sí. Entonces, envías un SMS a tu compañero para que lo compruebe, pero mientras esperas, vas al pasillo de los cereales y seleccionas algunos. Si resulta que no lo necesita, simplemente lo devolverá.

Cuando las computadoras hacen algo similar, eso es "ejecución especulativa".

Ahora, supongamos que, por razones de privacidad, solo se permite un cliente en la tienda a la vez, y luego los estantes se reabastecen por un robot cuando terminan. Por lo tanto, no debería ser posible para el próximo cliente contar lo que compró. Pero, cuando devuelves el cereal, tal vez golpeaste a los que están al lado, así que no están exactamente en el mismo lugar. El robot de repoblación no hace nada al respecto, ya que los estantes todavía están abastecidos. Pero un comprador obsesivamente entusiasta que viene después de ti podría ahora ser capaz de contar tu marca de cereal preferida.

    
respondido por el ThrawnCA 25.10.2018 - 07:20
fuente

Lea otras preguntas en las etiquetas