QEMU 10.2 ist schneller unter I/O-Last und dank neuer Richtlinie "sicherer"
QEMU 10.2 ĂĽberarbeitet Sicherheitsrichtlinien, modernisiert das Krypto-Subsystem und beschleunigt asynchrones I/O unter Linux.
- Michael Plura
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.
Nicht mehr alle Security-Bugs sind Security-Bugs
Gleich der erste Hinweis im Changelog zu QEMU 10.2, 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" 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.
Viel Neues bei ARM, RISC-V und PowerPC, weniger fĂĽr LoongArch, s390x und x86
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.
Videos by heise
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.
Neu fĂĽr HPPA-Nostalgiker: Emulation der HP 715/64-Workstation
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.
Modernisierung des kryptografischen Subsystems
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.
Mehr Geschwindigkeit unter hoher I/O-Last durch io_uring(7)
Die Entwickler haben bei QEMU 10.2 den Main-Loop auf io_uring(7) 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 werfen, die in absehbarer Zeit entfernt werden (depreciated).
Ab sofort verfĂĽgbar
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 heruntergeladen werden. Sämtliche Änderungen und mögliche Inkompatibilitäten des QEMU 10.2-Release sind im Changelog dokumentiert.
(swi)