Новая уязвимость Dirty Frag угрожает root-доступом в основных дистрибутивах Linux

linux

Мир Linux-систем столкнулся с серьёзной угрозой. Исследователь безопасности Хюнву Ким обнаружил новый класс уязвимостей ядра, который получил название Dirty Frag. Это локальное повышение привилегий позволяет атакующему получить доступ root почти во всех популярных дистрибутивах. Причём эксплойт уже оказался в открытом доступе - третья сторона нарушила эмбарго на ответственное раскрытие. Официальных патчей пока нет, а идентификатор CVE (общепринятое обозначение уязвимостей) ещё не присвоен.

Технические подробности уязвимости Dirty Frag

Dirty Frag напоминает предыдущие ошибки ядра - Dirty Pipe и Copy Fail. Принцип основан на манипуляции с кэшем страниц, то есть с областью оперативной памяти, где ядро хранит копии файлов для ускорения доступа. Уязвимость представляет собой детерминированную логическую ошибку - в ней нет состояния гонки, которое часто приводит к сбоям. Поэтому атака выполняется стабильно, не вызывая краха ядра. Злоумышленник может изменять файлы, доступные только для чтения, в оперативной памяти, не имея прав на запись на сам диск.

Для получения root-доступа используется цепочка из двух отдельных уязвимостей записи в кэш страниц. Первую, xfrm-ESP Page-Cache Write, Хюнву Ким обнаружил в подсистеме IPsec (набор протоколов для защищённой передачи данных в IP-сетях). Эта ошибка присутствует в коде с января 2017 года. Суть её в том, что нелинейный сокетный буфер, несущий "склеенную" (splice-pinned) ссылку на кэш страниц, обходит обязательную проверку копирования при записи. В результате в процессе расшифровки ESP выполняется прямая запись четырёх байт в кэш. С помощью этой операции атакующий полностью перезаписывает кэш бинарного файла с установленным битом setuid root, отвечающего за смену пользователя, и внедряет туда вредоносную полезную нагрузку, дающую доступ root.

Вторая уязвимость - RxRPC Page-Cache Write - появилась в ядре недавно, в июне 2023 года. Она выполняет расшифровку восьми байт непосредственно на склеенной странице, не требуя привилегий пространства имён пользователя (user namespace). Атакующий подбирает ключ расшифровки в пользовательском пространстве, а затем запускает запись в ядре. Так он точно изменяет системный реестр паролей, который находится в кэше страниц, и заменяет запись root-пользователя. Это позволяет обойти аутентификацию полностью.

Цепочка этих двух уязвимостей даёт единому бинарному эксплойту работать в разных средах. xfrm-ESP обеспечивает мощную произвольную запись, но для неё требуется возможность создания пространства имён пользователя. Во многих дистрибутивах, например в Ubuntu, это ограничивается политиками AppArmor. Однако RxRPC не требует таких привилегий и служит запасным вариантом. На Ubuntu необходимый модуль ядра загружен по умолчанию, поэтому атака возможна.

В результате Dirty Frag поражает шесть крупных дистрибутивов: Ubuntu, Red Hat Enterprise Linux, Fedora, CentOS Stream, AlmaLinux и openSUSE. При этом уязвимость работает даже в системах, где уже применены исправления для Copy Fail, поскольку затронуты совершенно другие подсистемы ядра.

Главная проблема - отсутствие патчей. Из-за преждевременного снятия эмбарго разработчики дистрибутивов не успели выпустить официальные обновления. Администраторам приходится полагаться на временные меры. Основная рекомендация - немедленно заблокировать загрузку конкретных модулей ядра: esp4, esp6 и rxrpc. Именно они содержат опасные пути расшифровки на месте. Для этого нужно либо внести их в чёрный список в конфигурации загрузчика, либо выгрузить уже загруженные модули командой модуля. Также следует настроить мониторинг изменений кэша страниц критических бинарных файлов аутентификации.

Ситуация напоминает прошлогодний инцидент с Dirty Pipe, который также позволял получить root-доступ, но тогда патчи вышли быстрее. Сейчас же сообщество безопасности находится в подвешенном состоянии. Поскольку эксплойт опубликован, злоумышленники уже могут его использовать. Системным администраторам стоит отслеживать каналы угрозной информации и оперативно устанавливать обновления, как только они появятся.

В долгосрочной перспективе инцидент вновь поднимает вопрос о процедуре ответственного раскрытия уязвимостей. Нарушение эмбарго ставит под удар тысячи организаций. Тем не менее для специалистов по информационной безопасности это ещё один урок: даже после исправления недавних багов остаются скрытые проблемы в старых подсистемах ядра. Dirty Frag - наглядное тому подтверждение.

Ссылки

Комментарии: 0