Vulnerabilidades en el mecanismo MMIO de los procesadores Intel

Intel ha revelado información sobre una nueva clase de fuga de datos a través de estructuras microarquitectónicas de procesadores, que permiten, mediante la manipulación del mecanismo MMIO (Memory Mapped Input Output), determinar información procesada en otros núcleos de CPU. Por ejemplo, las vulnerabilidades permiten extraer datos de otros procesos, enclaves Intel SGX o máquinas virtuales. Las vulnerabilidades son específicas sólo de las CPU Intel; los procesadores de otros fabricantes no se ven afectados por las vulnerabilidades.

Las vulnerabilidades aparecen en varias CPU Intel, incluidos procesadores basados ​​en microarquitecturas Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake y Rocketlake, así como en procesadores de servidor Xeon EP/EX, Scalable y algunos Atom. Para llevar a cabo un ataque se requiere acceso a MMIO, que, por ejemplo, se puede obtener en sistemas de virtualización que brindan la posibilidad de acceder a MMIO para sistemas invitados controlados por el atacante. También es posible que se requiera una solución para los sistemas que utilizan enclaves aislados Intel SGX (Software Guard Extensions).

Bloquear la vulnerabilidad requiere tanto una actualización del microcódigo 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 buffers de microarquitectura al regresar del kernel al espacio del usuario o al transferir el control al sistema invitado. También se utiliza una protección similar para bloquear ataques previamente identificados de las clases MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) y TAA (Transactional Asynchronous Abort).

Por el lado del microcódigo, los cambios necesarios para implementar la protección se propusieron en la actualización del microcódigo de mayo para las CPU Intel (IPU 2022.1). En el kernel de Linux, se incluye protección contra una nueva clase de ataques en las versiones 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 y 4.9.319. Para verificar la exposición del sistema a vulnerabilidades en MMIO y evaluar la actividad de ciertos mecanismos de protección, se agregó el archivo “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” al kernel de Linux. Para controlar la inclusión de protección se ha implementado el parámetro de arranque del kernel “mmio_stale_data”, que puede tomar los valores “full” (permite la limpieza de buffers al pasar al espacio del usuario y en la VM), “full,nosmt” ( como “full” + desactiva adicionalmente SMT/Hyper-Threads) y “off” (protección desactivada). Se ofrecen correcciones independientes para el hipervisor Xen y el sistema operativo Qubes.

La esencia de la clase de vulnerabilidad 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 de la aplicación o búferes de CPU. 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) es un problema con el manejo incorrecto de las escrituras en algunos registros MMIO. Si el tamaño de los datos que se escriben es menor que el tamaño del registro, entonces la información residual de los buffers de llenado también se copia en el registro. Como resultado, un proceso que inicia una operación de escritura incompleta en el registro MMIO puede obtener los datos que quedan en los buffers de microarquitectura de operaciones realizadas en otros núcleos de CPU.
  • SBDS (Muestreo de datos de búferes compartidos, CVE-2022-21125) es una fuga de datos residuales de un búfer de relleno vinculado al kernel que resulta del movimiento desde búferes intermedios comunes a todos los kernels.
  • SBDR (lectura de datos de búferes compartidos, CVE-2022-21123): el problema es similar al SBDS, pero se diferencia en que los datos residuales pueden terminar en estructuras de CPU visibles para las aplicaciones. Los problemas de SBDS y SBDR aparecen sólo en procesadores para sistemas cliente y en la familia de servidores Intel Xeon E3.

Vulnerabilidades en el mecanismo MMIO de los procesadores Intel


Fuente: opennet.ru

Añadir un comentario