За последние годы операционная система Ubuntu стала одним из главных объектов внимания в сфере информационной безопасности, особенно в контексте локальных уязвимостей с повышением привилегий. Одним из основных направлений усиления защиты стала работа с пространствами имён пользователя — механизмами, позволяющими изолировать процессы без административных прав. В апреле 2024 года Ubuntu представила масштабное обновление с введением ограничений на создание не привилегированных пространств имён и расширением контроля через AppArmor — систему обязательного контроля доступа, интегрированную в ядро Linux. Целью данного шага было сократить потенциальные векторы атак на подсистемы ядра, такие как netfilter и net/sched, которые традиционно служили благодатной почвой для поиска уязвимостей. Сначала эти меры воспринимались как весьма надёжные, почти непроницаемые.
Казалось, что даже опытные специалисты в области безопасности столкнутся с существенными трудностями при попытках обхода новых ограничений. Тем не менее, исследователи вскоре обнаружили определённые пробелы в реализации, которые позволяли вернуть возможность создания не привилегированных пространств имён. Путь к этому открытию оказался связан с детальным разбором того, как Ubuntu интегрирует AppArmor для контроля действий процессов. Важным моментом стало понимание логики автоматического перехода процессов из профиля unconfined в профиль unprivileged_userns при попытке создания user namespace. Последний существенно ограничивает доступ к ключевым системным возможностям, включая права CAP_SYS_ADMIN, необходимые для создания пространства имён.
Глубокий анализ исходного кода ядра Ubuntu и патчей, представляющих модификации основной версии Linux, позволил выявить, что механизм проверки включает жёстко заданные проверки на использование профиля unconfined. Однако обнаружилось, что если процесс сменит профиль с изначального unconfined на иной профиль, но при этом обладающий режимом unconfined — например, профиль opam, используемый в системе для определённых приложений — то проверка может быть обойдена. Именно это дало ключ к обходу запрета на создание не привилегированных пространств имён. Существенным открытием стало то, что система AppArmor позволяет посредством записи в специальные системные файлы, расположенные в /proc/self/attr, сменить профиль процесса в реальном времени. Пишутся команды вида «exec opam» или «changeprofile opam» в файлы /proc/self/attr/exec или /proc/self/attr/current соответственно.
После успешного переключения профиля процесс может снова вызывать системный вызов unshare для создания пространства имён без получения ошибки «Operation not permitted». Данная методика была подтверждена на версиях Ubuntu 24.10 и проверена на ядре версии 6.11.0-14-generic.
Важной особенностью стало то, что обход возможен только при условии, что параметр ядра /proc/sys/kernel/apparmor_restrict_unprivileged_unconfined отключён (то есть равен 0). Начиная с Ubuntu 25.04 данный параметр по умолчанию включён, что устраняет возможность подобного обхода. Интересно отметить развитие событий вокруг открытия данного бага. Сначала исследователь сообщил о возможности обхода в Twitter в феврале 2025 года, после чего последовал собственный анализ, завершившийся обнаружением уязвимости.
Однако изменения политики конкурса Pwn2Own, где Ubuntu была исключена из Linux LPE-хаков в пользу Red Hat Enterprise Linux, снизили значимость данной уязвимости в рамках соревнований. Тем не менее вопрос безопасности остался актуальным, и после неудачного опыта с Zero Day Initiative (ZDI) исследователь направил доклад в службу безопасности Ubuntu. В конечном итоге, поддержка системы подтвердило, что с момента релиза Ubuntu 25.04 обход стал невозможен, а для более ранних версий были предоставлены рекомендации по ограничению запуска программ, способных менять профили AppArmor. Кроме того, раскрытие деталей обхода позволило раскрыть несколько важных уроков о том, как строгое управление профилями безопасности должно учитывать не только сам факт применения ограничений, но и нюансы внутреннего механизма смены профиля в среде Linux Security Module.
В целом ситуация демонстрирует, что даже продвинутые средства безопасности требуют постоянной проверки и развития, поскольку адаптация к новым реалиям вычислительной среды продолжается непрерывно. Технический разбор ядра Ubuntu показал, насколько глубокие знания реализации ядра и механизмов LSM необходимы для поиска таких лазеек. Углублённый взгляд на AppArmor, его профили и взаимодействие с системными файлами позволил создать рабочие методы обхода, хоть и с ограничениями по версии ОС и параметрам ядра. Для системных администраторов и специалистов по безопасности данный кейс стал мотивирующим примером важности своевременного обновления дистрибутива и внимательного контроля параметров ядра. Использование устаревших версий или неправильная конфигурация могут привести к открытию путей для злоумышленников.
Даже несмотря на то, что данная история завершилась успешной координацией между исследователем и командой безопасности Ubuntu, она подчёркивает, что безопасных систем не бывает без активного взаимодействия сообщества, быстрого обмена информацией и реализации своевременных исправлений. В сфере Linux безопасности, где патчи и надстройки каждый день совершенствуют защиту, отслеживание изменений в AppArmor и понимание его работы на уровне ядра критически важны. Таким образом, обход ограничения не привилегированных пространств имён в Ubuntu — это не просто технический трюк или баг. Это сигнал сообществу, что новые блокировки и ограничения требуют детального анализа и постоянного мониторинга, а разработчики и исследователи должны работать совместно, чтобы поддерживать баланс между удобством, производительностью и безопасностью в быстро меняющемся мире информационных технологий.