Rilascio dell'emulatore QEMU 6.0

Viene presentato il rilascio del progetto QEMU 6.0. Come emulatore, QEMU consente di eseguire un programma creato per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio eseguire un'applicazione ARM su un PC compatibile con x86. Nella modalità di virtualizzazione in QEMU, le prestazioni dell'esecuzione del codice in un ambiente isolato sono simili a quelle di un sistema hardware a causa dell'esecuzione diretta delle istruzioni sulla CPU e dell'uso dell'hypervisor Xen o del modulo KVM.

Il progetto è stato originariamente creato da Fabrice Bellard per consentire agli eseguibili Linux creati per la piattaforma x86 di funzionare su architetture non x86. Nel corso degli anni di sviluppo, è stato aggiunto il supporto completo dell'emulazione per 14 architetture hardware, il numero di dispositivi hardware emulati ha superato i 400. In preparazione alla versione 6.0, sono state apportate più di 3300 modifiche da 268 sviluppatori.

Principali miglioramenti aggiunti in QEMU 6.0:

  • L'emulatore del controller NVMe è conforme alla specifica NVMe 1.4 ed è dotato di supporto sperimentale per spazi dei nomi suddivisi in zone, I/O multipath e crittografia dei dati end-to-end sull'unità.
  • Aggiunte le opzioni sperimentali “-machine x-remote” e “-device x-pci-proxy-dev” per spostare l'emulazione del dispositivo su processi esterni. In questa modalità è attualmente supportata solo l'emulazione dell'adattatore SCSI lsi53c895.
  • Aggiunto supporto sperimentale per la creazione di istantanee del contenuto della RAM.
  • Aggiunto un modulo FUSE per l'esportazione dei dispositivi a blocchi, che consente di montare una porzione dello stato di qualsiasi dispositivo a blocchi utilizzato nel sistema ospite. L'esportazione viene eseguita tramite il comando QMP block-export-add o tramite l'opzione “--export” nell'utilità qemu-storage-daemon.
  • L'emulatore ARM aggiunge il supporto per l'architettura ARMv8.1-M "Helium" e i processori Cortex-M55, nonché le istruzioni estese ARMv8.4 TTST, SEL2 e DIT. Aggiunto supporto anche per le schede ARM mps3-an524 e mps3-an547. È stata implementata un'ulteriore emulazione del dispositivo per le schede xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx e sabrelite.
  • Per ARM, nelle modalità di emulazione a livello di sistema e di ambiente utente, è stato implementato il supporto per l'estensione ARMv8.5 MTE (MemTag, Memory Tagging Extension), che consente di associare tag a ciascuna operazione di allocazione della memoria e organizzare un controllo del puntatore quando accesso alla memoria, che deve essere associato al tag corretto. L'estensione può essere utilizzata per bloccare lo sfruttamento di vulnerabilità causate dall'accesso a blocchi di memoria già liberati, buffer overflow, accessi prima dell'inizializzazione e utilizzo al di fuori del contesto corrente.
  • L'emulatore dell'architettura 68k ha aggiunto il supporto per un nuovo tipo di macchina emulata “virt”, che utilizza dispositivi virtio per ottimizzare le prestazioni.
  • L'emulatore x86 aggiunge la possibilità di utilizzare la tecnologia AMD SEV-ES (Secure Encrypted Virtualization) per crittografare i registri del processore utilizzati nel sistema ospite, rendendo il contenuto dei registri inaccessibile all'ambiente host a meno che il sistema ospite non ne conceda esplicitamente l'accesso.
  • Il classico generatore di codice TCG (Tiny Code Generator), emulando sistemi x86, implementa il supporto al meccanismo PKS (Protection Keys Supervisor), che può essere utilizzato per proteggere l'accesso alle pagine di memoria privilegiate.
  • Un nuovo tipo di macchine emulate “virt” è stato aggiunto all'emulatore dell'architettura MIPS con supporto per i processori cinesi Loongson-3.
  • Nell'emulatore dell'architettura PowerPC per le macchine emulate “powernv”, è stato aggiunto il supporto per controller BMC esterni. Per le macchine serie p emulate, viene fornita la notifica degli errori durante il tentativo di rimozione a caldo della memoria e della CPU.
  • Aggiunto il supporto per l'emulazione dei processori Qualcomm Hexagon con DSP.
  • Il classico generatore di codice TCG (Tiny Code Generator) supporta gli ambienti host macOS su sistemi con il nuovo chip Apple M1 ARM.
  • L'emulatore di architettura RISC-V per le schede Microchip PolarFire supporta il flash QSPI NOR.
  • L'emulatore Tricore ora supporta il nuovo modello di scheda TriBoard, che emula il SoC Infineon TC27x.
  • L'emulatore ACPI offre la possibilità di assegnare nomi agli adattatori di rete nei sistemi guest indipendentemente dall'ordine in cui sono collegati al bus PCI.
  • virtiofs ha aggiunto il supporto per l'opzione FUSE_KILLPRIV_V2 per migliorare le prestazioni degli ospiti.
  • VNC ha aggiunto il supporto per la trasparenza del cursore e il supporto per il ridimensionamento della risoluzione dello schermo in virtio-vga, in base alla dimensione della finestra.
  • QMP (QEMU Machine Protocol) ha aggiunto il supporto per l'accesso parallelo asincrono durante l'esecuzione di attività di backup.
  • L'emulatore USB ha aggiunto la possibilità di salvare il traffico generato quando si lavora con dispositivi USB in un file pcap separato per la successiva ispezione in Wireshark.
  • Aggiunti nuovi comandi QMP load-snapshot, save-snapshot e delete-snapshot per gestire le istantanee qcow2.
  • Le vulnerabilità CVE-2020-35517 e CVE-2021-20263 sono state corrette in virtiofs. Il primo problema consente l'accesso all'ambiente host dal sistema ospite creando uno speciale file di dispositivi nel sistema ospite da parte di un utente privilegiato in una directory condivisa con l'ambiente host. Il secondo problema è causato da un bug nella gestione degli attributi estesi nell'opzione 'xattrmap' e può causare l'ignoramento dei permessi di scrittura e l'escalation dei privilegi all'interno del sistema guest.

Fonte: opennet.ru

Aggiungi un commento