Xen est un hyperviseur de type 1 : un hyperviseur mince tourne sur le matériel, et un domaine de contrôle privilégié (dom0) héberge la toolstack et, pour la plupart des configurations, les moitiés backend des périphériques paravirtuels des invités. Les invités (domU) atteignent les fonctionnalités de l'hôte via des hypercalls vers l'hyperviseur et via le modèle de pilote paravirtuel scindé, où un frontend dans l'invité dialogue avec un backend dans dom0 (ou un domaine pilote) en utilisant la mémoire partagée via les grant tables et les notifications via les event channels. La surface d'évasion est donc l'interface des hypercalls, la machinerie des grant tables et des event channels, et les pilotes backend, plus le vol habituel de disque d'invité et la toolstack de gestion.
# in a Xen guest
dmesg | grep -i xen; ls /sys/bus/xen* 2>/dev/null
cat /sys/hypervisor/type 2>/dev/null # "xen"
# in dom0: the toolstack and domains
xl list 2>/dev/null
Sous-thèmes#
- Évasion invité-vers-hôte : hypercalls, grant tables et event channels, et pilotes backend.
- Accès à l'hôte et shell : exécution dans dom0.
- Plan de gestion : la toolstack Xen et XAPI.
- Vol de disque et de snapshot : s'emparer des disques virtuels des invités.
- Exploits d'évasion connus : les bugs récurrents d'hypercall et de backend.