Издаване на емулатора QEMU 6.0

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

Проектът първоначално е създаден от Fabrice Bellard, за да позволи изпълнимите файлове на Linux, създадени за платформата x86, да работят на различни от x86 архитектури. През годините на разработка е добавена пълна поддръжка за емулация за 14 хардуерни архитектури, броят на емулираните хардуерни устройства е надхвърлил 400. В подготовката за версия 6.0 са направени повече от 3300 промени от 268 разработчици.

Ключови подобрения, добавени в QEMU 6.0:

  • Емулаторът на NVMe контролера е приведен в съответствие със спецификацията NVMe 1.4 и е оборудван с експериментална поддръжка за зонирани пространства от имена, многопътен I/O и криптиране на данни от край до край на устройството.
  • Добавени са експериментални опции „-machine x-remote“ и „-device x-pci-proxy-dev“ за преместване на емулация на устройство към външни процеси. В този режим в момента се поддържа само емулация на lsi53c895 SCSI адаптера.
  • Добавена е експериментална поддръжка за създаване на моментни снимки на съдържанието на RAM.
  • Добавен е модул 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, Разширение за маркиране на паметта), което ви позволява да обвързвате тагове към всяка операция за разпределяне на памет и да организирате проверка на показалец, когато достъп до паметта, която трябва да бъде свързана с правилния етикет. Разширението може да се използва за блокиране на използването на уязвимости, причинени от достъп до вече освободени блокове памет, препълване на буфер, достъп преди инициализация и използване извън текущия контекст.
  • Емулаторът на 68k архитектура добави поддръжка за нов тип емулирана машина „virt“, която използва virtio устройства за оптимизиране на производителността.
  • Емулаторът x86 добавя възможност за използване на технологията AMD SEV-ES (Secure Encrypted Virtualization) за криптиране на процесорни регистри, използвани в системата за гости, което прави съдържанието на регистрите недостъпно за хост средата, освен ако системата за гости изрично не предостави достъп до тях.
  • Класическият генератор на кодове TCG (Tiny Code Generator), когато емулира x86 системи, реализира поддръжка за механизма PKS (Protection Keys Supervisor), който може да се използва за защита на достъпа до страници с привилегирована памет.
  • Нов тип емулирани машини „virt“ е добавен към емулатора на MIPS архитектура с поддръжка за китайски процесори Loongson-3.
  • В емулатора на PowerPC архитектурата за емулирани машини „powernv“ е добавена поддръжка за външни BMC контролери. За емулирани серия машини се предоставя известие за грешки при опит за горещо премахване на памет и процесор.
  • Добавена е поддръжка за емулиране на процесори Qualcomm Hexagon с DSP.
  • Класическият генератор на кодове TCG (Tiny Code Generator) поддържа macOS хост среди на системи с новия Apple M1 ARM чип.
  • Емулаторът на архитектурата RISC-V за платки Microchip PolarFire поддържа QSPI NOR flash.
  • Емулаторът Tricore вече поддържа новия модел платка TriBoard, който емулира Infineon TC27x SoC.
  • 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 моментни снимки.
  • Уязвимостите CVE-2020-35517 и CVE-2021-20263 са коригирани във virtiofs. Първият проблем позволява достъп до хост средата от гост системата чрез създаване на специален файл с устройства в гост системата от привилегирован потребител в директория, споделена с хост средата. Вторият проблем е причинен от грешка в обработката на разширените атрибути в опцията „xattrmap“ и може да доведе до игнориране на разрешения за запис и ескалация на привилегии в системата за гости.

Източник: opennet.ru

Добавяне на нов коментар