Випуск емулятора QEMU 6.0

Подано реліз проекту QEMU 6.0. Як емулятор QEMU дозволяє запустити програму, зібрану для однієї апаратної платформи, на системі з зовсім іншою архітектурою, наприклад, виконати додаток для ARM на x86-сумісному ПК. В режимі віртуалізації QEMU продуктивність виконання коду в ізольованому оточенні близька до апаратної системи за рахунок прямого виконання інструкцій на CPU і залучення гіпервізора Xen або модуля KVM.

Спочатку проект був створений Фабрисом Белларом (Fabrice Bellard) з метою забезпечення можливості запуску зібраних для платформи x86 файлів Linux, що виконуються, на архітектурах, відмінних від 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-адаптера lsi53c895.
  • Додано експериментальну підтримку створення снапшотів вмісту ОЗУ.
  • Доданий FUSE-модуль для експорту блокових пристроїв, що дозволяє примонтувати зріз стану будь-якого блокового пристрою, що використовується у гостьовій системі. Експорт здійснюється через QMP-команду block-export-add або через опцію "-export" в утиліті qemu-storage-daemon.
  • Емулятор 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 реалізована додаткова емуляція пристроїв.
  • Для ARM в режимах емуляції на рівні системи та користувача оточення реалізована підтримка розширення ARMv8.5 MTE (MemTag, Memory Tagging Extension), що дозволяє прив'язати теги до кожної операції виділення пам'яті та організувати при доступі до пам'яті перевірку покажчика, який повинен бути пов'язаний з коректним тегом . Розширення може застосовуватися для блокування експлуатації вразливостей, викликаних зверненням до вже звільнених блоків пам'яті, переповнення буфера, зверненнями до ініціалізації та використанням поза поточним контекстом.
  • У емуляторі архітектури 68k додано підтримку нового типу емульованих машин «virt», що використовують для оптимізації продуктивності пристрою virtio.
  • У емуляторі архітектури x86 додано можливість застосування технології AMD SEV-ES (Secure Encrypted Virtualization) для шифрування регістрів процесора, що використовуються в гостьовій системі, що робить вміст регістрів недоступним для хост-оточення, якщо гостьова система явно не надасть доступу.
  • У класичному генераторі коду TCG (Tiny Code Generator) при емуляції систем x86 реалізовано підтримку механізму PKS (Protection Keys Supervisor), який можна застосовувати для захисту доступу до привілейованих сторінок пам'яті.
  • У емуляторі архітектури MIPS додано новий тип емульованих машин «virt» з підтримкою китайських процесорів Loongson-3.
  • В емуляторі архітектури PowerPC для емульованих машин «powernv» додано підтримку зовнішніх BMC-контролерів. p align="justify"> Для емульованих машин pseries забезпечено інформування про збої при спробі гарячого вилучення пам'яті та CPU.
  • Додано підтримку емуляції процесорів Qualcomm Hexagon c 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. Перша проблема дозволяє отримати доступ до хост-оточення з гостьової системи через створення привілейованим користувачем у гостьовій системі спеціального файлу пристроїв у каталозі, що спільно використовується з хост-оточенням. Друга проблема викликана помилкою при обробці розширених атрибутів у опції 'xattrmap' і може призвести до ігнорування скидання прав на запис та підвищення привілеїв усередині гостьової системи.

Джерело: opennet.ru

Додати коментар або відгук