Преходът от структурата "red-black tree" на "maple tree" в ядрото на Linux 6.1 доведе до уязвимост (CVE-2023-3269), която позволява на непривилегирован потребител да изпълни собствен код с права на ядрото. Уязвимостта, известна с кодовото име StackRot, се проявява от версия 6.1 и е поправена в актуализациите 6.4.1, 6.3.11 и 6.1.37.
Структурата "maple tree" е вариант на B-дерево, която поддържа индексиране по диапазони от стойности и е проектирана да използва ефективно кеша на съвременните процесори. В сравнение с "red-black tree", използването на "maple tree" води до по-висока производителност. Уязвимостта е резултат на грешка в обработката на разширения стек – в структурата "maple tree", използвана при управлението на области от виртуалната памет в ядрото, смяна на възел в дървото може да се случи без блокировка за писане, което създава условия за достъп до паметта след нейното освобождаване (use-after-free).
Експлоатацията на уязвимостта усложняваше фактът, че възлите в структурата "maple tree" се освобождават отложено с използване на callback-призиви с RCU (Read-copy-update) блокировки. Въпреки това, на изследователите успяха да преодолеят трудностите и да подготвят работещ експлоит, който планират да публикуват в края на юли, за да осигурят на потребителите време да актуализират системите си. Експлоатацията е възможна почти във всички конфигурации на ядрото и изисква само минимални привилегии.
Източник: opennet.ru
