Byla odhalena zranitelnost v jádru Linux, která umožňuje neprivilegovanému uživateli získat práva root, podobně jako zranitelnosti Copy Fail, Dirty Frag a Fragnesia, přepisováním dat ve stránkovém cache. Zranitelnosti bylo přiděleno kódové jméno DirtyDecrypt (problém je také zmíněn pod názvem DirtyCBC). Prototyp exploitace je k dispozici.
CVE identifikátor v poznámkách k exploitaci není zmíněn, je uvedeno pouze, že výzkumníci odhalili problém 9. května, po čemž to oznámili vývojářům jádra, kteří odpověděli, že jejich nález duplikuje jinou zprávu o již opravené zranitelnosti. Vzhledem k tomu, že patch byl již začleněn do jádra, se výzkumníci rozhodli publikovat svůj navržený exploit. Podle popisu v exploitu se používá zranitelnost CVE-2026-31635, jejíž oprava byla přijata do jádra v dubnu a byla součástí větve 7.0.0 a verze 6.18.23, která byla vydána 18. dubna. Problém se projevuje od jádra 6.16.
Stejně jako v případě série zranitelností Dirty Frag je nová zranitelnost přítomna v ovladači RxRPC, který implementuje rodinu soketů AF_RXRPC a jmenovitý RPC protokol fungující na základě UDP. Problém je způsoben chybou při kontrole velikosti dat v funkci rxgk_verify_response() — místo kontroly 'if (auth_len > len)' bylo v kódu uvedeno 'if (auth_len < len)', což vedlo k předávání dat s velikostí větší než povolená do funkce rxgk_decrypt_skb(). Při vykonávání funkce rxgk_decrypt_skb() bylo dešifrování dat provedeno se změnami přímo ve stránkovém cache, aby se vyloučila nadbytečná buforace. Nepravdivá kontrola velikosti umožnila přepisování dat ve stránkovém cache na vybraném posunu.
Exploatace zranitelnosti spočívá v čtení souboru programu s flagem suid root (pro jeho uložení ve stránkovém cache) a nahrazení části kódu programu v stránkovém cache kódem pro spuštění /usr/bin/sh. Následné spuštění programu povede k tomu, že do paměti bude načtena nikoli originální spustitelný soubor z úložiště, ale změněná kopie ze stránkového cache. Jako suid programy v exploitaci je předpokládána možnost použití '/usr/bin/su', '/bin/su', '/usr/bin/mount', '/usr/bin/passwd' a '/usr/bin/chsh'.
Pro využití zranitelnosti musí být při sestavení jádra aktivní možnost CONFIG_RXGK a pro automatické načtení musí být k dispozici jádro modulu rxrpc.ko (v některých systémech se nezkompiluje). Stav odstranění zranitelností v distribucích lze posoudit na těchto stránkách: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. Jako obranou metodou ochrany lze zablokovat načítání modulu jádra rxrpc:
sh -c "printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true"
Dále je třeba poznamenat publikaci v mailing listu vývojářů jádra Linuxu patchů, které zcela vypínají optimalizace v crypto API (AF_ALG), používající přímý přístup k stránkovému cache při dešifrování pomocí algoritmů 'skcipher' a 'aead'. Optimalizace vylučují nadbytečné bufferování dat, ale vytvářejí rizika vzniku závažných zranitelností. Předpokládá se, že jejich vypnutí povede pouze k zanedbatelnému poklesu výkonu kvůli vzniku další operace kopírování do samostatného bufferu. Patche byly přijaty správcem subsystému crypto API a jsou zahrnuty do větve 'cryptodev', ve které se vyvíjejí možnosti pro přenos do hlavního jádra budoucích vydání jádra Linux.
Zdroj: opennet.ru
