zurück zum Artikel

QEMU 10.2 ist schneller unter I/O-Last und dank neuer Richtlinie "sicherer"

Michael Plura

QEMU 10.2 ĂŒberarbeitet Sicherheitsrichtlinien, modernisiert das Krypto-Subsystem und beschleunigt asynchrones I/O unter Linux.

Quasi als Weihnachtsgeschenk hat das Entwickler-Team den fĂŒr viele Plattformen erhĂ€ltlichen Quick-EMUlator (QEMU) in Version 10.2 veröffentlicht. 188 Entwickler haben dazu ĂŒber 2300 Neuerungen und Verbesserungen in das OpenSource-Projekt einfließen lassen.

Gleich der erste Hinweis im Changelog zu QEMU 10.2 [1], der als "Klarstellung der Sicherheitsrichtlinie von QEMU" bezeichnet wird, wirft Fragen auf. ZunĂ€chst einmal: In Version 10.2 des QEMU-Projekts wurde die Security Policy explizit klarer definiert, insbesondere was der Begriff "Security Bugs" im Kontext von QEMU bedeutet. Von nun an gelten Fehler nur noch dann als echte Security-Bugs, wenn sie in klar definierten "Virtualization Use Cases" auftreten. Dazu zĂ€hlen Szenarien mit Hardware-Beschleunigern unter WHPX (Windows), KVM (Linux), HVF (macOS) oder NVMM (NetBSD) und vor allem nur bestimmte Maschinen-Typen, die in den "Security Requirements [2]" explizit aufgelistet werden: aarch64 (virt), i386 und x86_64 (microvm, xenfv, xenpv, xenpvh, pc, q35), s390x (s390-ccw-virtio), loongarch64 (virt), ppc64 (pseries) sowie riscv32 und riscv64 (virt). Das bedeutet, dass sicherheitskritische Fehler in allen anderen Emulations-Szenarien im QEMU-Kontext nicht mehr grundsĂ€tzlich als sicherheitstechnische Fehler angesehen werden (mĂŒssen).

Damit fallen viele Anwendungsbereiche aus der Sicherheitsrichtlinie heraus, beispielsweise die rein software-basierte "Full System Emulation" mit dem Tiny Code Generator (TCG), bei dem Gast-CPU-Instruktionen dynamisch in Host-Code ĂŒbersetzt werden. Das betrifft alle AnwendungsfĂ€lle, in denen eine beliebige Gast-Architektur auf einem beliebigem Host ausgefĂŒhrt wird. Zum Beispiel wenn ein ARM-Gast auf einem x86-Host fĂŒr Cross-Architektur-Entwicklung, Firmware-Tests, Embedded-Simulation oder Debugging ausgefĂŒhrt wird. Und auch die "User-Mode Emulation" (qemu-user), die nur CPU- und Systemaufrufe, aber kein komplettes System emuliert, dĂŒrfte damit aus der neuen Sicherheitsrichtlinie herausfallen. Das betrifft unter anderem Cross-Builds und CI sowie vermutlich auch Container-Builds mit "multi-arch-Docker".

Schwierig wird die Zuordnung, wenn es um hybride QEMU-Modi geht. Das ist der Fall, wenn grundsĂ€tzlich Hardware-Beschleunigung eingesetzt wird, dazu aber bestimmte GerĂ€te oder Funktionen per TCG emuliert werden (legacy-devices). Der Sicherheitsstatus ist dabei vom konkreten Setup abhĂ€ngig. Als QEMU-Anwender muss man dann herausfinden, ob das Szenario als unterstĂŒtzter Virtualization Use Case gilt - oder nicht. Das dĂŒrfte spannend werden.

QEMU erweitert die ARM-Emulation um zahlreiche neue CPU-Features, entfernt die veraltete pxa-CPU-Familie und verbessert Debugging sowie GerĂ€teunterstĂŒtzung (u. a. SME/SME2 in gdbstub, mehrere SMMUv3-GerĂ€te, neue/erweiterte SoC-Komponenten bei aspeed und xlnx). ZusĂ€tzlich gibt es ein neues Board-Modell (amd-versal2-virt) und genauere Modellierung von Interrupt- und PCIe-Hardware in bestehenden ARM-Plattformen.

Die RISC-V-UnterstĂŒtzung in QEMU wurde durch Korrekturen an ISA-Details und Erweiterungen verbessert, darunter an CFI, VLEN-Regeln, PMP-GranularitĂ€t sowie mehreren Instruktions-, Timer- und IOMMU-Details. ZusĂ€tzlich gibt es Aktualisierungen und Bugfixes bei Maschinen- und Firmware-Integration (u. a. OpenSBI v1.7, Device-Tree-Korrekturen, bessere Netzwerk- und UART-StabilitĂ€t) sowie Performance- und Speicherverbesserungen.

Die PowerPC-UnterstĂŒtzung in QEMU wurde durch neue CPU- und MaschinenunterstĂŒtzung (PowerNV11, PPE42), Firmware-Updates und FADUMP der pSeries ergĂ€nzt, wĂ€hrend veraltete Plattformen und "unbrauchbare e200-CPUs" entfernt sowie zahlreiche Bugfixes, AufrĂ€umarbeiten und Verbesserungen an Fehlerbehandlung und Emulation vorgenommen wurden.

Bei der LoongArch-Emulation unterstĂŒtzt QEMU 10.2 nun auch MSGINT (IRQ-Chip) und den "HW Page Table Walk". Verbesserungen beim IRQ-Handling der s390x-Architektur sollen die virtio-pci-Performance erhöhen. Bei x86 benutzt der HPET-Emulator (High Precision Event Timer) nicht mehr den "Big QEMU Lock" (BQL), sondern ist jetzt feiner und nebenlĂ€ufiger implementiert.

Mit QEMU 10.2 lĂ€sst sich ein weiterer Klassiker der Computergeschichte virtuell reanimieren: Die HP 9000 715/64 (32 Bit PA-RISC, 64 MHz CPU-Takt, 1 KB on-chip- und 64 KB off-chip-Cache) wurde als Workstation Mitte der 90er Jahre von Hewlett-Packard gegen SGI Indy/Indigo2, Sun SPARCstation, DEC AlphaStation und IBM RS/6000 auf den Markt gebracht. Die unter HP-UX oder NeXTSTEP laufende UNIX-Workstation war fĂŒr damalige VerhĂ€ltnisse recht schnell - und mit rund 10.000 US-Dollar entsprechend teuer. Zur Einordnung: Die SPEC92/int-Leistung einer 715/64 entsprach in etwa der des zeitgleich erschienenen Pentium/90 MHz. Ebenfalls neu ist die Emulation des NCR 53c710 SCSI-Controllers (verwendet in der 715/64) sowie ein dazu passendes aktualisiertes SeaBIOS-hppa-BIOS.

Das Krypto-Subsystem von QEMU wurde mit Version 10.2 modernisiert, indem die Mindestversionen wichtiger Kryptobibliotheken angehoben und neue Funktionen wie das Laden mehrerer X.509-Zertifikats-IdentitĂ€ten zur UnterstĂŒtzung post-quantenkryptografischer ÜbergĂ€nge implementiert wurden. Zudem wurden die TLS-Sicherheit und die ZertifikatsprĂŒfung verbessert, veraltete Mechanismen wie externe Diffie-Hellman-Parameter als "deprecated" gekennzeichnet und mehrere StabilitĂ€ts- und Sicherheitsprobleme behoben. Das Plan-9-Dateisystem 9pfs ermöglicht es QEMU, Host-Verzeichnisse wie Shared Folders direkt im Gast einzubinden. Diese bislang weitgehend auf Linux-Hosts beschrĂ€nkte Funktion steht nun auch auf FreeBSD-Hosts zur VerfĂŒgung.

Die Entwickler haben bei QEMU 10.2 den Main-Loop auf io_uring(7) [3] umgestellt, eine moderne Schnittstelle fĂŒr asynchrone I/O-Operationen unter Linux. Dadurch sollen I/O-VorgĂ€nge effizienter verarbeitet werden und so vor allem unter hoher I/O-Last zu spĂŒrbaren Performance-Verbesserungen fĂŒhren. Wer seinen Workflow auf QEMU 10.2 aktualisiert sollte unbedingt auch einen Blick auf die Liste der Funktionen [4] werfen, die in absehbarer Zeit entfernt werden (depreciated).

WĂ€hrend der grĂ¶ĂŸte Teil des QEMU-Projekts GPL2-lizenziert ist, stehen Teile wie der Tiny Code Generator (TCG) unter der BSD- oder MIT-Lizenz. Als freies OpenSource-Projekt ist QEMU 10.2 kostenlos verfĂŒgbar und kann ab sofort von der Projektseite [5] heruntergeladen werden. SĂ€mtliche Änderungen und mögliche InkompatibilitĂ€ten des QEMU 10.2-Release sind im Changelog [6] dokumentiert.

Siehe auch:

Mehr von iX Magazin Mehr von iX Magazin [8]

(swi [9])


URL dieses Artikels:
https://www.heise.de/-11125706

Links in diesem Artikel:
[1] https://wiki.qemu.org/ChangeLog/10.2
[2] https://qemu-project.gitlab.io/qemu/system/security.html
[3] https://man7.org/linux/man-pages/man7/io_uring.7.html
[4] https://qemu-project.gitlab.io/qemu/about/deprecated.html
[5] https://www.qemu.org/
[6] https://wiki.qemu.org/ChangeLog/10.2
[7] https://www.heise.de/download/product/qemu-30536?wt_mc=intern.red.download.tickermeldung.ho.link.link
[8] https://www.heise.de/ix
[9] mailto:swi@heise.de