Docker privileged container escape

docker run --privileged --pid=host -it alpine nsenter -t 1 -m -u -i -n -p sh

Escape de um contêiner privilegiado: com --privileged e --pid=host, o nsenter entra nos namespaces do processo 1 do host e fornece uma shell com os privilégios do sistema anfitrião.

Quando você está dentro de um contêiner que foi lançado com --privileged (todas as capabilities, sem seccomp) ou tem acesso ao docker para lançar um você mesmo. --pid=host permite ver os processos do host; nsenter -t 1 entra nos namespaces dele (mount, uts, ipc, net, pid) e deixa você operar como se estivesse no host.

Se o contêiner não for privilegiado e você não tiver CAP_SYS_ADMIN, o nsenter falhará com permission denied. Também não use se o host usar user namespaces (userns-remap no daemon): o UID 0 do contêiner não é o do host.