В недавнем релизе Linux 4.4 устранена уязвимость (CVE-2015-8660), позволяющая поднять привилегии до уровня администратора. Уязвимость связана с инфраструктурой OverlayFS при использовании user namespaces.
User namespaces (пространство имён пользователей) позволяет использовать в рамках изолированного окружения любой идентификатор пользователя, в том числе и root (0). Это упрощает создание виртуальных окружений и контейнеров, а также позволяет сохранить один и тот же id пользователя в разных контейнерах, при этом производится абстракция от реальных системных id. Также разрешается проблема монтирования файловых систем от не-администратора.
Механизм OverlayFS позволяет создать многослойную структуру, в которой верхний уровень ФС будет перекрывать нижний. Таким образом можно над read-only файловой системой примонтировать другой раздел, при этом приоритет у дублирующихся файлов отдаётся верхним уровням. Для пользователя OverlayFS прозрачна и выглядит так, как если бы это была цельная файловая система.
Возможно создать виртуального пользователя с правами root в изолированном окружении для него и примонтировать внешнюю файловую систему. Ошибка в коде OverlayFS заключалась в том, что при изменении привилегий файла на оверлейной файловой системе виртуальным администратором становилось возможным создать файл с suid-битом и получить доступ к нему от настоящего пользователя извне изолированного окружения. Таким образом можно повысить привилегии до уровня root.
Ошибка была актуальна начиная с ядра 3.18 до 4.4. Часть дистрибутивов уже приняла патчи с исправлениями, и пользователям рекомендуется обновиться.
Также стоит заметить, что подобные ошибки могут возникнуть и при работе некоторых других модулей. Проверить, включена ли у вас эта возможность, можно командой ls /proc/self/ns|grep user
(если отключена, вывод будет пустым). Отключить можно опцией при сборке ядра (CONFIG_USER_NS=n), но стоит заметить, что это может привести к недоступности некоторых функций.
Доступен пример эксплойта.
>>> Подробности