Bol uvoľnený projekt QEMU 6.0. Ako emulátor QEMU umožňuje spustiť program, ktorý bol zostavený pre jednu hardvérovú platformu, na systéme s úplne inou architektúrou, napríklad spustiť aplikáciu pre ARM na počítači kompatibilnom s x86. V režime virtualizácie je výkon vykonávania kódu v izolovanom prostredí blízky hardvérovej sústave vďaka priamemu vykonávaniu inštrukcií na CPU a zapojeniu hypervízora Xen alebo modulu KVM.
Projekt bol pôvodne vytvorený Fabrice Bellard s cieľom umožniť spúšťanie zostavených spustiteľných súborov Linux pre platformu x86 na architektúrach odlišných od x86. Počas rokov vývoja bola pridaná podpora úplnej emulácie pre 14 hardvérových architektúr a počet emulovaných hardvérových zariadení presiahol 400. Pri príprave verzie 6.0 bolo realizovaných viac ako 3300 zmien od 268 vývojárov.
Kľúčové vylepšenia pridané do QEMU 6.0:
- Emulátor ovládačov NVMe bol prispôsobený špecifikácii NVMe 1.4 a vybavený experimentálnou podporou zónovaných názvov priestorov, multipath I/O a priebežného šifrovania údajov na úložisku.
- Pridané experimentálne možnosti „-machine x-remote“ a „-device x-pci-proxy-dev“ pre externú emuláciu zariadení. V tomto režime sa zatiaľ podporuje len emulácia SCSI adaptéru lsi53c895.
- Pridaná experimentálna podpora pre vytváranie snímok obsahu RAM.
- Pridaný FUSE modul na export blokových zariadení, ktorý umožňuje pripojiť okamžik stavu akéhokoľvek blokového zariadenia používaného v hosťujúcom systéme. Export sa vykonáva cez príkaz QMP block-export-add alebo cez možnosť „—export“ v nástroji qemu-storage-daemon.
- Do emulátora ARM bola pridaná podpora architektúry ARMv8.1-M ‘Helium’ a procesorov Cortex-M55, ako aj rozšírené inštrukcie ARMv8.4 TTST, SEL2 a DIT. Bola pridaná podpora ARM platforiem mps3-an524 a mps3-an547. Pre platformy xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx a sabrelite bola realizovaná ďalšia emulácia zariadení.
- Pre ARM v režimoch emulácie na úrovni systému a používateľského prostredia bola implementovaná podpora rozšírenia ARMv8.5 MTE (MemTag, rozšírenie označovania pamäte), ktoré umožňuje priradiť značky k každej operácii alokácie pamäte a zabezpečiť pri prístupe k pamäti kontrolu ukazovateľa, ktorý by mal byť spojený s správnou značkou. Toto rozšírenie sa môže použiť na blokovanie zneužívania zraniteľností spôsobených prístupom k už uvoľneným blokom pamäte, pretečením vyrovnávacej pamäte, prístupmi pred inicializáciou a použitím mimo aktuálneho kontextu.
- V emulátore architektúry 68k bola pridaná podpora nového typu emulovaných strojov „virt“, ktoré využívajú technológiu virtio na optimalizáciu výkonu zariadení.
- V emulátore architektúry x86 bola pridaná možnosť využitia technológie AMD SEV-ES (Secure Encrypted Virtualization) na šifrovanie registrov procesora používanej v hostiteľskom systéme, čo robí obsah registrov neprístupným pre hostiteľské prostredie, pokiaľ hostiteľský systém výslovne neposkytne k nim prístup.
- V klasickom generátore kódu TCG (Tiny Code Generator) pri emulácii systémov x86 bola implementovaná podpora mechanizmu PKS (Protection Keys Supervisor), ktorý sa môže použiť na ochranu prístupu k privilegovaným stránkam pamäte.
- V emulátore architektúry MIPS bol pridaný nový typ emulovaných strojov „virt“ s podporou čínskych procesorov Loongson-3.
- V emulátore architektúry PowerPC pre emulované stroje „powernv“ bola pridaná podpora externých BMC ovládačov. Pre emulované stroje pseries je zabezpečené informovanie o poruchách pri pokuse o horúce vybratie pamäte a CPU.
- Pridaná podpora emulácie procesorov Qualcomm Hexagon s DSP.
- V klasickom generátore kódu TCG (Tiny Code Generator) bola implementovaná podpora hostiteľských prostredí macOS na systémoch s novým ARM čipom Apple M1.
- V emulátore architektúry RISC-V pre dosky Microchip PolarFire bola implementovaná podpora QSPI NOR flash.
- V emulátore Tricore bola pridaná podpora novej modelovej dosky TriBoard, emulujúcej SoC Infineon TC27x.
- V emulátore ACPI bola poskytnutá možnosť priradiť sieťovým adaptérom v hostiteľských systémoch názvy, ktoré sú nezávislé od poradia pripojenia na zbernicu PCI.
- V virtiofs bola pridaná podpora možnosti FUSE_KILLPRIV_V2 na zvýšenie výkonu hostiteľských systémov.
- Do VNC bola pridaná podpora priehľadnosti kurzora a podpora škálovania rozlíšenia obrazovky na virtio-vga, založená na veľkosti okna.
- Do QMP (QEMU Machine Protocol) bola pridaná podpora asynchrónneho paralelného prístupu pri vykonávaní úloh zálohovania.
- V USB emulátore bola pridaná možnosť uchovávania prevádzky, ktorá sa vytvára pri práci s USB zariadeniami, do samostatného pcap súboru na následné preskúmanie vo Wiresharku.
- Boli pridané nové QMP príkazy load-snapshot, save-snapshot a delete-snapshot na správu snímok qcow2.
- Vo virtiofs boli odstránené zraniteľnosti CVE-2020-35517 a CVE-2021-20263. Prvý problém umožňuje prístup k hostiteľskému prostrediu z hosťovského systému vytvorením privilegovaným používateľom v hosťovskom systéme špeciálneho zariadenia v adresári zdieľanom s hostiteľským prostredím. Druhý problém je spôsobený chybou pri spracovaní rozšírených atribútov v možnosti 'xattrmap' a môže viesť k ignorovaniu resetovania práv na zápis a k zvýšeniu privilégií v hosťovskom systéme.
Zdroj: opennet.ru
