Se presentó el lanzamiento de la nueva versión del proyecto QEMU 6.0 en la cual en la preparación se realizaron más de 3300 cambios de 268 desarrolladores y de cuyos cambios se destacan las mejoras de controladores, soporte para nuevas plataformas y opciones experimentales.
Para quienes desconocen de QEMU, deben saber que es un software que permite ejecutar un programa compilado para una plataforma de hardware en un sistema con una arquitectura completamente diferente, por ejemplo, para ejecutar una aplicación para ARM en una PC compatible con x86.
En el modo de virtualización en QEMU, el rendimiento de la ejecución de código en un entorno aislado está cerca del sistema de hardware debido a la ejecución directa de instrucciones en la CPU y el uso del hipervisor Xen o el módulo KVM.
Principales novedades de QEMU 6.0
En esta nueva versión de Qemu 6.0 el emulador de controlador NVMe ahora cumple con la especificación NVMe 1.4 e incluye soporte experimental para espacios de nombres por zonas, E/S de múltiples rutas y cifrado de almacenamiento de un extremo a otro.
El emulador ARM agrega soporte para la arquitectura ARMv8.1-M ‘Helium’ y los procesadores Cortex-M55, así como las instrucciones extendidas ARMv8.4 TTST, SEL2 y DIT. También se agregó soporte para placas ARM mps3-an524 y mps3-an547. Se implementa una emulación de dispositivo adicional para las placas xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx y sabrelite.
Para ARM en los modos de emulación a nivel del sistema y del entorno de usuario, se implementa la compatibilidad con la extensión ARMv8.5 MTE (MemTag, Memory Tagging Extension), que le permite vincular etiquetas a cada operación de asignación de memoria y organizar una verificación de puntero al acceder a la memoria, que debe estar asociado con la etiqueta correcta. La extensión se puede usar para bloquear la explotación de vulnerabilidades causadas por el acceso a bloques de memoria ya liberados, desbordamientos de búfer, llamadas de preinicialización y uso fuera del contexto actual.
El emulador 68k agrega soporte para un nuevo tipo de máquina emulada «virt» que usa dispositivos virtio para optimizar el rendimiento, mientras que el emulador de arquitectura x86 agrega la capacidad de usar la tecnología AMD SEV-ES (virtualización cifrada segura) para cifrar los registros del procesador utilizados en el sistema invitado, lo que hace que el contenido de los registros sea inaccesible para el entorno host si el sistema invitado no otorga explícitamente acceso a ellos.
Además en Qemu 6.0 se añadieron las opciones experimentales «-machine x-remote» y «-device x-pci-proxy-dev» para mover la emulación de dispositivos a procesos externos. En este modo, actualmente solo se admite la emulación del adaptador SCSI lsi53c895.
Asi como también un nuevo módulo FUSE para exportar dispositivos de bloque, lo que le permite montar una porción del estado de cualquier dispositivo de bloque utilizado en el invitado. La exportación se realiza mediante el comando block-export-add QMP o mediante la opción «–export» en la utilidad qemu-storage-daemon.
Por otra parte, se menciona queVirtiofs aborda las vulnerabilidades:
- CVE-2020-35517: permite el acceso al entorno host desde el sistema invitado mediante la creación de un archivo de dispositivo especial en el sistema invitado por un usuario privilegiado en un directorio compartido con el entorno host.
- CVE-2021-20263: causado por un error en el manejo de atributos extendidos en la opción ‘xattrmap’, y puede hacer que se ignoren los permisos de escritura y la escalada de privilegios dentro del invitado.
De los demás cambios que se destacan de esta nueva versión:
- Se agregó soporte experimental para crear instantáneas de contenido de RAM.
- Se agregó soporte para emular procesadores Qualcomm Hexagon con DSP.
- El generador de código clásico TCG (Tiny Code Generator) es compatible con entornos de host macOS en sistemas con el nuevo chip ARM de Apple M1.
- El emulador RISC-V para placas Microchip PolarFire es compatible con flash QSPI NOR.
- El emulador Tricore ahora admite un nuevo modelo de placas TriBoard que emulan el SoC Infineon TC27x.
- El emulador ACPI ofrece la posibilidad de asignar nombres a adaptadores de red en sistemas invitados, independientemente del orden de conexión al bus PCI.
- Virtiofs agrega soporte para la opción FUSE_KILLPRIV_V2 para mejorar el rendimiento de los huéspedes.
- VNC agrega soporte para la transparencia del cursor y soporte para la escala de resolución de pantalla en virtio-vga según el tamaño de la ventana.
- QMP (QEMU Machine Protocol) agrega soporte para acceso paralelo asíncrono al realizar tareas de respaldo.
- El emulador USB ha agregado la capacidad de guardar el tráfico generado al trabajar con dispositivos USB en un archivo pcap separado para su posterior inspección en Wireshark.
- Se agregaron nuevos comandos QMP load-snapshot, save-snapshot y delete-snapshot para administrar las instantáneas de qcow2.
Finalmente si deseas conocer más al respecto, puedes consultar los detalles en el siguiente enlace.