Специалисты по информационной безопасности из Qualys обнаружили критическую серию из девяти уязвимостей в системе мандатного управления доступом AppArmor. Группа багов, получившая общее название CrackArmor, представляет серьезную угрозу для инфраструктуры на базе Linux: выявленные бреши позволяют локальному пользователю без специальных привилегий захватить права суперпользователя (root), выйти за пределы изолированных контейнеров и полностью нивелировать защитные механизмы, установленные профилями AppArmor. На текущий момент статус эксплуатации подтвержден для актуальных редакций Ubuntu 24.04 и Debian 13, при этом CVE-идентификаторы уязвимостям пока не присвоены.
Архитектура проблемы и охват систем
Корень проблемы кроется в LSM-модуле (Linux Security Module) AppArmor и прослеживается в коде ядра, начиная с версии 4.11, вышедшей еще в 2017 году. В зону риска попадают практически все популярные дистрибутивы, использующие AppArmor по умолчанию или в качестве опции, включая Ubuntu, Debian, openSUSE и SUSE. Хотя в последних версиях корпоративных решений SUSE приоритет отдан SELinux, поддержка AppArmor сохраняется, что оставляет вектор атаки открытым.
Разработчики ядра уже подготовили исправления, которые войдут в состав релизов 6.18.18, 6.19.8, 6.12.77 и более ранних веток поддержки. Сообщество Ubuntu уже выпустило патчи не только для ядра, но и для вспомогательных утилит, таких как sudo и util-linux (su), которые могли быть использованы в цепочках атак. В Debian работа над устранением последствий CrackArmor находится на финальной стадии.
Механика атаки «обманутый посредник»
Фундаментальная ошибка в разработке AppArmor привела к возникновению уязвимости класса «confused deputy» (обманутый посредник). Проще говоря, система позволяет непривилегированным процессам манипулировать профилями защиты — загружать новые, заменять существующие или удалять их. Технически это реализуется через запись в псевдофайлы в директории /sys/kernel/security/apparmor/.
На практике это означает, что атакующий может «ослепить» защитные механизмы для критических сервисов, таких как cupsd или rsyslogd, или вызвать отказ в обслуживании (DoS), применив жесткие ограничивающие профили к системным компонентам. Кроме того, манипуляция профилями позволяет обходить ограничения пространств имен (namespaces), создавая собственные конфигурации для таких утилит, как /usr/bin/time, что открывает путь к созданию неконтролируемых пользовательских пространств имен.
Цепочки повышения привилегий через системные утилиты
Один из наиболее изящных сценариев атаки предполагает использование легитимных инструментов sudo и su. Подменяя профиль AppArmor для этих утилит, злоумышленник может заблокировать определенные системные вызовы. Если заблокировать операцию сброса привилегий (setuid или CAP_SETUID) для sudo, программа продолжит выполнение с правами root даже там, где должна была их понизить.
Эксплуатация усиливается через манипуляции с окружением. Например, при возникновении ошибки sudo пытается отправить почтовое уведомление администратору через /usr/sbin/sendmail. Если при этом подменить переменную окружения MAIL_CONFIG, можно заставить систему использовать фальшивые настройки Postfix и запустить произвольный обработчик (postdrop) с максимальными полномочиями в системе.
Уязвимости на уровне ядра: Race Condition и Use-After-Free
Помимо логических ошибок в управлении профилями, исследователи выявили классические баги в самом коде ядра. В процессе загрузки и замены данных профили сохраняются в структуре aa_loaddata, размещаемой в slab-кэше kmalloc-192. Из-за отсутствия должной синхронизации возникает состояние гонки (race condition), приводящее к двойному освобождению памяти (double free) или обращению к уже освобожденному участку (use-after-free).
Если коротко, это позволяет злоумышленнику взять под контроль освобожденную страницу памяти и перераспределить ее для других задач. В продемонстрированном векторе атаки этот метод использовался для маппинга содержимого файла /etc/passwd прямо в контролируемую область памяти, что позволило перезаписать хеш пароля root и получить полный контроль над операционной системой.