¿Cuál es el significado de Spectre y Meltdown?

1

Al volver a leer los ataques de Spectre y Meltdown, no entiendo por qué fueron tan exagerados.

Estos son ataques de caché que aprovechan la implementación del procesamiento de la línea de instrucciones además de la implementación del caché. Así que esta es solo otra variación de los ataques de caché. ¿Por qué estos dos ataques son tan publicitados? ¿Son mucho mejores? ¿Hacen las cosas más fáciles?

  • Los ataques anteriores extrajeron claves AES y otro material sensible de los procesos.
  • Ha habido ataques de caché basados en Javascript antes ¿no?
  • Se han hecho ataques para trabajar a través de núcleos antes.
  • Los ataques anteriores también funcionan en máquinas con varias CPU.

¿Entiendo que estas dos variantes hacen que el ataque sea mucho más fácil y más controlado? ¿Es esa la razón?

    
pregunta stflow 16.03.2018 - 15:33
fuente

2 respuestas

4

Hay algunas cosas que hacen que Specter y Meltdown sean diferentes de los ataques de caché históricos. Algunos son específicos de los ataques y otros son simplemente una consecuencia de los cambios en el entorno informático.

Cosas diferentes sobre los ataques:

  1. Son realmente difíciles de solucionar. Estos son problemas de hardware y, en el caso de Specter, son problemas de hardware diseño en lugar de errores de implementación. La reparación del hardware es lenta, costosa y difícil de verificar. No puede simplemente solucionar el problema con las actualizaciones de software , como puede hacerlo con la mayoría de los errores de seguridad. El "parche" para Meltdown se describe con más precisión como una solución alternativa que como una solución (en lugar de solucionar los problemas subyacentes de los programas de espacio de usuario que pueden leer la memoria del kernel arbitraria, simplemente se desasigna el núcleo de los programas de espacio de usuario, por lo que no hay nada que lea y consuma el costo de rendimiento de un cambio de contexto en cada llamada al sistema). Espectro ni siquiera tiene eso; lo más cercano que tenemos es cosas como degradar la precisión de los temporizadores JS (que pueden tener un impacto negativo en algunos códigos legítimos) para que sea más difícil (pero no imposible) detectar las diferencias de tiempo.
  2. Son rápidos, confiables y fáciles de llevar a cabo. Se puede usar cualquier idioma que admita temporizadores de alta precisión y matrices de memoria contigua con indexación arbitraria (es decir, aproximadamente todas), de una manera muy bloque corto de código que es fácil de portar de un idioma a otro, para una explotación exitosa. Se pueden utilizar para extraer una gran cantidad de datos ocultos en caso de ser ocultos (fácilmente KBs, a menudo MBs o incluso 100s de MBs) cada segundo. Esa es una gran diferencia con respecto a los ataques más antiguos que a menudo solo podrían obtener algo útil, si tenían un buen tiempo para trabajar en ello.
  3. Permiten apuntar a direcciones de memoria arbitrarias y no confían en esperar hasta que el procesador haga lo que quiere inspeccionar. Los ataques de caché anteriores se enfocaron principalmente en ver lo que había en las líneas de caché de otros programas. lo que significa que el atacante no pudo escoger y elegir lo que obtuvieron. Si sabe que el otro programa está haciendo criptografía, es posible que pueda extraer la clave, pero si desordena la sincronización (consulte el punto anterior) o no puede forzar el acceso a los datos a los que desea acceder (y, por lo tanto, en caché) cuando su ataque se está ejecutando, muy mal. Sin embargo, Specter y Meltdown permiten leer las direcciones de memoria arbitrarias de su elección, lo que significa que puede hacer cosas como estructuras de datos de caminata para encontrar exactamente la información que está buscando.

Cosas diferentes sobre el entorno informático:

  1. La computación en la nube es común. Es mucho más típico ahora, que en cualquier otro momento en el pasado reciente, que dos entidades no relacionadas y mutuamente no confiables ejecuten código arbitrario en la misma máquina física. Al igual que los procesos dividen los entornos limitados de JS del resto de su espacio de direcciones y los sistemas operativos dividen los espacios de direcciones de los procesos, los hipervisores dividen los espacios de direcciones físicas de las máquinas virtuales entre sí. La misma premisa de seguridad en la nube ("código de ejecución en las computadoras de otras personas") se basa en estas divisiones, y Specter / Meltdown las rompe.
  2. JavaScript es ubicuo y útil. Lo que alguna vez fue un lenguaje de juguete sin uso de temporizadores de alta precisión o arrays tipeados y acotados se ha convertido en un lenguaje muy poderoso con la mayoría de las funciones que se encuentran en otros lenguajes de programación de aplicaciones. Los navegadores ejecutan alegremente código de fuentes arbitrarias y con frecuencia poco confiables (servidores web), confiando en la caja de arena de JS para evitar (la mayoría) usos maliciosos de este poder. Para ataques como Specter y Meltdown, que evitan la protección de la caja de arena y se pueden escribir en JS, es un vector de ataque ideal que se puede utilizar contra casi todas las máquinas de los usuarios finales.
respondido por el CBHacking 17.03.2018 - 02:47
fuente
0

El significado radica en la prevalencia de los procesadores expuestos a las respectivas vulnerabilidades. (1) (2) (3)

La mayoría de las CPU de Intel y AMD son de alguna forma vulnerables a Specter y / o Meltdown y la participación de mercado combinada de las dos compañías en el mundo no móvil es casi del 100% para los procesadores x86.

Fuente

Además de las computadoras personales, muchos dispositivos móviles (sus procesadores también usan ejecución especulativa), infraestructuras en la nube (la nube es en todas partes ) y las máquinas virtuales (de nuevo en todas partes ) también son vulnerables (en parte).

Es justo decir que rara vez hemos visto ataques como Specter y Meltdown que se pueden aplicar a tantos dispositivos, independientemente de su sistema operativo.

Vamos a sumar, amigos! ¿Qué es vulnerable?
Todos los dispositivos personales que no son móviles, muchos dispositivos móviles, muchos servidores, una gran parte de la infraestructura de la nube y las máquinas virtuales.

¿Sientes el significado a estas alturas?

    
respondido por el Tom K. 16.03.2018 - 16:50
fuente

Lea otras preguntas en las etiquetas