Спецпроекты

ПО Безопасность Администратору

Найден новый способ опасно атаковать ядро Linux

Теперь хакеры могут одни уязвимости ядра Linux «сконвертировать» в другие и добиться очень серьезной эксплуатации. Правда для этого понадобится соблюсти целый ряд условий.

Универсальная, но не очень практичная

Эксперты Технологического университета Граца (Австрия) продемонстрировали новый тип атаки на ядро Linux, при котором одна уязвимость конвертируется в другую и открывает возможность для повышения привилегий или выхода за пределы контейнеров.

Атака была продемонстрирована на версиях ядра 5.9 и 6.2 с использованием девяти разных уязвимостей с присвоенными индексами CVE в 32- и 64-битных системах. Уязвимости датированы 2021-2023 гг. Мало того, как показали исследователи, все современные инструменты защиты ядра – SMAP/SMEP (предотвращение доступа к режиму супервизора или запуска кода в этом режиме) или KASLR (рандомизация адресного пространства ядра) – заблокировать данную атаку не в силах.

Атака получила название SLUBStick. Уже опубликован ее технический анализ.

При новом типе атаки на ядро Linux одна уязвимость конвертируется в другую и открывает возможность для повышения привилегий или выхода за пределы контейнеров

Как указывают исследователи, SLUBStick использует уязвимости кучи (термин программирования), такие как двойное освобождение памяти (double-free), использование выделенной области памяти после ее освобождения (use-ater-free), запись в области за пределами выделенной памяти (out-of-bounds write) для манипуляций процессом выделения памяти.

Побочный канал для повышения эффективности

Ядро Linux выделяет под разные типы структуры данных фрагменты памяти, которые именуются Slabs (плиты). Каждый Slab – это объем памяти, занятый под различные структуры ядра небольшого объема, для которых нет смысла выделять по целой странице памяти.

В процессе распределения памяти время от времени возникают уязвимости, позволяющие злоумышленниками нарушать целостность структур данных или манипулировать ими; такие атаки называют межкэшевыми (cross-cache). Обычно их эффективность не превышает 40%, плюс рано или поздно они вызывают отказ системы.

Атака SLUBStick, однако, использует временной побочный канал – для определения точного момента, когда осуществляется выделение и очистка объема памяти, что позволяет злоумышленнику предсказывать и контролировать повторное использование памяти. И это повышает успешность атаки до 99%.

Конверсия уязвимости кучи в уязвимость произвольных чтения-записи памяти происходит следующим образом: после освобождения выделенных фрагментов памяти – дождаться их повторного использования ядром; контролируемо перераспределить эти фрагменты, убедившись, что они используются для критических структур данных, таких как страничных таблиц; перезаписать данные в этих таблицах, что открывает возможность считывать произвольные области памяти и записывать в них данные.

«Реализация этой атаки требует локального доступа, возможности запускать на ней код и наличия неисправленной уязвимости ядра, – отмечает Михаил Зайцев, эксперт по информационной безопасности компании SEQ. – То есть, практическая осуществимость этой атаки довольно низка, хотя и далека от невозможности. В любом случае, уязвимости ядра пользователям Linux необходимо отслеживать пристально и устранять как можно оперативнее». Как пишут исследователи атаки, при худших вариантах SLUBStick позволяет повышать привилегии в системе вплоть до максимальных (что по факту означает полный контроль над устройством), обходить средства защиты ядра, выходить за пределы контейнеров и использовать что-либо из этого в рамках более комплексной атаки по цепочке поставок.

Кроме того, SLUBStick позволяет модифицировать структуры самого ядра для обеспечения постоянства присутствия и сокрытия потенциального вредоносного ПО от средств обнаружения.

Роман Георгиев

Короткая ссылка