Ve veřejném prostoru byla zveřejněna exploita pro sedmou zranitelnost (1, 2-3, 4, 5, 6) v jádře Linux, která umožňuje neprivilegovanému lokálnímu uživateli získat práva roota přepsáním dat v stránkovém cache. CVE identifikátor zatím nebyl přiřazen, kromě kódu exploitu zatím nejsou k dispozici žádné další informace o problému. Oprava je dostupná pouze jako patch, který byl zveřejněn 20. května a 21. května byl přijat do hlavní větve jádra Linux (opravy jádra ale zatím nejsou k dispozici).
Zranitelnost se nachází v implementaci technologie GRO (Generic Receive Offload), která se používá k urychlení zpracování segmentovaných paketů. Zranitelnost je způsobena chybou v implementaci mechanismu zerocopy ve funkci skb_gro_receive(), která provádí přímou změnu dat ve stránkovém cache, aby se vyloučila zbytečná buffering. Při nastavené vlajce SKBFL_MANAGED_FRAG_REFS se vynechalo uložení odkazu na uvolňované stránky paměti do pole shinfo->frags, po čemž bylo toto pole připojeno k jinému skb bez změny čítače odkazů, což vedlo k přístupu k paměti po jejím uvolnění (use-after-free). Problém bylo možné využít k přepsání dat ve stránkovém cache díky manipulaci s ukazatelem na buffer io_uring.
Útok je možný na systémy se zapnutou podsystemem io_uring (io_uring_disabled=0). Pro fungování exploitu musí být v systému dostupný ke čtení spustitelný soubor s flagem SUID-root. Mechanismus exploitace spočívá v tom, že útočník dosáhne uložení databáze uživatelů do stránkového cache, po čemž do cache vloží řetězec „hax::0:0::/root:/bin/sh“. Pak je spuštěn příkaz „su hax“, který nezíská původní databázi uživatelů z úložiště, ale změněnou kopii s podvodním přihlášením „hax“, kterému jsou přidělena práva roota a prázdné heslo. Fungování exploitu bylo testováno na Ubuntu 24.04.
Zdroj: opennet.ru
