Найти тему
Securitylab.ru

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

Оглавление

Ученые нашли способ обойти защиту ядра Linux с 99% эффективностью.

Специалисты из Технического университета Граца (Австрия) представили новую атаку на кросс-кэш ядра 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

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

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

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

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

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

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

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