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