Zranitelnost v subsystému io_uring umožňující získání práv root

V rozhraní pro asynchronní vstup/výstup io_uring, které poskytuje jádro Linux, byla nalezena zranitelnost (CVE-2024-0582), která umožňuje neprivilegovanému uživateli získat práva root v systému. K využití zranitelnosti stačí běžný místní přístup k systému bez nutnosti manipulace s prostory jmen. V současnosti je veřejně dostupný funkční exploit a podrobně je popsána druhá technika exploatace zranitelnosti.

Zranitelnost je způsobena přístupem k již uvolněnému bloku paměti (use-after-free) v subsystému io_uring, která se vyskytuje při registraci a uvolnění kruhového bufferu vytvořeného s příznakem IORING_REGISTER_PBUF_RING. V případě použití operace mmap() na bufferu zůstává odraz v prostoru uživatele i po provedení operace jeho uvolnění (IORING_UNREGISTER_PBUF_RING). Využitím této vlastnosti může útočník číst a zapisovat data na stránky paměti, které byly vráceny systémem správy paměti jádra.

Problém se projevuje od vydání jádra Linux 6.4 a byl odstraněn ve verzích 6.7 a 6.6.5, jakož i v balíčku jádra 6.5.0-21, připraveném pro Ubuntu 22.04 a 23.10. Je pozoruhodné, že v hlavním jádře byla chyba opravena v prosinci 2023, projekt Google Zero zpřístupnil signalizující hlášení o zranitelnosti 8. ledna a balíček s opraveným jádrem 6.5 pro Ubuntu byl sestaven až 22. února 2024. V jiných distribucích je možné sledovat opravy a zranitelnost na stránkách: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.

První exploit manipuluje s vytvářením velkého počtu kontrolovaných stránek paměti útočníkem za účelem určení rozložení paměti v jádře a přístupu k sousedním fyzickým stránkám paměti, přičemž jako majáky používá obsah specificky zaplněných struktur síťových soketů. K provedení kódu v exploitu je použit "gadgets" (sekvence existujících instrukcí v jádře), která vede k vykonání funkce call_usermodehelper_exec, určené pro spouštění procesů v uživatelském prostoru z jádra.

Druhý exploit vychází z toho, že pokud dojdou všechny slab-bloky v cache (například při opakovaném otevírání souboru), systém přidělování paměti použije volné stránky paměti, k nimž má útočník přístup, k vytvoření nového slab-bloku a všechny nové souborové struktury začnou být umístěny v tomto bloku. Odpovídajícím způsobem se některé souborové struktury dostanou do paměťových stránek, které může číst a zapisovat útočník. Využití se pak redukuje na zajištění, že potřebný soubor se dostane do souborové cache a nahrazení pole f_mode ve spojených souborových strukturách, které určuje práva přístupu, což umožňuje učinit požadovaný systémový soubor zapisovatelným, například /etc/passwd.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster