QEMU 6.0 er blevet frigivet. Som emulator gør QEMU det muligt at køre programmer bygget til en hardwareplatform på et system med en helt anden arkitektur, for eksempel at køre en applikation til ARM på en x86-kompatibel PC. I virtualiseringstilstand er udførelsesydelsen for koden i et isoleret miljø nær værk-mæssig på grund af den direkte udførelse af instruktioner på CPU'en og inddragelsen af hypervisoren Xen eller KVM-modulet.
Projektet blev oprindeligt skabt af Fabrice Bellard med det formål at muliggøre kørsel af Linux-eksekverbare filer bygget til x86-platforme på arkitekturer, der adskiller sig fra x86. Gennem årene er der blevet tilføjet support til fuld emulering for 14 hardwarearkitekturer, og antallet af emulerede hardware-enheder har oversteget 400. Ved forberedelsen af version 6.0 er der foretaget mere end 3300 ændringer fra 268 udviklere.
Nøgleforbedringer tilføjet i QEMU 6.0:
- Emulatoren for NVMe-controllere er blevet tilpasset NVMe 1.4-specifikationen og har fået eksperimentel support til zoneret namespaces, multipath I/O og fuld data-kryptering på lagermedier.
- Eksperimentelle indstillinger "-machine x-remote" og "-device x-pci-proxy-dev" er blevet tilføjet for at flytte emuleringen af enheder til eksterne processer. I denne tilstand understøttes kun emulering af SCSI-adapteren lsi53c895 indtil videre.
- Eksperimentel support til oprettelse af snapshots af indholdet i RAM er blevet tilføjet.
- En FUSE-modul til eksport af blok-enheder er blevet tilføjet, hvilket muliggør montering af snapshots af tilstanden af enhver blok-enhed, der anvendes i gæstesystemet. Eksporten udføres via QMP-kommandoen block-export-add eller via indstillingen "—export" i værktøjet qemu-storage-daemon.
- I ARM-emulatoren er der blevet tilføjet support til ARMv8.1-M 'Helium'-arkitekturen og Cortex-M55-processorer samt udvidede instruktioner ARMv8.4 TTST, SEL2 og DIT. Der er tilføjet support til ARM-platforme mps3-an524 og mps3-an547. For platformene xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx og sabrelite er der implementeret yderligere emulering af enheder.
- For ARM in system-level and user-space emulation modes, support for the ARMv8.5 MTE (MemTag, Memory Tagging Extension) has been implemented, allowing tags to be linked to each memory allocation operation and organizing a pointer check when accessing memory, which must be associated with the correct tag. The extension can be used to block the exploitation of vulnerabilities caused by accesses to already freed memory blocks, buffer overflows, accesses before initialization, and usage outside the current context.
- The 68k architecture emulator has added support for a new type of emulated machine called 'virt', which uses virtio for optimizing device performance.
- The x86 architecture emulator has added the ability to apply AMD SEV-ES (Secure Encrypted Virtualization) technology for encrypting the CPU registers used in the guest system, which makes the contents of the registers inaccessible to the host environment unless the guest system explicitly provides access.
- In the classic TCG (Tiny Code Generator), support for the PKS (Protection Keys Supervisor) mechanism has been implemented for x86 system emulation, which can be used to protect access to privileged memory pages.
- The MIPS architecture emulator has added a new type of emulated machine called 'virt' with support for Chinese Loongson-3 processors.
- In the PowerPC architecture emulator for 'powernv' emulated machines, support for external BMC controllers has been added. For 'pseries' emulated machines, failure notifications during attempts to hot-unplug memory and CPU have been ensured.
- Support for emulating Qualcomm Hexagon processors with DSP has been added.
- In the classic TCG (Tiny Code Generator), support for macOS host environments on systems with the new Apple M1 ARM chip has been implemented.
- In the RISC-V architecture emulator for Microchip PolarFire boards, support for QSPI NOR flash has been implemented.
- The Tricore emulator now supports a new model of TriBoard platforms that emulate Infineon TC27x SoC.
- In the ACPI emulator, the ability to assign network adapters in guest systems with names independent of the order of connection to the PCI bus has been provided.
- In virtiofs, support for the FUSE_KILLPRIV_V2 option has been added to improve guest system performance.
- I VNC er der tilføjet støtte til gennemsigtighed af musemarkøren og understøttelse af skaleringsopløsning i virtio-vga, som er baseret på vinduets størrelse.
- I QMP (QEMU Machine Protocol) er der tilføjet støtte til asynkron parallel adgang ved udførelse af backups.
- I USB-emulatoren er det nu muligt at gemme den trafik, der genereres under brug af USB-enheder, i en separat pcap-fil til efterfølgende inspektion i Wireshark.
- Der er tilføjet nye QMP-kommandoer load-snapshot, save-snapshot og delete-snapshot til administration af qcow2 snapshots.
- I virtiofs er sårbarhederne CVE-2020-35517 og CVE-2021-20263 blevet løst. Det første problem kan give adgang til værtens miljø fra gæstesystemet gennem oprettelse af en privilegeret bruger i gæstesystemet, der skaber en speciel enhedsfil i et bibliotek, der deles med værtens miljø. Det andet problem skyldes en fejl i behandlingen af udvidede attributter i indstillingen 'xattrmap' og kan føre til ignorering af nulstilling af skriveadgangsrettigheder og en forhøjelse af privilegier inde i gæstesystemet.
Kilde: opennet.ru
