Se ha presentado el lanzamiento del proyecto QEMU 6.0. Como emulador, QEMU permite ejecutar programas compilados para una plataforma de hardware en un sistema con una arquitectura completamente diferente, por ejemplo, ejecutar una aplicación para ARM en un PC compatible con x86. En modo de virtualización, el rendimiento de la ejecución de código en un entorno aislado es cercano al de un sistema de hardware gracias a la ejecución directa de instrucciones en la CPU y al aprovechamiento del hipervisor Xen o el módulo KVM.
El proyecto fue inicialmente creado por Fabrice Bellard con el objetivo de permitir la ejecución de archivos ejecutables de Linux compilados para la plataforma x86 en arquitecturas diferentes a x86. A lo largo de los años de desarrollo, se ha añadido soporte para la emulación completa de 14 arquitecturas de hardware, y el número de dispositivos de hardware emulados ha superado los 400. En la preparación de la versión 6.0, se han realizado más de 3300 cambios por 268 desarrolladores.
Mejoras clave añadidas en QEMU 6.0:
- El emulador de controladores NVMe se ha puesto en conformidad con la especificación NVMe 1.4 y se le ha proporcionado soporte experimental para espacios de nombres zonificados, I/O multipath y cifrado de datos en el dispositivo.
- Se han añadido opciones experimentales «-machine x-remote» y «-device x-pci-proxy-dev» para llevar la emulación de dispositivos a procesos externos. En este modo, actualmente solo se admite la emulación del adaptador SCSI lsi53c895.
- Se ha añadido soporte experimental para crear instantáneas del contenido de la RAM.
- Se ha añadido un módulo FUSE para exportar dispositivos de bloques, permitiendo montar un corte del estado de cualquier dispositivo de bloques utilizado en el sistema invitado. La exportación se realiza a través del comando QMP block-export-add o a través de la opción «--export» en la utilidad qemu-storage-daemon.
- En el emulador ARM se ha añadido soporte para la arquitectura ARMv8.1-M ‘Helium’ y los procesadores Cortex-M55, así como instrucciones avanzadas ARMv8.4 TTST, SEL2 y DIT. Se ha añadido soporte para las placas ARM mps3-an524 y mps3-an547. Además, se ha implementado una emulación adicional de dispositivos 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 ha implementado el soporte para la extensión ARMv8.5 MTE (MemTag, Memory Tagging Extension), que permite asociar etiquetas a cada operación de asignación de memoria y organizar una verificación del puntero al acceder a la memoria, la cual debe estar vinculada a la etiqueta correcta. La extensión se puede utilizar para bloquear la explotación de vulnerabilidades causadas por el acceso a bloques de memoria ya liberados, desbordamientos de búfer, accesos antes de la inicialización y el uso fuera del contexto actual.
- En el emulador de la arquitectura 68k se ha añadido soporte para un nuevo tipo de máquinas emuladas «virt», que utilizan virtio para optimizar el rendimiento del dispositivo.
- En el emulador de la arquitectura x86 se ha añadido la posibilidad de aplicar la tecnología AMD SEV-ES (Secure Encrypted Virtualization) para cifrar los registros del procesador utilizados en el sistema huésped, lo que hace que el contenido de los registros no esté disponible para el entorno host, a menos que el sistema huésped lo permita explícitamente.
- En el generador de código clásico TCG (Tiny Code Generator), al emular sistemas x86, se ha implementado el apoyo al mecanismo PKS (Protection Keys Supervisor), que se puede utilizar para proteger el acceso a páginas de memoria privilegiadas.
- En el emulador de la arquitectura MIPS se ha agregado un nuevo tipo de máquinas emuladas «virt» con soporte para los procesadores chinos Loongson-3.
- En el emulador de la arquitectura PowerPC para las máquinas emuladas «powernv» se ha añadido el soporte para controladores BMC externos. Para las máquinas emuladas pseries se ha garantizado la notificación de fallos al intentar la extracción en caliente de memoria y CPU.
- Se ha añadido soporte para la emulación de procesadores Qualcomm Hexagon con DSP.
- En el generador de código clásico TCG (Tiny Code Generator) se ha implementado soporte para entornos host de macOS en sistemas con el nuevo chip ARM de Apple M1.
- En el emulador de arquitectura RISC-V para placas Microchip PolarFire se ha implementado soporte para QSPI NOR flash.
- En el emulador Tricore se ha añadido soporte para un nuevo modelo de placas TriBoard, que emula SoC Infineon TC27x.
- En el emulador ACPI se ha proporcionado la posibilidad de asignar nombres a los adaptadores de red en sistemas huéspedes que no dependen del orden de conexión al bus PCI.
- En virtiofs se ha añadido soporte para la opción FUSE_KILLPRIV_V2 para mejorar el rendimiento de los sistemas huéspedes.
- En VNC se ha añadido soporte para la transparencia del cursor y soporte para escalar la resolución de pantalla en virtio-vga, dependiendo del tamaño de la ventana.
- Se ha añadido soporte para acceso paralelo asíncrono en el QMP (Protocolo de Máquina QEMU) durante la ejecución de tareas de respaldo.
- En el emulador USB se ha añadido 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 han añadido nuevos comandos QMP: load-snapshot, save-snapshot y delete-snapshot para gestionar snapshots qcow2.
- Se han corregido las vulnerabilidades CVE-2020-35517 y CVE-2021-20263 en virtiofs. El primer problema permite el acceso al entorno host desde la máquina huésped a través de la creación por un usuario privilegiado en la máquina huésped de un archivo de dispositivo especial en un directorio compartido con el entorno host. El segundo problema es causado por un error en el manejo de atributos extendidos en la opción 'xattrmap' y puede llevar a la ignorancia de la desactivación de derechos de escritura y elevar privilegios dentro de la máquina huésped.
Fuente: opennet.ru
