KVM (Kernel-based Virtual Machine) est le moteur de virtualisation du noyau Linux : il utilise la virtualisation matérielle pour exécuter efficacement les CPU invités tandis qu'un Virtual Machine Monitor en espace utilisateur émule les périphériques. Cette séparation définit la surface d'attaque. Le module noyau KVM expose une interface (les ioctls /dev/kvm et l'accélération en noyau des instructions, de la MMU et de certains périphériques) qui est elle-même une surface d'évasion et d'élévation de privilèges. Les moniteurs, QEMU, les moniteurs microVM Firecracker et Cloud Hypervisor, fournissent les modèles de périphériques par lesquels un invité s'évade. Et les produits bâtis sur KVM, plateformes basées sur QEMU, Proxmox VE et Nutanix AHV, l'enveloppent chacun d'un plan de gestion qui constitue sa propre cible.
# host: KVM in use and which monitor
ls -l /dev/kvm; lsmod | grep kvm
ps -ef | grep -E 'qemu|firecracker|cloud-hypervisor' | grep -v grep
Sous-thèmes#
- QEMU : l'émulateur de périphériques dominant derrière KVM.
- Module noyau : l'interface noyau KVM et la virtualisation imbriquée.
- Moniteurs microVM : Firecracker et Cloud Hypervisor.
- Proxmox VE : la plateforme de virtualisation basée sur KVM.
- Nutanix AHV : l'hyperviseur hyperconvergé basé sur KVM.