Container Escape: Escape to Host (T1611)

L'Escape to Host rappresenta una delle tecniche più critiche nel panorama della sicurezza dei container e degli ambienti virtualizzati. Gli attaccanti sfruttano vulnerabilità o configurazioni errate per evadere dall'isolamento del container e ottenere accesso diretto al sistema host sottostante.

Questa tecnica si manifesta durante la fase di Privilege Escalation (TA0004) della kill chain, permettendo agli avversari di elevare i propri privilegi dal livello container a quello dell'host. L'impatto può essere devastante: accesso completo all'infrastruttura, compromissione di altri container, installazione di backdoor persistenti sul sistema principale.

TeamTNT è il gruppo APT principale che ha dimostrato capacità avanzate in questo ambito, mentre tool come Hildegard, Siloscape e Doki hanno implementato diverse metodologie di escape. Le statistiche mostrano 5 mitigazioni documentate e 4 software malevoli specializzati in questa tecnica.

Per testare la sicurezza dei tuoi container, inizia verificando la presenza di mount pericolosi. Il comando docker inspect [container_id] | grep -A 10 Mounts rivela rapidamente se il filesystem host è esposto. Un container privilegiato rappresenta la via più diretta per l'escape.

Crea un container di test con accesso privilegiato usando: docker run -it --privileged --pid=host ubuntu:latest /bin/bash

Una volta dentro, puoi accedere direttamente ai processi host tramite /proc/1/root. Questo percorso bypassa completamente l'isolamento del container. Per un approccio più sofisticato, sfrutta il socket Docker montato:

docker run -it -v /var/run/docker.sock:/var/run/docker.sock ubuntu:latest

All'interno di questo container, installa il client Docker e potrai controllare l'intero daemon host. Il comando docker run -it -v /:/host ubuntu:latest chroot /host ti darà accesso root completo al sistema.

Su sistemi Windows, la tecnica di Siloscape utilizza link simbolici globali. Puoi replicarla creando un link che punta al disco C: dell'host attraverso la chiamata a NtSetInformationSymbolicLink. Questo richiede privilegi elevati nel container ma permette accesso diretto al filesystem Windows.

Per ambienti Kubernetes, Peirates dimostra come sfruttare hostPath mal configurati. Se un pod monta /, hai accesso completo. Verifica con: kubectl get pods -o json | jq '.items[].spec.volumes'

Gli escape tramite syscall rappresentano tecniche avanzate. Il comando unshare -m -r /bin/bash può creare un nuovo namespace con privilegi root. Combina questo con nsenter -t 1 -m -u -n -i sh per entrare nel namespace del processo init dell'host.

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

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