Identificada otra vulnerabilidad en los procesadores AMD que permite ataques Meltdown

Un equipo de investigadores de la Universidad Técnica de Graz (Austria) y el Centro Helmholtz para la Seguridad de la Información (CISPA) ha revelado información sobre una vulnerabilidad (CVE-2021-26318) en todos los procesadores AMD que permite realizar operaciones de clase Meltdown. ataques de canal lateral (inicialmente se suponía que los procesadores AMD no se ven afectados por la vulnerabilidad Meltdown). En términos prácticos, el ataque se puede utilizar para establecer canales de comunicación encubiertos, monitorear la actividad en el kernel u obtener información sobre direcciones en la memoria del kernel para evitar la protección KASLR mientras se explotan vulnerabilidades en el kernel.

AMD considera inapropiado tomar medidas especiales para bloquear el problema, ya que la vulnerabilidad, al igual que un ataque similar descubierto en agosto, es de poca utilidad en condiciones reales, está limitada por los límites actuales del espacio de direcciones del proceso y requiere la presencia de ciertos secuencias de instrucciones (gadgets) ya preparadas en el núcleo. Para demostrar el ataque, los investigadores cargaron su propio módulo del kernel con un dispositivo agregado artificialmente. En condiciones reales, los atacantes pueden utilizar, por ejemplo, vulnerabilidades que aparecen periódicamente en el subsistema eBPF para sustituir las secuencias necesarias.

Para protegerse contra este nuevo tipo de ataque, AMD recomendó utilizar técnicas de codificación segura que ayuden a bloquear los ataques Meltdown, como el uso de instrucciones LFENCE. Los investigadores que identificaron el problema recomiendan habilitar un aislamiento de tabla de páginas de memoria (KPTI) más estricto, que anteriormente solo se usaba para procesadores Intel.

Durante el experimento, los investigadores lograron filtrar información del kernel a un proceso en el espacio del usuario a una velocidad de 52 bytes por segundo, dada la presencia de un gadget en el kernel que realiza la operación “if (offset < data_len) tmp = LUT[datos[desplazamiento] * 4096];” . Se han propuesto varios métodos para recuperar información a través de canales laterales que termina en la memoria caché durante la ejecución especulativa. El primer método se basa en analizar las desviaciones en el tiempo de ejecución de la instrucción del procesador “PREFETCH” (Prefetch+Time), y el segundo en cambiar el cambio en el consumo de energía al ejecutar “PREFETCH” (Prefetch+Power).

Recordemos que la vulnerabilidad Meltdown clásica se basa en el hecho de que durante la ejecución especulativa de instrucciones, el procesador puede acceder a un área de datos privada y luego descartar el resultado, ya que los privilegios establecidos prohíben dicho acceso por parte del proceso del usuario. En el programa, el bloque ejecutado especulativamente está separado del código principal por una rama condicional, que en condiciones reales siempre se activa, pero debido al hecho de que la declaración condicional utiliza un valor calculado que el procesador no conoce durante la ejecución preventiva de El código, todas las opciones de sucursales se llevan a cabo de forma especulativa.

Dado que las operaciones ejecutadas especulativamente utilizan el mismo caché que las instrucciones ejecutadas normalmente, es posible durante la ejecución especulativa establecer marcadores en el caché que reflejen el contenido de bits individuales en un área de memoria privada y luego, en el código ejecutado normalmente, determinar su valor mediante el tiempo. accesos de análisis a datos almacenados en caché y no almacenados en caché.

Fuente: opennet.ru

Añadir un comentario