Infrastructure
QEMU : Quick Emulator, émulateur et virtualiseur libre créé par Fabrice Bellard en 2003. « Le logiciel qui fabrique, pour chaque machine virtuelle, la carte réseau, le disque et même le lecteur de disquette qu'elle croit posséder », par analogie avec le décorateur de théâtre : la porte en carton suffit au comédien, jusqu'au jour où quelqu'un s'appuie dessus et se retrouve dans les coulisses.
Deux métiers : En émulation pure, QEMU traduit les instructions d'un autre processeur (faire tourner du code ARM sur un PC x86, par exemple). En virtualisation, il s'appuie sur l'accélération matérielle, le plus souvent KVM (Kernel-based Virtual Machine) sous Linux, et se charge surtout d'émuler les périphériques de la machine virtuelle.
Surface d'attaque : Chaque périphérique émulé est du code de l'hôte qui traite des données fournies par l'invité. Une erreur dans ce code, comme celle du contrôleur de disquette révélée en 2015 sous le nom VENOM (CVE-2015-3456, CVE signifiant Common Vulnerabilities and Exposures), peut permettre à une machine virtuelle de corrompre la mémoire du processus QEMU sur l'hôte. Le lecteur de disquette n'avait plus de disquettes depuis longtemps ; il avait encore des failles.
Durcissement : Retirer les périphériques inutiles, préférer les périphériques paravirtualisés (virtio), exécuter chaque processus QEMU sous un compte dédié et confiné (seccomp, SELinux, Security-Enhanced Linux, via libvirt et sVirt) et appliquer rapidement les correctifs de sécurité de la distribution.
Ce qui arrive si on s'en passe
Laisser QEMU avec sa configuration par défaut expose à chaque machine virtuelle une collection de périphériques émulés dont personne ne se sert, mais que l'invité peut solliciter à volonté. Qu'un seul d'entre eux contienne une faille, et un utilisateur administrateur d'une machine virtuelle peut faire planter le processus QEMU, voire tenter d'exécuter du code sur l'hôte, d'où il atteint les autres machines virtuelles et leurs disques. Si le processus QEMU tourne en plus sans confinement, avec des droits larges, l'évasion ne s'arrête pas à la porte de la machine virtuelle voisine.
Explication de la marmotte
QEMU est un logiciel qui permet de faire tourner un ordinateur « virtuel » à l'intérieur d'un vrai ordinateur. Il imite pour lui une carte réseau, un disque dur, un clavier, et même de vieux appareils comme un lecteur de disquette. Toutes ces imitations sont du code qui tourne sur la vraie machine. Si l'un d'eux contient une erreur, l'ordinateur virtuel peut s'en servir pour s'échapper et prendre la main sur la vraie machine.
Où ce terme est utilisé
- Évasion de VM et isolation matérielle des hyperviseurs (5 occurrences)
- Hyperviseur Type 1 ou Type 2 : lequel choisir (1 occurrence)
- Isolation des conteneurs Docker : namespaces, cgroups et évasions (1 occurrence)
