Путь к правам администратора. Ошибка в коде 2017 года обнуляет защиту систем Linux
Разработчики Linux готовят исправления для критической ошибки в системе контроля доступа.
Уязвимость, скрывавшаяся в Linux почти восемь лет, позволяет обычному пользователю системы получить полный контроль над сервером. Речь идёт о проблемах в механизме безопасности AppArmor, который по умолчанию включён во многих популярных дистрибутивах.
Компания Qualys сообщила о девяти уязвимостях в AppArmor и объединила находки под названием CrackArmor. Проблема появилась ещё в 2017 году вместе с ядром Linux версии 4.11. За прошедшие годы уязвимый механизм успел попасть в миллионы систем. По оценке Qualys, AppArmor с включёнными настройками по умолчанию работает более чем на 12,6 млн корпоративных установок Linux.
AppArmor входит в ядро Linux и выполняет роль обязательного контроля доступа. Механизм ограничивает возможности отдельных программ, не позволяя приложениям читать чужие файлы, выполнять опасные системные вызовы или получать дополнительные права. Такой подход широко используют в контейнерах, облачных платформах, инфраструктуре Kubernetes и во встроенных устройствах.
CrackArmor разрушает эту защиту. Обнаруженные ошибки позволяют локальному пользователю без прав администратора манипулировать профилями безопасности через специальные псевдофайлы в каталоге /sys/kernel/security/apparmor/. С их помощью злоумышленник может подменять или удалять политики безопасности, обходить ограничения пространств имён пользователей и запускать код прямо в ядре Linux. В результате атакующий способен повысить привилегии до уровня root.
Для атаки достаточно учётной записи с минимальными правами. Далее злоумышленник может использовать доверенные системные инструменты вроде Sudo или почтовой системы Postfix, чтобы изменить правила AppArmor. Подобная схема относится к так называемой проблеме «запутанного заместителя», когда привилегированная программа выполняет действия по просьбе менее привилегированного пользователя.
Ошибки позволяют не только получить права администратора, но и вывести систему из строя. Например, злоумышленник может загрузить профиль, который полностью блокирует доступ к сервису SSH, тем самым лишив администраторов возможности подключиться к серверу. В другом сценарии удаление сложной цепочки вложенных профилей приводит к переполнению стека ядра и аварийному завершению работы системы с последующей перезагрузкой.
Также возможна утечка данных из памяти ядра и обход механизма рандомизации адресного пространства KASLR. В некоторых сценариях атакующий способен изменить содержимое файла /etc/passwd, что фактически даёт полный контроль над системой.
Особую опасность представляет распространённость AppArmor. Механизм включён по умолчанию в Ubuntu, Debian и SUSE, а также активно используется в облачных средах и контейнерных платформах. Поэтому компрометация AppArmor фактически разрушает один из ключевых уровней защиты Linux.
Уязвимыми считаются все версии ядра Linux начиная с 4.11, если система использует AppArmor. На данный момент для проблем ещё не назначили идентификаторы CVE. Команда ядра Linux обычно присваивает такие номера спустя одну-две недели после появления исправлений в стабильной ветке.
Qualys подготовила демонстрационные эксплойты, подтверждающие возможность полной цепочки атаки, но публично публиковать код не стала. Компания передала технические детали разработчикам, чтобы ускорить подготовку исправлений.
Администраторам рекомендуют как можно быстрее установить обновления ядра от поставщиков дистрибутивов. Временные меры защиты не обеспечивают полноценную безопасность. Дополнительно стоит контролировать изменения в каталоге /sys/kernel/security/apparmor/, поскольку подозрительная модификация профилей может указывать на попытку эксплуатации уязвимости.