Исследователи из Qualys Threat Research Unit (TRU) обнаружили девять уязвимостей в модуле AppArmor ядра Linux, которые позволяют непривилегированным пользователям повышать свои права до root, обходить изоляцию контейнеров и выполнять произвольный код на уровне ядра. Набор уязвимостей получил кодовое имя CrackArmor. Ни одному из девяти багов пока не присвоен идентификатор CVE.

AppArmor — модуль мандатного контроля доступа (Mandatory Access Control), включённый в основную ветку ядра Linux начиная с версии 2.6.36. Он используется по умолчанию в Ubuntu, Debian и SUSE. По оценкам Qualys, более 12,6 миллиона корпоративных Linux-инстансов работают с включённым AppArmor прямо сейчас. Проблемы затрагивают все ядра начиная с версии 4.11 на дистрибутивах, где AppArmor интегрирован. Причём существуют эти баги с 2017 года — то есть почти восемь лет оставались незамеченными.
Все девять уязвимостей относятся к типу «confused deputy» — атака на «обманутого посредника». Суть в том, что неавторизованный пользователь заставляет привилегированную программу злоупотребить своими полномочиями для выполнения вредоносных действий. Атакующий манипулирует профилями безопасности AppArmor через псевдофайлы, а из-за ошибок в парсинге профилей на уровне ядра может менять политики безопасности.
Спектр возможных атак широк. Локальное повышение привилегий (LPE) позволяет обычному пользователю получить полный root-доступ. Обход изоляции контейнеров и ограничений пользовательских пространств имён (в том числе специфических для Ubuntu) даёт возможность создавать полностью привилегированные user namespaces. Фактически это разрушает саму модель контейнерной безопасности.
Отдельно стоит упомянуть возможность обхода KASLR — рандомизации адресного пространства ядра. Через чтение за пределами выделенной памяти и произвольное раскрытие содержимого памяти атакующий может выстроить цепочку для удалённой эксплуатации. Это превращает локальную уязвимость в потенциально куда более серьёзную угрозу.
Среди других последствий — подмена учётных данных. Через модификацию файла
Саид Аббаси, старший менеджер Qualys TRU, назвал установку патчей «безусловным приоритетом». По его словам, промежуточные меры не дают того же уровня защиты, что восстановление исправленного кода от вендора. Иными словами, обходные пути здесь не помогут — нужно именно обновление ядра.
Qualys TRU намеренно не публикует proof-of-concept эксплойты, чтобы дать администраторам время на установку патчей. Учитывая масштаб проблемы — миллионы серверов с AppArmor по умолчанию — решение разумное. Но и тянуть с обновлением не стоит: раз исследователи нашли эти баги, рано или поздно их найдут и те, кто будет использовать их не для отчётов.

Изображение носит иллюстративный характер
AppArmor — модуль мандатного контроля доступа (Mandatory Access Control), включённый в основную ветку ядра Linux начиная с версии 2.6.36. Он используется по умолчанию в Ubuntu, Debian и SUSE. По оценкам Qualys, более 12,6 миллиона корпоративных Linux-инстансов работают с включённым AppArmor прямо сейчас. Проблемы затрагивают все ядра начиная с версии 4.11 на дистрибутивах, где AppArmor интегрирован. Причём существуют эти баги с 2017 года — то есть почти восемь лет оставались незамеченными.
Все девять уязвимостей относятся к типу «confused deputy» — атака на «обманутого посредника». Суть в том, что неавторизованный пользователь заставляет привилегированную программу злоупотребить своими полномочиями для выполнения вредоносных действий. Атакующий манипулирует профилями безопасности AppArmor через псевдофайлы, а из-за ошибок в парсинге профилей на уровне ядра может менять политики безопасности.
Спектр возможных атак широк. Локальное повышение привилегий (LPE) позволяет обычному пользователю получить полный root-доступ. Обход изоляции контейнеров и ограничений пользовательских пространств имён (в том числе специфических для Ubuntu) даёт возможность создавать полностью привилегированные user namespaces. Фактически это разрушает саму модель контейнерной безопасности.
Отдельно стоит упомянуть возможность обхода KASLR — рандомизации адресного пространства ядра. Через чтение за пределами выделенной памяти и произвольное раскрытие содержимого памяти атакующий может выстроить цепочку для удалённой эксплуатации. Это превращает локальную уязвимость в потенциально куда более серьёзную угрозу.
Среди других последствий — подмена учётных данных. Через модификацию файла
/etc/passwd можно настроить беспарольный root-вход. Отказ в обслуживании (DoS) реализуется через принудительное применение запрещающих политик или исчерпание стека. А отключение защит критических сервисов затрагивает, в частности, Sudo и Postfix, нарушая принцип минимальных привилегий. Саид Аббаси, старший менеджер Qualys TRU, назвал установку патчей «безусловным приоритетом». По его словам, промежуточные меры не дают того же уровня защиты, что восстановление исправленного кода от вендора. Иными словами, обходные пути здесь не помогут — нужно именно обновление ядра.
Qualys TRU намеренно не публикует proof-of-concept эксплойты, чтобы дать администраторам время на установку патчей. Учитывая масштаб проблемы — миллионы серверов с AppArmor по умолчанию — решение разумное. Но и тянуть с обновлением не стоит: раз исследователи нашли эти баги, рано или поздно их найдут и те, кто будет использовать их не для отчётов.