Выявлена уязвимость, позволяющая выйти за пределы контейнеров Docker

В cистеме управления контейнерной виртуализацией Docker выявлена уязвимость, позволяющая выйти за пределы изолированного контейнера. Проблема устранена в релизе Docker 1.0, но присутствует в выпусках до 0.11 включительно. Для проверки наличия проблемы подготовлен прототип эксплоита, позволяющий из контейнера прочитать любой файл хост-системы. Кроме Docker проблеме могут быть подвержены и другие системы контейнерной виртуализации, использующие инструменты, подобные LXC.

Техника эксполуатации основана на обращении в внешним файлам через прямой доступ к inode, которые остаются видимыми в контексте всей файловой системы после прикрепления части данной ФС через «mount —bind». Полагая, что inode 2, как правило, связан с корнем, осуществляется последовательный перебор всех inode, пока не найдётся inode, ссылающийся на нужный файл. Проблеме также подвержены системы, в которых используются снапшоты, субразделы, chroot и специализированные ioctl для манипуляций с ФС (доступны в XFS).

Для совершения атаки необходимо иметь возможность запуска операций внутри контейнера с правами root. В Docker 1.0 проблема не проявляется благодаря удалению привилегии CAP_DAC_READ_SEARCH. При этом отмечается, что теоретически для организации похожей атаки может использоваться привилегия CAP_MKNOD, которая пока оставлена в Docker 1.0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.