Se revelaron detalles de vulnerabilidades en el mecanismo MMIO de los procesadores Intel
Hace poco Intel dio a conocer detalles sobre una nueva clase de fugas de datos a través de las estructuras microarquitectónicas de los procesadores, que permiten, a través de la manipulación del mecanismo MMIO (Memory Mapped Input Output), determinar la información procesada en otros núcleos de CPU.
Por ejemplo, las vulnerabilidades permiten la extracción de datos de otros procesos, enclaves Intel SGX o máquinas virtuales. Las vulnerabilidades son específicas de las CPU Intel únicamente; los procesadores de otros fabricantes no se ven afectados por las vulnerabilidades.
Se han identificado tres métodos para extraer datos residuales a través de MMIO:
- DRPW (escritura parcial de registro de dispositivo, CVE-2022-21166): un problema con el manejo incorrecto de escrituras en algunos registros MMIO. Si el tamaño de los datos escritos es menor que el tamaño del registro, la información residual de los búferes de relleno también se copia en el registro. Como resultado, un proceso que inició una operación de escritura incompleta en el registro MMIO puede recibir datos que quedan en los búferes de microarquitectura después de las operaciones realizadas en otros núcleos de CPU.
- SBDS (Muestreo de datos de búferes compartidos, CVE-2022-21125): fuga de datos residuales del búfer de relleno vinculado al núcleo, que cayó como resultado de pasar de los búferes intermedios comunes a todos los núcleos.
- SBDR (Lectura de datos de búferes compartidos, CVE-2022-21123): el problema es similar a SBDS, pero difiere en que los datos residuales pueden ingresar a estructuras de CPU visibles para las aplicaciones. Los problemas de SBDS y SBDR solo ocurren en los procesadores del cliente y en la familia de servidores Intel Xeon E3.
Un ataque requiere acceso a MMIO, que, por ejemplo, se puede obtener en sistemas de virtualización que brindan la capacidad de acceder a MMIO para sistemas invitados controlados por el atacante. La solución también puede ser necesaria para los sistemas que utilizan enclaves Intel SGX (Software Guard Extensions) independientes.
El bloqueo de la vulnerabilidad requiere tanto una actualización de firmware como el uso de métodos de protección de software adicionales basados en el uso de la instrucción VERW para borrar el contenido de los búferes de microarquitectura en el momento de regresar del kernel al espacio del usuario o cuando se transfiere el control al sistema invitado.
También se utiliza una protección similar para bloquear ataques previamente identificados de las clases MDS (muestreo de datos de microarquitectura), SRBDS (muestreo de datos de búfer de registro especial) y TAA (aborto asíncrono transaccional).
Estas vulnerabilidades no son ataques de ejecución transitoria . Sin embargo, estas vulnerabilidades pueden propagar datos obsoletos a los búferes de relleno del núcleo donde los datos pueden ser inferidos posteriormente por un ataque de ejecución transitoria no mitigado.
La mitigación de estas vulnerabilidades incluye una combinación de actualizaciones de microcódigo y cambios de software, según la plataforma y el modelo de uso. Algunas de estas mitigaciones son similares a las que se usan para mitigar el muestreo de datos de microarquitectura (MDS) o las que se usan para mitigar el muestreo de datos de búfer de registro especial (SRBDS).
A estas vulnerabilidades se les han asignado los siguientes identificadores de exposición y vulnerabilidades comunes (CVE) y las puntuaciones de la versión 3.1
En el lado del microcódigo, los cambios necesarios para implementar la seguridad se proponen en la actualización de microcódigo de mayo para CPU Intel (IPU 2022.1).
En el kernel de Linux, se incluye protección contra una nueva clase de ataques en las diferentes versiones que cuentan con soporte.
El archivo «/sys/devices/system/cpu/vulnerabilities/mmio_stale_data» se agregó al kernel de Linux para verificar la susceptibilidad del sistema a las vulnerabilidades en MMIO y para evaluar la actividad de ciertos mecanismos de protección.
La esencia de la clase de vulnerabilidades identificada es que algunas operaciones conducen a copiar o mover datos que quedan después de la ejecución en otros núcleos de CPU de un búfer de microarquitectura a otro. Las vulnerabilidades en MMIO permiten que estos datos residuales se transfieran desde búferes de microarquitectura aislados a registros visibles para aplicaciones o búferes de CPU.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.