La empresa Intel información sobre el nuevo en sus procesadores — (Microarchitectural Data Sampling). Al igual que los ataques anteriores de la clase Spectre, los nuevos problemas pueden llevar a la filtración de datos confidenciales del sistema operativo, máquinas virtuales y procesos ajenos. Se afirma que los problemas fueron inicialmente detectados por empleados y socios de Intel durante una auditoría interna, tras lo cual investigadores independientes informaron sobre problemas similares en Intel. Los procesadores AMD y ARM no están afectados por esta problemática.
Basado en los problemas identificados por los investigadores de la Universidad Técnica de Graz (Austria) varios ataques prácticos por canales laterales:
- () — permite extraer información confidencial de otros procesos, el sistema operativo, máquinas virtuales y entornos seguros (TEE, Trusted Execution Environment). Por ejemplo, se demostró la posibilidad de determinar el historial de apertura de páginas en Tor browser, ejecutándose en otra máquina virtual, así como identificar las claves de acceso y contraseñas utilizadas en aplicaciones;
- () — permite organizar la filtración de información entre diversas áreas aisladas en los procesadores Intel, como buffers de llenado, buffers de almacenamiento y puertos de carga. Se presentan ejemplos de ataques que facilitan filtraciones desde otros procesos, el sistema operativo, máquinas virtuales y entornos seguros. Por ejemplo, se mostró cómo conocer el contenido del hash de la contraseña root desde /etc/shadow mediante intentos de autenticación periódicos (el ataque tomó 24 horas);

Además, se presenta un ejemplo de ataque utilizando JavaScript y WebAssembly al abrir una página maliciosa en el motor SpiderMonkey (en navegadores modernos completos, este tipo de ataque es poco probable debido a las limitaciones en la precisión del temporizador y las medidas de protección contra Spectre);

- () — permite leer datos que han sido recientemente escritos por el sistema operativo y determinar la disposición de la memoria del sistema operativo para facilitar la ejecución de otros ataques;
- — explota optimizaciones del CPU en su manejo de buffers de almacenamiento y puede ser utilizado para eludir el mecanismo de aleatorización del espacio de direcciones del núcleo (KASLR), para monitorear el estado del sistema operativo o para filtraciones en combinación con dispositivos basados en métodos Spectre.
Identificados :
- CVE-2018-12126 — MSBDS (Muestreo de Datos del Buffer de Almacenamiento Microarquitectónico), recuperación del contenido de los buffers de almacenamiento. Se utiliza en el ataque Fallout. El nivel de peligrosidad está determinado en 6.5 puntos (CVSS);
- CVE-2018-12127 — MLPDS (Muestreo de Datos del Puerto de Carga Microarquitectónico), recuperación del contenido de los puertos de carga. Se utiliza en el ataque RIDL. CVSS 6.5;
- CVE-2018-12130 — MFBDS (Muestreo de Datos del Buffer de Relleno Microarquitectónico), recuperación del contenido de los buffers de relleno. Se utiliza en los ataques ZombieLoad y RIDL. CVSS 6.5;
- CVE-2019-11091 — MDSUM (Muestreo de Datos Microarquitectónicos de Memoria No Cachéable), recuperación del contenido de la memoria no cachéable. Se utiliza en el ataque RIDL. CVSS 3.8.
problemas identificados en la aplicación de métodos de análisis por canales laterales a datos en estructuras microarquitectónicas a las que las aplicaciones no tienen acceso directo. Se trata de estructuras de bajo nivel, como buffers de relleno (Line Fill Buffer), buffers de almacenamiento (Store Buffer) y puertos de carga (Load Port), que son bloques más pequeños que la caché de primer nivel (L1D), la caché de carga de datos (RDCL) o L1TF (L1 Terminal Fault), y que, por lo tanto, contienen menos información y se actualizan con mayor intensidad.

Los ataques por canales laterales a estructuras microarquitectónicas son significativamente más difíciles de llevar a cabo en comparación con los métodos de recuperación del contenido de la caché y requieren el seguimiento y análisis de grandes volúmenes de datos para determinar su relación con direcciones específicas en la memoria (esencialmente, el atacante no puede interceptar datos específicos de forma intencionada, sino que puede acumular filtraciones durante un tiempo prolongado y utilizar métodos estadísticos para reconstruir ciertos tipos de datos). Además, el ataque solo afecta a datos en el mismo núcleo físico de CPU que el código del atacante.
Los métodos propuestos para identificar el contenido de estructuras microarquitectónicas se basan en que estas estructuras son utilizadas durante el procesamiento especulativo de excepciones (fault) u operaciones de carga y almacenamiento.
Durante la ejecución especulativa, el contenido de las estructuras internas se redirige para su procesamiento en registros o caché. Las operaciones especulativas no se completan y el resultado se descarta, pero el contenido redirigido se puede determinar mediante métodos de análisis de caché por canales laterales.
Los puertos de carga son utilizados por el procesador para obtener datos de la memoria o subsistema de entrada/salida y proporcionar la información obtenida a los registros de la CPU. Debido a la particularidad de la implementación, los datos de operaciones de carga previas permanecen en los puertos hasta que sean sobrescritos por nuevos datos, lo que permite determinar indirectamente el estado de los datos en el puerto de carga a través de manipulaciones con excepciones (fault) e instrucciones SSE/AVX/AVX-512 que cargan más de 64 bits de datos. En tales condiciones, las operaciones de carga iluminan especulativamente los valores obsoletos de datos desde las estructuras internas en operaciones dependientes. Similarmente se organiza la filtración a través del búfer de almacenamiento, que se utiliza para acelerar la escritura en la caché de la CPU e incluye una tabla de direcciones, valores y flags, así como través del búfer de llenado, que contiene datos que aún no están en la caché L1 (cache-miss), mientras se cargan desde cachés de otros niveles.
Problema modelos de procesadores Intel, lanzados desde 2011 (comenzando desde la sexta generación). Las vulnerabilidades de hardware se bloquean a partir de ciertos modelos de octava y novena generación de Intel Core y segunda generación de Intel Xeon Scalable (se puede verificar a través del bit ARCH_CAP_MDS_NO en IA32_ARCH_CAPABILITIES MSR). Las vulnerabilidades también ya a nivel de firmware, microcódigo y sistemas operativos. Según Intel, la pérdida de rendimiento tras la activación de la corrección para la mayoría de los usuarios 3%. Al desactivar la tecnología Hyper-Threading, la disminución del rendimiento puede alcanzar hasta el 9% en la prueba SPECint_rate_base, hasta el 11% en cálculos enteros intensivos y hasta el 19% al ejecutar aplicaciones Java en servidor (con HT activado, la disminución del rendimiento es casi inexistente). Las correcciones prácticamente no afectan al rendimiento de las operaciones relacionadas con la entrada/salida.
En el núcleo de Linux, la protección contra MDS en las actualizaciones 5.1.2, 5.0.16,
se basa en sobre la limpieza del contenido de los búferes microarquitectónicos al regresar del núcleo al espacio de usuario o al transferir el control al sistema invitado, para lo cual se utiliza la instrucción VERW. Para que los parches funcionen, es necesario contar con soporte para el modo MD_CLEAR, implementado en la reciente actualización del microcódigo. Para una protección completa, también se recomienda desactivar el Hyper Threading. Para verificar la vulnerabilidad del sistema en el núcleo de Linux manejador «/sys/devices/system/cpu/vulnerabilities/mds». Para gestionar la activación de diferentes modos de bloqueo de vulnerabilidades en el núcleo, se ha añadido el parámetro «mds=», que puede aceptar los valores «full», «full,nosmt» (desactivación de Hyper-Threads), «vmwerv» y «off».
Las actualizaciones de paquetes ya han sido lanzadas para y , pero aún no están disponibles para , y .
La solución para bloquear las fugas de datos de máquinas virtuales también para el hipervisor Xen. Para proteger los sistemas de virtualización que ejecutan el comando L1D_FLUSH antes de transferir el control a otra máquina virtual, y para proteger enclaves Intel SGX, basta con la actualización del microcódigo.
Fuente: opennet.ru


