Encontraron una nueva vulnerabilidad Meltdown en procesadores AMD basados ​​en Zen+ y Zen 2

Hace pocos dias un grupo de investigadores de la Universidad Técnica de Dresde dieron a conocer que identificaron una vulnerabilidad (CVE-2020-12965) que permite un ataque de clase Meltdown en procesadores AMD basados ​​en Zen+ y Zen 2.

Inicialmente, se asumió que los procesadores AMD Zen+ y Zen 2 no son susceptibles a la vulnerabilidad Meltdown, pero los investigadores identificaron una característica que conduce a un acceso especulativo a áreas de memoria protegidas cuando se usan direcciones virtuales no canónicas.

Los investigadores mencionan que la arquitectura AMD64 implica usar solo los primeros 48 bits de la dirección virtual e ignorar los 16 bits restantes y con ello se ha especificado que los bits 48 a 63 siempre deben copiar el valor del bit 47.

Es decir, si se viola esta condición y se intenta direccionar la dirección con valores arbitrarios de los bits superiores, el procesador genera una excepción. El relleno repetido de los bits superiores conduce a la división del espacio de direcciones disponible en dos bloques.

Las direcciones que se ajustan a los bloques especificados se denominan canónicas y las direcciones inválidas con contenido arbitrario de bits superiores se denominan no canónicas. El rango inferior de direcciones canónicas, como regla, se asigna para los datos de proceso, y el superior se utiliza para los datos del kernel (el acceso a las direcciones especificadas desde el espacio de usuario está bloqueado en el nivel de separación de privilegios).

La clásica vulnerabilidad Meltdown se basa en el hecho de que durante la ejecución especulativa de instrucciones, el procesador puede acceder a un área de datos privados y luego descartar el resultado, ya que los privilegios establecidos prohíben dicho acceso desde el 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 dispara, pero debido al hecho de que la declaración condicional usa un valor calculado que el procesador no conoce durante la ejecución anticipada de el código, se lleva a cabo la ejecución especulativa de todas las opciones de ramificación.

Dado que las operaciones realizadas especulativamente usan la misma caché que para las instrucciones ejecutadas normalmente, es posible durante la ejecución especulativa establecer en la caché marcadores que reflejen el contenido de bits individuales en un área de memoria cerrada, y luego en el código normalmente ejecutado para determinar su valor a través de El análisis de tiempo accede a datos almacenados en caché y no almacenados en caché.

La peculiaridad de la nueva vulnerabilidad que afecta a los procesadores AMD Zen+ y Zen 2, es que las CPU permiten la ejecución especulativa de operaciones de lectura y escritura que acceden a la memoria utilizando direcciones no canónicas inválidas, simplemente ignorando los 16 bits superiores.

Por lo tanto, en el proceso de ejecución de código especulativo, el procesador siempre usa solo los 48 bits inferiores y la validación de la dirección se realiza por separado. Si, al traducir una dirección virtual no canónica a una dirección física en el búfer asociativo de traducción (TLB) si la parte canónica de la dirección coincide, la operación de carga especulativa devolverá un valor sin tener en cuenta el contenido de los 16 bits superiores, lo que le permite omitir el uso compartido de memoria entre subprocesos. Posteriormente, la operación quedará invalidada y descartada, pero se realizará el acceso a la memoria y los datos se asentarán en la caché.

Durante el experimento, utilizando la técnica de detección de contenido de caché FLUSH + RELOAD, los investigadores pudieron organizar un canal para la transmisión de datos encubiertos a una velocidad de 125 bytes por segundo.

Las mismas técnicas que ayudan a bloquear los ataques Meltdown, como el uso de instrucciones LFENCE, se pueden utilizar para defenderse del nuevo ataque.

Al mismo tiempo, los investigadores señalan que, en comparación con los procesadores Intel, la arquitectura de los procesadores AMD limita la posibilidad de realizar ataques reales, pero no excluye el uso de un nuevo método en combinación con otros ataques de microarquitectura para aumentar su efectividad.

En particular, la opción de ataque propuesta no permite determinar el contenido de las áreas de memoria del kernel y otros procesos, pero se limita a la capacidad de obtener acceso a otros subprocesos del mismo programa que se ejecutan en el mismo espacio de memoria virtual.

Fuente: https://www.amd.com, https://arxiv.org/

 

from Linux Adictos https://ift.tt/2X3ktLm
via IFTTT