Сразу несколько версий ядра ОС Linux содержат серьезную уязвимость, позволяющую повысить системные привилегии пользователя. Баг, названный StackRot (CVE-2023-3269), получил патч 1 июля 2023 г. К концу месяца будут раскрыты все технические детали и представлен экспериментальный эксплойт. Уязвимость обнаружил исследователь Жуй-Хань Ли (Ruihan Li), который и проинформировал разработчиков о ней.
Согласно его публикации, проблема затрагивает подсистему управления памятью ядра — компонента, который осуществляет распределение виртуальной памяти, пейджинг по запросу, выделение памяти для нужд ядра и пользовательских программ, а также распределение файлов по адресному пространству процессов.
Слабым местом оказался maple tree («клён») — новая структура данных для областей виртуальной памяти (VMA), которая была реализована впервые в ядре Linux версии 6.1. Уязвимость позволяет повторно использовать уже освобожденную ячейку памяти (use-after-free), поскольку расширение стека производится некорректно: структура mapletree может заменять один узел другим без фиксации состояния памяти со стороны системы управления.
При расширении стека ядро Linux и устранении зазора между VMA, в maple tree создается новый узел, а старый маркируется на удаление по окончании текущего цикла чтения. Это, по идее, защитная мера механизма чтения-копирования-обновления (RCU).
Однако у RCU есть непродолжительный период задержки, в ходе которого действующие процессы могут получить доступ к старому узлу, тем самым создавая условия для злонамеренной эксплуатации.
Горячие темы