Уязвимость StackRot в ядре Linux, позволяющая повысить свои привилегии

Выполненный в ядре Linux 6.1 перевод VMA (Virtual Memory Area) со структуры данных «red-black tree» на «maple tree» привёл к появлению уязвимости (CVE-2023-3269), позволяющей непривилегированному пользователю добиться выполнения своего кода с правами ядра. Уязвимость, которой присвоено кодовое имя StackRot, проявляется начиная с выпуска ядра 6.1 и устранена в обновлениях 6.4.1, 6.3.11 и 6.1.37.

Структура «maple tree» представляет собой вариант B-tree, поддерживающий индексацию по диапазонам значений и спроектированный для эффективного использования кэша современных процессоров. По сравнению с «red-black tree» применение «maple tree» позволяет добиться более высокой производительности. Уязвимость вызвана ошибкой в обработчике расширения стека — в структуре «maple tree», используемой при управлении областями виртуальной памяти в ядре, замена узла в дереве могла произойти без выставления блокировки на запись, что создавало условия для обращения к области памяти после её освобождения (use-after-free).

Эксплуатацию уязвимости усложняло то, что узлы в структуре «maple tree» освобождаются в отложенном режиме с использованием callback-вызовов с блокировками RCU (Read-copy-update). Тем не менее, исследователям удалось преодолеть возникшие трудности и подготовить рабочий эксплоит, который планируют опубликовать в конце июля, чтобы дать пользователям время обновить свои системы. Эксплуатация возможна в почти во всех конфигурациях ядра и требует лишь минимальных привилегий.

Источник: opennet.ru

Добавить комментарий