Převod VMA (Virtual Memory Area) z datové struktury „red-black tree“ na „maple tree“ provedený v jádře Linux 6.1 vedl k vzniku zranitelnosti (CVE-2023-3269), která umožňuje neoprávněnému uživateli spustit svůj kód s oprávněními jádra. Zranitelnost s kódovým názvem StackRot se projevuje od vydání jádra 6.1 a byla odstraněna v aktualizacích 6.4.1, 6.3.11 a 6.1.37.
Struktura „maple tree“ je variantou B-tree, která podporuje indexaci podle rozsahů hodnot a byla navržena pro efektivní využití mezipaměti moderních procesorů. Ve srovnání s „red-black tree“ umožňuje použití „maple tree“ dosáhnout vyššího výkonu. Zranitelnost byla způsobena chybou v obsluze rozšíření zásobníku — v konstrukci „maple tree“, používané při správě oblastí virtuální paměti v jádře, mohla být výměna uzlu v stromu provedena bez aktivace zámku pro zápis, což vytvořilo podmínky pro přístup k oblasti paměti po jejím uvolnění (use-after-free).
Využívání zranitelnosti bylo ztíženo tím, že uzly ve struktuře „maple tree“ jsou uvolňovány v odloženém režimu pomocí zpětných volání s blokováním RCU (Read-copy-update). Nicméně, výzkumníkům se podařilo překonat vzniklé obtíže a připravit funkční exploit, který plánují zveřejnit na konci července, aby uživatelům poskytli čas na aktualizaci svých systémů. Využití je možné téměř ve všech konfiguracích jádra a vyžaduje pouze minimální privilegium.
Zdroj: opennet.ru
