Бесплатно Экспресс-аудит сайта:

06.08.2024

SLUBStick: от ошибки в памяти к полному контролю Linux

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

Атака была протестирована на версиях ядра Linux 5.9 и 6.2, что говорит о высокой универсальности метода. В ходе экспериментов были использованы 9 существующих уязвимостей как на 32-битных, так и на 64-битных системах.

Уязвимости, использованные в эксперименте

SLUBStick показала свою эффективность даже при активных современных защитах ядра – Supervisor Mode Execution Prevention (SMEP), Supervisor Mode Access Prevention (SMAP) и Kernel Address Space Layout Randomization (KASLR).

Детали атаки будут представлены на конференции Usenix Security Symposium, которая пройдет в конце августа. Исследователи продемонстрируют повышение привилегий и выход из контейнеров на новейшей версии Linux с включенной защитой.

Технические подробности SLUBStick

Ядро Linux управляет памятью, выделяя и освобождая блоки памяти (slabs), для различных типов структур данных. Уязвимости в процессе управления памятью могут позволить злоумышленникам искажать или манипулировать структурами данных, что называется атакой кросс-кэша (cross-cache attack). Обычно такие атаки успешны примерно в 40% случаев и часто приводят к сбоям системы.

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

Используя эту информацию, вероятность успешной эксплуатации кросс-кэш атаки возрастает до 99%, что делает SLUBStick очень практичным.

Показатели успешности атаки

Конвертация уязвимости кучи в возможность произвольного чтения и записи памяти проходит в три этапа:

  1. Освобождение определенных блоков памяти и ожидание их повторного использования ядром;
  2. Повторное выделение блоков контролируемым образом, чтобы они были использованы для критически важных структур данных, таких как таблицы страниц;
  3. После возврата блоков злоумышленник перезаписывает записи таблицы страниц, получая возможность читать и записывать данные в любую область памяти.

Обзор SLUBStick

Реальное влияние на безопасность

Как и большинство атак с использованием побочных каналов, SLUBStick требует локального доступа к целевой машине с возможностью выполнения кода. Кроме того, для атаки требуется наличие уязвимости кучи в ядре Linux, которая будет использована для получения доступа к памяти.

Атака имеет ряд преимуществ для злоумышленников. Даже для тех, кто уже обладает возможностью выполнения кода, SLUBStick предоставляет возможность повысить привилегии, обойти защиты ядра, выйти за пределы контейнеров или использовать его в составе сложной цепочки атак.

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

Изменение данных «/etc/passwd»

Для тех, кто хочет глубже изучить SLUBStick и поэкспериментировать с эксплуатацией уязвимостей, исследователи опубликовали все детали в техническом докладе, а также разместили код в репозитории GitHub.