Fuga dal Container: Escape to Host (T1611)

Escape to Host descrive l'insieme di tecniche attraverso cui un avversario rompe l'isolamento di un container o di un ambiente virtualizzato per ottenere accesso diretto all'host sottostante. La tecnica rientra nella tattica Privilege Escalation (TA0004), perché il passaggio dal contesto confinato del container al sistema operativo host rappresenta un salto di privilegi sostanziale: si passa da un ambiente con risorse limitate e namespace separati al controllo completo della macchina fisica o virtuale.

I vettori di escape sono molteplici. Un container configurato per montare il filesystem dell'host tramite bind mount offre accesso diretto alla radice del sistema. Un container privilegiato può caricare moduli kernel o eseguire comandi arbitrari sull'host. Syscall come unshare e keyctl possono essere abusate per scalare privilegi e sottrarre segreti. Anche il socket di gestione Docker, se montato all'interno del container, diventa una porta aperta verso l'host. In ambienti VMware ESXi, lo scenario si estende alle virtual machine: una vulnerabilità nell'hypervisor consente all'attaccante di evadere dalla VM verso il livello hypervisor stesso.

Il censimento dei dati associati a questa tecnica include 1 gruppo APT, 4 software documentati, 5 mitigazioni specifiche e 4 analytics di detection che coprono container Linux, Windows ed ESXi. L'impatto di un escape riuscito è devastante: l'attaccante può stabilire persistenza sull'host, muoversi lateralmente, accedere ad altri container e configurare canali C2 a livello di sistema operativo.

La simulazione di un container escape in laboratorio richiede un ambiente Docker o Kubernetes dedicato e isolato. Il primo scenario da replicare è il più classico: il bind mount del filesystem root dell'host.

Avvia un container con il filesystem dell'host montato in lettura-scrittura:

docker run -it -v /:/hostfs ubuntu /bin/bash

Da dentro il container, l'intero filesystem host è accessibile sotto /hostfs. Puoi verificare l'accesso con:

ls /hostfs/etc/shadow

Per simulare persistenza, scrivi un cron job direttamente sull'host:

echo ' * * * * root /tmp/payload.sh' > /hostfs/etc/cron.d/backdoor*

Questo replica esattamente il pattern usato da Doki, il cui container veniva configurato per effettuare il bind della directory root dell'host.

Il secondo scenario riguarda i container privilegiati. Lancia un container con flag --privileged:

docker run -it --privileged ubuntu /bin/bash

Da qui puoi montare il disco dell'host direttamente:

mkdir /mnt/host && mount /dev/sda1 /mnt/host

Oppure caricare un modulo kernel malevolo con insmod, dimostrando il livello di controllo che un container privilegiato offre sull'host.

Il terzo scenario coinvolge il Docker socket. Se il socket è montato nel container:

docker run -it -v /var/run/docker.sock:/var/run/docker.sock ubuntu /bin/bash

Dall'interno puoi creare un nuovo container privilegiato che monta il filesystem host, concatenando l'escape. Strumenti come Peirates (open source) automatizzano questo pattern in ambienti Kubernetes, ottenendo una reverse shell sull'host tramite hostPath mount. BOtB — Break out the Box (open source) — è il tool usato da Hildegard per automatizzare diverse tecniche di escape, incluso l'abuso di capability e l'accesso al metadata service.

Per ambienti Kubernetes, il tool CDK (open source) offre un kit completo per l'enumerazione delle capability del container e il tentativo automatico di escape tramite vari vettori. Un altro strumento utile è deepce (open source), che esegue l'enumerazione dell'ambiente container e identifica possibili percorsi di fuga.

Su Windows, la tecnica di Siloscape è più sofisticata: sfrutta link simbolici globali tramite la chiamata NtSetInformationSymbolicLink per mappare il disco C: dell'host nel container Windows. La simulazione richiede un ambiente Windows Server con container Windows in modalità process isolation.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.