В мире корпоративной инфраструктуры и облачных вычислений безопасность часто строится на доверии к фундаментальным системным компонентам. Однако новое исследование демонстрирует, как ошибка в одном из таких базовых элементов - модуле безопасности AppArmor - ставит под угрозу миллионы систем. Обнаруженный набор из девяти уязвимостей, получивший название CrackArmor, позволяет злоумышленнику с обычными правами пользователя обойти изоляцию контейнеров и получить полный контроль над операционной системой. Масштаб проблемы огромен: уязвимости, существующие с 2017 года, затрагивают более 12,6 миллиона корпоративных Linux-серверов по всему миру, включая среды Kubernetes и периферийные устройства.
AppArmor является системой принудительного контроля доступа (Mandatory Access Control) по умолчанию для таких популярных дистрибутивов, как Ubuntu, Debian и SUSE, а также для множества облачных платформ. Его задача - реализовать принцип нулевого доверия, ограничивая возможности конкретных приложений, а не широких учетных записей пользователей. Однако в архитектуре модуля была выявлена фундаментальная проблема, известная как «замешательство доверенного посредника» (confused deputy flaw). Суть её в следующем: непривилегированный злоумышленник не может напрямую изменить политики безопасности системы, но он может манипулировать доверенными процессами с высокими привилегиями, такими как Sudo или Postfix, заставляя их действовать от своего имени.
Это можно сравнить с ситуацией, когда злоумышленник убеждает управляющего зданием, имеющего мастер-ключи, открыть ему защищённый сейф. В техническом плане атака заключается в том, чтобы обманом заставить эти привилегированные процессы произвести запись в защищённые псевдофайлы в каталоге ядра AppArmor, обходя ограничения пространств имён пользователей. Ключевой момент: проблема кроется не в модели контроля доступа как таковой, а в ошибке реализации кода самого модуля ядра. Это приводит к тихому падению границы безопасности, без явных предупреждений для системных администраторов.
Успешная эксплуатация уязвимостей CrackArmor ведёт к полному краху стека безопасности. Последствия носят критический характер. Во-первых, это повышение привилегий на локальной системе. Злоумышленник может обойти ограничения пространств имён для получения прав суперпользователя. В пользовательском пространстве, запретив определённые возможности для Sudo, можно заставить Postfix выполнять команды от имени root. В пространстве ядра использование уязвимости типа «использование после освобождения» (use-after-free) позволяет перезаписать строку с паролем root в системном файле паролей.
Во-вторых, возможна организация атаки на отказ в обслуживании. Создавая глубоко вложенные подпрофили, атакующий может вынудить ядро исчерпать стековую память при удалении профиля, что вызовет панику ядра и полную перезагрузку системы. В-третьих, реализуется так называемый «побег из контейнера». Загрузка специального профиля пространства имён позволяет непривилегированному пользователю создать полностью работоспособное окружение, ломая стандартные ограничения изоляции контейнеров. Наконец, злоумышленник может понизить уровень безопасности, удалив защиту с критически важных фоновых служб и сделав их уязвимыми для удалённых атак, или же загрузить профиль «запретить всё», чтобы заблокировать легитимный административный доступ.
Особенностью ситуации является задержка с присвоением официальных идентификаторов CVE. Команда разработчиков ядра Linux upstream обычно откладывает их публикацию на одну-две недели после того, как исправление попадает в стабильный релиз, чтобы дать обычным пользователям время на обновление. Однако специалистам по информационной безопасности настоятельно рекомендуется не ждать официального отслеживания CVE, поскольку механизмы и концепции эксплуатации уже стали достоянием общественности. Медлительность в этом случае чревата серьёзными последствиями.
Для защиты инфраструктуры администраторам необходимо немедленно принять ряд мер. Первое и самое важное - применение патчей для ядра. Следует развернуть последние обновления безопасности от вендоров для всех затронутых дистрибутивов, уделив особое внимание версиям ядра новее 4.11. Второй шаг - сканирование на предмет подверженности угрозам. Необходимо задействовать сканеры уязвимостей для выявления непропатченных активов, отдав приоритет серверам, доступным из интернета, узлам контейнеров и устаревшим развертываниям. Третий ключевой элемент - мониторинг целостности профилей. Следует активно отслеживать каталог AppArmor в системе на предмет неожиданных изменений файлов, удаления профилей или несанкционированных модификаций, которые могут указывать на попытки активной эксплуатации.
Обнаружение CrackArmor наглядно демонстрирует, что даже модули безопасности, используемые по умолчанию, могут стать источником критических уязвимостей, если ошибки реализации в коде ядра остаются необнаруженными годами. В данном случае немедленное патчингование является единственным надёжным способом нейтрализовать эту угрозу и восстановить целостность инфраструктуры. Игнорирование проблемы ставит под удар не только отдельные серверы, но и целостность контейнерных сред, которые стали основой для современных облачных развертываний и микросервисных архитектур.