Skip to main content
  1. Concetti/

Hypervisor - Type 1 vs Type 2, VM Escape e Container

·5 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cos'e'
#

Un hypervisor e' il software (o firmware) che crea e gestisce le macchine virtuali (VM), permettendo a piu' sistemi operativi di girare sullo stesso hardware fisico in modo isolato. La differenza tra Type 1 e Type 2 e' dove si posiziona nell'architettura: direttamente sull'hardware (Type 1) o sopra un OS host (Type 2). Questo impatta performance, sicurezza e uso tipico.

hypervisor-architecture-diagram.webp

Astrae l'hardware fisico e permette a piu' sistemi operativi (guest) di girare contemporaneamente in isolamento, allocando CPU, RAM e storage virtualmente tra le VM.

TL;DR
#

  1. Type 1 (bare metal) = hypervisor gira direttamente sull'hardware, nessun OS host in mezzo. Piu' performante e sicuro. Usato in cloud e datacenter enterprise (AWS, Azure, VMware ESXi).
  2. Type 2 (hosted) = hypervisor gira come applicazione sopra un OS host (macOS, Windows, Linux). Meno performante, piu' semplice da usare. Ideale per lab e sviluppo (VirtualBox, UTM).
  3. VM Escape = vulnerabilita' che permette a codice nella VM guest di uscire dal confine dell'hypervisor e compromettere l'host. Il rischio peggiore nella virtualizzazione: un solo guest compromesso puo' dare controllo su tutti.
  4. VM Sprawl = proliferazione silenziosa di VM non gestite e non patchate. Non e' un attacco, e' un problema di governance che crea superficie d'attacco invisibile.
  5. Container vs VM: container condividono il kernel host (piu' leggeri, isolamento minore). VM hanno kernel separato (piu' pesanti, isolamento hardware completo). Container escape e' statisticamente piu' probabile di VM escape.

Hypervisor Type 1 vs Type 2
#

La distinzione tra Type 1 e Type 2 e' architetturale: dove si inserisce il layer di virtualizzazione nello stack hardware-software.

virtualization-overview-hypervisor-guest.webp

CaratteristicaType 1 (Bare Metal)Type 2 (Hosted)
Posizione nello stackDirettamente sull'hardwareSopra OS host
PerformanceMassimaRidotta
SicurezzaMigliore (meno superficie)Maggiore superficie d'attacco
InstallazioneComplessa, richiede hardware dedicatoSemplice, come qualsiasi app
Uso tipicoDatacenter, cloud, produzioneLab, sviluppo, desktop
EsempiESXi, Hyper-V, KVM, XenVirtualBox, VMware Workstation, UTM

Dev parallel: Barno usa UTM su Mac con Ubuntu Server e Kali Linux. UTM usa QEMU con HVF (Hypervisor.framework di macOS) come backend, il che lo rende un Type 2: gira sopra macOS come qualsiasi altra applicazione. I cloud provider (AWS, Azure, GCP) usano Type 1: KVM (Linux kernel-based) o Hyper-V bare metal. Ogni istanza EC2 e' una VM Type 1 guest su un host fisico AWS che non vedi mai. Quando fai ssh ec2-user@ip, ti connetti a una VM Type 1 che condivide l'hardware fisico con decine di altri clienti AWS, completamente isolata.


VM Escape
#

La VM Escape e' un attacco in cui codice malevolo eseguito all'interno di una VM guest riesce a uscire dal confine dell'hypervisor e accedere al sistema host. E' considerato uno degli attacchi piu' gravi in ambienti virtualizzati perche' l'hypervisor gira con privilegi equivalenti a quelli di amministratore sull'host fisico: un VM escape riuscito da' controllo illimitato su host e su tutte le VM guest.

vm-escape-attack-hypervisor.webp

Caso reale - Pwn2Own 2017: tre vulnerabilita' concatenate da vendor diversi. Prima: bug nel motore JavaScript di Microsoft Edge per accedere alla sandbox del browser. Seconda: exploit del kernel Windows 10 per escalare a controllo completo del guest. Terza: bug nella simulazione hardware VMware per saltare all'hypervisor. Nessuna delle tre singolarmente e' sufficiente, ma concatenate danno VM escape completo. VMware ha rilasciato patch prima che l'exploit fosse usato in produzione.

Important

VM Escape e' un attacco attivo, non un problema di governance. La difesa principale e' tenere l'hypervisor aggiornato con le patch piu' recenti. Gibson: "Keeping systems up to date with current patches is the best protection from VM escape attacks."


VM Sprawl
#

Il VM sprawl e' un problema di governance, non un attacco. Quando non esiste un processo formale per creare e gestire VM, chiunque ne puo' creare una, usarla e dimenticarla accesa. Queste VM orfane non vengono aggiunte ai sistemi di patch management, non vengono monitorate, non vengono aggiornate: diventano superfici d'attacco non visibili e non gestite.

Dev parallel: in Azure e AWS le VM sprawl detection rientra nelle responsabilita' di chi gestisce l'infrastruttura cloud. Un Azure Policy che blocca la creazione di VM senza tag obbligatori (owner, environment, expiry) o un AWS Config Rule che segnala istanze EC2 non taggate sono i controlli tecnici corrispondenti. Microsoft Sentinel puo' avere alert su "VM attiva da piu' di 30 giorni senza patch documentata" per gestire automaticamente il problema.


Container vs VM
#

Container e VM sono spesso confrontati come alternativi, ma virtualizzano layer diversi dello stack. La VM astrae l'hardware fisico: ogni VM ha il proprio kernel, il proprio OS, e l'isolamento e' a livello hardware (l'hypervisor media). Il container astrae l'OS: ogni container condivide il kernel dell'host, ma ha il proprio filesystem isolato e i propri namespace. Questo li rende molto piu' leggeri e veloci, ma con isolamento inferiore.

ConfrontoVMContainer
VirtualizzaHardwareOS (namespace + cgroups)
KernelProprio per ogni VMCondiviso con l'host
IsolamentoForte - VM escape e' difficileBuono ma meno completo
AvvioMinutiMillisecondi
DimensioneGBMB
Vincolo OSNoSi, stesso OS dell'host
Caso d'usoAmbienti separati, complianceMicroservizi, CI/CD

CVE-2019-5736 (runc container escape): vulnerabilita' critica in runc, il runtime container usato da Docker e Kubernetes. Un container malevolo poteva sovrascrivere il binario runc sull'host durante l'esecuzione, ottenendo accesso root all'host fisico. L'exploit sfruttava il fatto che il kernel e' condiviso: un attacco al layer OS colpisce sia il container che l'host.

Dev parallel: Docker container su Linux condividono il kernel host. Se c'e' una vulnerabilita' nel kernel Linux (es. privilege escalation), tutti i container sull'host sono potenzialmente esposti indipendentemente dall'isolamento dei namespace. Una VM avrebbe un kernel separato: la stessa vulnerabilita' nel kernel guest non tocca l'hypervisor. Per questo in ambienti ad alta sicurezza (banking, difesa, PCI-DSS) si preferisce la VM al container per workload critici: il costo in performance e' accettabile rispetto al livello di isolamento garantito.


Collegato a
#

Related