Zranitelnosti Dirty Frag, které mění stránkovou cache pro získání root přístupu na jakémkoli linuxovém distribuci

V jádru Linux byly odhaleny dvě zranitelnosti, které jsou v podstatě podobné nedávno zveřejněné zranitelnosti Copy Fail, ale projevují se v jiných subsystémech — xfrm-ESP a RxRPC. Série zranitelností byla pojmenována Dirty Frag (objevuje se také zmínka o Copy Fail 2). Zranitelnosti umožňují neprivilegovanému uživateli získat práva root přepsáním dat procesu v stránkovém cache. K dispozici je exploit, který funguje ve všech aktuálních distribucích Linuxu. Informace o zranitelnosti byly zveřejněny před vydáním oprav, ale existuje obchvat, jak problém zablokovat.

Dirty Frag pokrývá dvě různé zranitelnosti: první je v modulu xfrm-ESP, který se používá k urychlení šifrovacích operací v IPsec s použitím protokolu ESP (Encapsulating Security Payload), a druhá je v ovladači RxRPC, který implementuje rodinu socketů AF_RXRPC a stejnojmenný RPC protokol fungující na UDP. Každá z zranitelností jednotlivě umožňuje získání práv root. Zranitelnost v xfrm-ESP se projevuje v jádře Linuxu od ledna 2017, zatímco zranitelnost v RxRPC od června 2023. Oba problémy jsou způsobeny optimalizacemi, které umožňují přímé zápisy do stránkového cache.

Pro zneužití zranitelnosti v xfrm-ESP musí mít uživatel práva na vytváření prostorů názvů, zatímco pro zneužití zranitelnosti v RxRPC musí být možnost načíst jádrový modul rxrpc.ko. Například v Ubuntu jsou podle pravidel AppArmor neprivilegovanému uživateli zakázána práva na vytváření prostorů názvů, ale jádrový modul rxrpc.ko je ve výchozím nastavení načten. V některých distribucích modul rxrpc.ko chybí, ale není blokováno vytváření prostorů názvů. Výzkumník, který problém odhalil, připravil kombinovaný exploit, schopný napadnout systém přes obě zranitelnosti, což umožňuje využít problém ve všech hlavních distribucích. Fungování exploitu bylo potvrzeno v Ubuntu 24.04.4 s jádrem 6.17.0-23, RHEL 10.1 s jádrem 6.12.0-124.49.1, openSUSE Tumbleweed s jádrem 7.0.2-1, CentOS Stream 10 s jádrem 6.12.0-224, AlmaLinux 10 s jádrem 6.12.0-124.52.3 a Fedora 44 s jádrem 6.19.14-300.

Podobně jako u zranitelnosti Copy Fail, problémy v xfrm-ESP a RxRPC jsou způsobeny prováděním dešifrování dat na místě s použitím funkce splice(), která přenáší data mezi souborovými deskriptory a kanály (pipe) bez kopírování, pomocí předání odkazů na položky ve stránkovém cache. Posuny pro operaci zápisu byly vypočítány bez řádných kontrol, které by zohlednily použití přímého odkazu na položky ve stránkovém cache, což umožnilo prostřednictvím zasílání speciálně formulovaných požadavků přepsat 4 bajty na vybraném posunu a upravit obsah jakéhokoli souboru nacházejícího se ve stránkovém cache.

Všechny operace čtení ze souborů nejprve vrací obsah ze stránkového cache. V případě modifikace dat ve stránkovém cache povedou operace čtení ze souboru k vrácení ne skutečně uložených informací na úložišti, ale k pozměněným datům. Využití zranitelnosti spočívá ve změně stránkového cache pro spustitelný soubor s označením suid root. Například pro získání práv root lze přečíst spustitelný soubor /usr/bin/su, aby se umístil do stránkového cache, a poté se dosáhne vložení svého kódu do načteného obsahu tohoto souboru ve stránkovém cache. Následné spuštění utilitky "su" povede k tomu, že do paměti se načte nikoli originální spustitelný soubor z úložiště, ale pozměněná kopie ze stránkového cache.

Odhalení informací o zranitelnostech a koordinované vydávání oprav s odstraněním problémů bylo plánováno na 12. května, ale kvůli úniku informací musely být detaily o zranitelnosti publikovány před vydáním opravných aktualizací. Na konci dubna byly na veřejném mailing listu netdev publikovány patche pro rxrpc, ipsec a xfrm, aniž by bylo zmíněno, že se týkají odstranění zranitelnosti. 5. května maintainer subsystému IPsec přijal do git-repozitáře netdev změnu s navrženým opravou v modulu xfrm-esp, jejíž popis v mnoha ohledech opakoval popis problému, který vedl k zranitelnosti Copy Fail v modulu algif_aead. Jeden z bezpečnostních výzkumníků projevil zájem o tuto opravu, dokázal vytvořit funkční exploitable a publikoval ho, aniž by věděl, že je na odhalení informací o problému do 12. května uvaleno embargo.

Opravy jádra Linux a balíčků jádra ve distribucích zatím nebyly zveřejněny, ale k dispozici jsou záplaty na problémy — xfrm-esp a rxrpc. Identifikátory CVE nebyly přiřazeny, což komplikuje sledování aktualizace balíčků v distribucích. Jako obrané opatření můžete zablokovat načítání jádrových modulů esp4, esp6 a rxrpc: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"

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