Linux Adictos Darkcrizt  

Zenbleed, una vulnerabilidad que afecta a procesadores AMD Zen 2

vulnerabilidad

Si se explotan, estas fallas pueden permitir a los atacantes obtener acceso no autorizado a información confidencial o, en general, causar problemas

Hace pocos días un investigador del equipo de seguridad de Google, dio a conocer la noticia de que detecto una vulnerabilidad (ya catalogada bajo CVE-2023-20593) en los procesadores AMD basados ​​en la microarquitectura Zen2 que se puede utilizar para detectar registros mientras otros procesos se ejecutan en el mismo núcleo de la CPU.

Esta vulnerabilidad se considera importante, ya que el ataque se puede realizar desde máquinas virtuales y entornos aislados. En esencia, el problema se parece a las vulnerabilidades clásicas de uso después de liberar causadas por el acceso a la memoria después de que se haya liberado.

El problema ocurre con AMD Ryzen 3000, Ryzen PRO 3000, Ryzen Threadripper 3000, Ryzen 4000 con Radeon Graphics, Ryzen PRO 4000, Ryzen 5000 con Radeon Graphics, Ryzen 7020 con Radeon Graphics y la serie de procesadores EPYC 7002.

Sobre la vulnerabilidad, se menciona se debe a que en los procesadores, para almacenar el contenido de los registros, se utiliza un archivo de registro (RF, Register File), que es un arreglo que se comparte en todas las tareas en el mismo núcleo de la CPU. La tabla de asignación de registros (RAT) es responsable de adjuntar registros con nombres específicos a los recursos del archivo de registro. En este caso, el valor cero se almacena en el registro no almacenando un valor vacío en el archivo de registro, sino configurando el indicador de bit z en la tabla RAT.

La vulnerabilidad se debe al hecho de que si el bit z se establece durante la ejecución especulativa de instrucciones, no es suficiente simplemente restablecerlo en caso de una predicción de bifurcación incorrecta, ya que el espacio en el archivo de registro se puede reasignar a partir de la ejecución especulativa.

El efecto revelado ocurre cuando simultáneamente se cambia el nombre de un registro, se usa una instrucción para la cual se aplica la optimización de combinación y se ejecuta especulativamente una instrucción vectorial VZEROUPPER que establece el bit z y libera recursos del archivo de registro. Si la predicción de bifurcación falla y la operación especulativa VZEROUPPER se deshace, el contenido de los registros vectoriales puede corromperse, ya que el bit z se deshace, pero el recurso liberado permanece sin descartar.

A través de la manipulación de la instrucción VZEROUPPER, es posible lograr una fuga controlada de datos procesados ​​en los registros vectoriales YMM utilizados en los modos AVX (Advanced Vector Extensions) y SSE (Streaming SIMD Extensions). Estos registros se usan activamente en las funciones de copia de memoria y procesamiento de cadenas, por ejemplo, en la biblioteca Glibc se usan en las funciones memcpy, strcmp y strlen.

Para demostrar la vulnerabilidad, cuyo nombre en código es Zenbleed, se ha preparado un prototipo de exploit que permite a un usuario sin privilegios determinar los datos procesados ​​en las instrucciones AES-NI o ​​REP-MOVS (normalmente utilizadas en la función memcpy), que pueden utilizarse para reconstruir claves de cifrado y contraseñas de usuario, procesadas en otros procesos, incluidos los privilegiados. El rendimiento de fuga de datos del exploit es de aproximadamente 30 KB por segundo.

La vulnerabilidad se corrigió en el nivel de actualización del microcódigo. Para Linux se ha preparado un parche para descargar el microcódigo corregido. Aunque si no es posible actualizar el microcódigo, existe una solución para bloquear la vulnerabilidad, lo que conduce a una disminución del rendimiento.

Para ello, se debe configurar el bit de control DE_CFG[9] en la CPU y para ello, en una terminal se debe teclear el siguiente comando:

Cabe mencionar que deshabilitar el modo SMT no bloquea la vulnerabilidad y la solución para bloquear la vulnerabilidad fue implementada dentro de las actualizaciones del kernel 6.4.6, 6.1.41, 5.15.122, 5.10.187, 5.4.250 y 4.19.289.

Para los interesados en dar seguimiento a la información de vulnerabilidad en las diferentes distribuciones, pueden hacerlo en las siguientes páginas: DebianUbuntuGentooRHELSUSEFedoraArchOpenBSDFreeBSDNetBSD.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.