Sortie de l'émulateur QEMU 6.0

La version du projet QEMU 6.0 est présentée. En tant qu'émulateur, QEMU vous permet d'exécuter un programme conçu pour une plate-forme matérielle sur un système avec une architecture complètement différente, par exemple, exécutez une application ARM sur un PC compatible x86. En mode virtualisation dans QEMU, les performances d'exécution de code dans un environnement isolé sont proches d'un système matériel du fait de l'exécution directe des instructions sur le CPU et de l'utilisation de l'hyperviseur Xen ou du module KVM.

Le projet a été créé à l'origine par Fabrice Bellard pour permettre aux exécutables Linux conçus pour la plate-forme x86 de s'exécuter sur des architectures non x86. Au fil des années de développement, une prise en charge complète de l'émulation a été ajoutée pour 14 architectures matérielles, le nombre de périphériques matériels émulés a dépassé 400. En préparation de la version 6.0, plus de 3300 modifications ont été apportées par 268 développeurs.

Améliorations clés ajoutées dans QEMU 6.0 :

  • L'émulateur de contrôleur NVMe est mis en conformité avec la spécification NVMe 1.4 et est équipé d'une prise en charge expérimentale des espaces de noms zonés, des E/S multivoies et du cryptage des données de bout en bout sur le disque.
  • Ajout des options expérimentales « -machine x-remote » et « -device x-pci-proxy-dev » pour déplacer l'émulation de périphérique vers des processus externes. Dans ce mode, seule l'émulation de l'adaptateur SCSI lsi53c895 est actuellement prise en charge.
  • Ajout d'un support expérimental pour la création d'instantanés du contenu de la RAM.
  • Ajout d'un module FUSE pour exporter des périphériques de bloc, vous permettant de monter une tranche de l'état de n'importe quel périphérique de bloc utilisé dans le système invité. L'exportation s'effectue via la commande QMP block-export-add ou via l'option « --export » dans l'utilitaire qemu-storage-daemon.
  • L'émulateur ARM ajoute la prise en charge de l'architecture ARMv8.1-M « Helium » et des processeurs Cortex-M55, ainsi que des instructions étendues ARMv8.4 TTST, SEL2 et DIT. Ajout de la prise en charge des cartes ARM mps3-an524 et mps3-an547 également. Une émulation de périphérique supplémentaire a été implémentée pour les cartes xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx et sabrelite.
  • Pour ARM, dans les modes d'émulation au niveau du système et de l'environnement utilisateur, la prise en charge de l'extension ARMv8.5 MTE (MemTag, Memory Tagging Extension) a été implémentée, ce qui permet de lier des balises à chaque opération d'allocation de mémoire et d'organiser une vérification du pointeur lorsque accéder à la mémoire, qui doit être associée à la bonne balise. L'extension peut être utilisée pour bloquer l'exploitation de vulnérabilités causées par l'accès à des blocs de mémoire déjà libérés, les débordements de tampon, les accès avant initialisation et l'utilisation en dehors du contexte actuel.
  • L'émulateur d'architecture 68k a ajouté la prise en charge d'un nouveau type de machine émulée « virt », qui utilise des périphériques virtio pour optimiser les performances.
  • L'émulateur x86 ajoute la possibilité d'utiliser la technologie AMD SEV-ES (Secure Encrypted Virtualization) pour crypter les registres de processeur utilisés dans le système invité, rendant le contenu des registres inaccessible à l'environnement hôte à moins que le système invité n'y accorde explicitement l'accès.
  • Le générateur de code classique TCG (Tiny Code Generator), lors de l'émulation de systèmes x86, implémente la prise en charge du mécanisme PKS (Protection Keys Supervisor), qui peut être utilisé pour protéger l'accès aux pages mémoire privilégiées.
  • Un nouveau type de machines émulées « virt » a été ajouté à l'émulateur d'architecture MIPS avec prise en charge des processeurs chinois Loongson-3.
  • Dans l'émulateur d'architecture PowerPC pour machines émulées « powernv », la prise en charge des contrôleurs BMC externes a été ajoutée. Pour les machines pseries émulées, une notification des échecs lors de la tentative de suppression à chaud de la mémoire et du processeur est fournie.
  • Ajout de la prise en charge de l'émulation des processeurs Qualcomm Hexagon avec DSP.
  • Le générateur de code classique TCG (Tiny Code Generator) prend en charge les environnements hôtes macOS sur les systèmes dotés de la nouvelle puce Apple M1 ARM.
  • L'émulateur d'architecture RISC-V pour les cartes Microchip PolarFire prend en charge le flash QSPI NOR.
  • L'émulateur Tricore prend désormais en charge le nouveau modèle de carte TriBoard, qui émule le SoC Infineon TC27x.
  • L'émulateur ACPI offre la possibilité d'attribuer des noms aux cartes réseau dans les systèmes invités, indépendamment de l'ordre dans lequel elles sont connectées au bus PCI.
  • virtiofs a ajouté la prise en charge de l'option FUSE_KILLPRIV_V2 pour améliorer les performances des invités.
  • VNC a ajouté la prise en charge de la transparence du curseur et la prise en charge de la mise à l'échelle de la résolution de l'écran dans virtio-vga, en fonction de la taille de la fenêtre.
  • QMP (QEMU Machine Protocol) a ajouté la prise en charge de l'accès parallèle asynchrone lors de l'exécution de tâches de sauvegarde.
  • L'émulateur USB a ajouté la possibilité d'enregistrer le trafic généré lors de l'utilisation de périphériques USB dans un fichier pcap distinct pour une inspection ultérieure dans Wireshark.
  • Ajout de nouvelles commandes QMP load-snapshot, save-snapshot et delete-snapshot pour gérer les instantanés qcow2.
  • Les vulnérabilités CVE-2020-35517 et CVE-2021-20263 ont été corrigées dans virtiofs. Le premier problème permet d'accéder à l'environnement hôte depuis le système invité en créant un fichier de périphériques spécial dans le système invité par un utilisateur privilégié dans un répertoire partagé avec l'environnement hôte. Le deuxième problème est dû à un bug dans la gestion des attributs étendus dans l'option 'xattrmap' et peut entraîner l'ignorance des autorisations d'écriture et une élévation des privilèges au sein du système invité.

Source: opennet.ru

Ajouter un commentaire