Представен е релиз на проект QEMU 6.0. Като емулатор, QEMU позволява стартирането на програма, компилирана за една хардуерна платформа, на система с напълно различна архитектура, например, изпълнение на приложение за ARM на компютър, съвместим с x86. В режим на виртуализация при QEMU производителността на кода в изолирана среда е близка до тази на физическата система, благодарение на директното изпълнение на инструкциите на CPU и използването на хипервизора Xen или модула KVM.
Проектът първоначално е създаден от Фабрис Беллар (Fabrice Bellard), с цел да осигури възможност за стартиране на изпълними файлове Linux, компилирани за платформа x86, на архитектури, различни от x86. През годините на разработка е добавена поддръжка на пълна емулация за 14 хардуерни архитектури, а броят на емулираните хардуерни устройства е надхвърлил 400. При подготовката на версия 6.0 са внесени над 3300 изменения от 268 разработчици.
Ключови подобрения, добавени в QEMU 6.0:
- Емулаторът на контролери NVMe е приведен в съответствие със спецификацията NVMe 1.4 и е снабден с експериментална поддръжка за зонирани пространства на имена, multipath I/O и криптиране на данни на устройства за съхранение.
- Добавени експериментални опции „-machine x-remote“ и „-device x-pci-proxy-dev“ за извеждане на емулацията на устройства във външни процеси. В този режим в момента се поддържа само емулацията на SCSI адаптер a lsi53c895.
- Добавена е експериментална поддръжка за създаване на снимки на съдържанието на RAM.
- Добавен е FUSE модул за експортиране на блочни устройства, който позволява монтиране на среза на състоянието на всяко блочно устройство, използвано в гостуващата система. Експортът се извършва чрез QMP команда block-export-add или чрез опция „—export“ в утилитата qemu-storage-daemon.
- В емуlatora ARM е добавена поддръжка за архитектурата ARMv8.1-M 'Helium' и процесорите Cortex-M55, както и разширени инструкции ARMv8.4 TTST, SEL2 и DIT. Добавена е поддръжка на ARM платформи mps3-an524 и mps3-an547, както и допълнителна емулация на устройства за платформи xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx и sabrelite.
- Поддържа се разширението ARMv8.5 MTE (MemTag, Memory Tagging Extension) във времето на емуляция на системно ниво и потребителска среда за ARM, което позволява свързването на тагове с всяка операция за разпределение на памет и извършване на проверки на указателя при достъп до паметта, който трябва да бъде свързан с коректния таг. Разширението може да се използва за предотвратяване на експлоатация на уязвимости, причинени от достъп до вече освободени блокове памет, преливания на буфери, обращения преди инициализация и използване извън текущия контекст.
- В емуlatora на архитектура 68k е добавена поддръжка за нов тип емулирани машини „virt“, използващи устройства virtio за оптимизация на производителността.
- В емулатора на архитектурата x86 е добавена възможност за прилагане на технологията AMD SEV-ES (Secure Encrypted Virtualization) за криптиране на регистрите на процесора, използвани в гостуващата система, така че съдържанието на регистрите да не бъде достъпно за хост средата, освен ако гостуващата система експlicitно не предостави достъп до тях.
- В класическия генератор на код TCG (Tiny Code Generator) е реализирана поддръжка на механизма PKS (Protection Keys Supervisor) при емуляция на x86 системи, който може да се използва за защита на достъпа до привилегировани страници памет.
- В емуlatora на архитектура MIPS е добавен нов тип емулирани машини „virt“ с поддръжка на китайските процесори Loongson-3.
- В емуlatora на архитектура PowerPC за емулираните машини „powernv“ е добавена поддръжка на външни BMC контролери. За емулираните машини pseries е осигурено уведомление за повреди при опит за горещо извличане на памет и CPU.
- Добавена е поддръжка за емуляция на процесори Qualcomm Hexagon с DSP.
- В класическия генератор на код TCG (Tiny Code Generator) е реализирана поддръжка на хост средите macOS на системи с новия ARM чип на Apple M1.
- В емулатора на архитектурата RISC-V за платформи Microchip PolarFire е реализирана поддръжка на QSPI NOR flash.
- В емулатора Tricore е добавена поддръжка на новия модел плат TriBoard, емулиращ SoC Infineon TC27x.
- В емулатора ACPI е предоставена възможност за назначаване на мрежови адаптери в гостуващите системи с имена, независими от реда на свързване към шина PCI.
- В virtiofs е добавена поддръжка на опцията FUSE_KILLPRIV_V2 за повишаване на производителността на гостуващите системи.
- В VNC е добавена поддръжка за прозрачност на курсора и поддръжка на мащабиране на резолюцията на екрана в virtio-vga, в зависимост от размера на прозореца.
- В QMP (QEMU Machine Protocol) е добавена поддръжка за асинхронен паралелен достъп при изпълнение на резервни задачи.
- В USB емулационера е добавена възможност за запазване на трафика, генериран от работата с USB устройства, в отделен pcap файл за последваща инспекция в Wireshark.
- Добавени са нови QMP команди load-snapshot, save-snapshot и delete-snapshot за управление на qcow2 снимки.
- В virtiofs са отстранени уязвимостите CVE-2020-35517 и CVE-2021-20263. Първата проблеma позволява достъп до хост средата от гостуващата система чрез създаване на специален файл за устройства от привилегирован потребител в гостуващата система в директория, споделена с хост средата. Втората проблеma е причинена от грешка при обработката на разширени атрибути в опцията 'xattrmap' и може да доведе до игнориране на нулирането на правата за запис и повишаване на привилегиите в гостуващата система.
Източник: opennet.ru
