Zraniteľnosti Dirty Frag, ktoré menia stránkovú cache na získanie root prístupu v akýchkoľvek distribúciách Linuxu

V jadre Linux boli identifikované dve zraniteľnosti, ktoré sú v podstate podobné pred niekoľkými dňami odhalenej zraniteľnosti Copy Fail, ale prejavujú sa v iných podsystemoch — xfrm-ESP a RxRPC. Tieto série zraniteľností dostali kódové meno Dirty Frag (objavuje sa aj odkaz Copy Fail 2). Zraniteľnosti umožňujú nepriviligovanému používateľovi získať práva root prepísaním dát procesu v stránkovom cache. Exploit je dostupný a funguje vo všetkých aktuálnych distribúciách Linuxu. Informácie o zraniteľnosti boli sprístupnené pred publikovaním opráv, ale existuje obchádzajúca metóda na blokovanie problému.

Dirty Frag pokrýva dve rôzne zraniteľnosti: prvá v module xfrm-ESP, ktorý sa používa na urýchlenie operácií šifrovania v IPsec s protokolom ESP (Encapsulating Security Payload), a druhá v ovládači RxRPC, ktorý implementuje rodinu socketov AF_RXRPC a rovnomenný RPC protokol, ktorý funguje nad UDP. Každá z zraniteľností samostatne umožňuje získať práva root. Zraniteľnosť v xfrm-ESP sa prejavuje v jadre Linuxu od januára 2017, zatiaľ čo zraniteľnosť v RxRPC je prítomná od júna 2023. Obe problémy sú spôsobené optimalizáciami, ktoré umožňujú priame zapisovanie do stránkového cache.

Na využitie zraniteľnosti v xfrm-ESP musí mať používateľ práva na vytváranie priestorov mien, a na využitie zraniteľnosti v RxRPC musí byť možnosť načítať modul jadra rxrpc.ko. Napríklad v Ubuntu pravidlá AppArmor zakazujú nepriviligovanému používateľovi vytváranie priestorov mien, ale modul rxrpc.ko je predvolene načítaný. V niektorých distribúciách modul rxrpc.ko chýba, ale vytvorenie priestorov mien nie je blokované. Výskumník, ktorý objavil problém, pripravil kombinovaný exploit, ktorý môže zaútočiť na systém cez obe zraniteľnosti, čo umožňuje zneužitie problému vo všetkých hlavných distribúciách. Funkčnosť exploitu bola potvrdená v Ubuntu 24.04.4 s jadrom 6.17.0-23, RHEL 10.1 s jadrom 6.12.0-124.49.1, openSUSE Tumbleweed s jadrom 7.0.2-1, CentOS Stream 10 s jadrom 6.12.0-224, AlmaLinux 10 s jadrom 6.12.0-124.52.3 a Fedora 44 s jadrom 6.19.14-300.

Ako v prípade zraniteľnosti Copy Fail, problémy v xfrm-ESP a RxRPC sú spôsobené vykonávaním dešifrovania dát na mieste s použitím funkcie splice(), ktorá prenáša dáta medzi súborovými popisovačmi a kanálmi (pipe) bez kopírovania, prenosom odkazov na prvky v stránkovom cache. Offsety pre zápisovú operáciu sa vypočítavali bez riadnych kontrol, ktoré by zohľadnili použitie priameho odkazu na prvky v stránkovom cache, čo umožnilo cez zasielanie špeciálne upravených požiadaviek prepísať 4 bajty na zvolený offset a zmeniť obsah akéhokoľvek súboru nachádzajúceho sa v stránkovom cache.

Všetky operácie čítania zo súborov najprv vracajú obsah zo stránkového cache. V prípade modifikácie dát v stránkovom cache operácie čítania zo súboru povedú k vráteniu nie reálne uložených informácií na úložisku, ale nahradených dát. Využitie zraniteľnosti spočíva v zmene stránkového cache pre spustiteľný súbor s praporom suid root. Napríklad, pre získanie práv root možno prečítať spustiteľný súbor /usr/bin/su, aby sa umiestnil do stránkového cache, po čom dosiahnuť vloženie vlastného kódu do načítaného obsahu tohto súboru v stránkovom cache. Následné spustenie utilitky "su" spôsobí, že do pamäte sa načíta nie originálny spustiteľný súbor z úložiska, ale zmenená kópia zo stránkového cache.

Zverejnenie informácií o zraniteľnostiach a koordinované vydanie aktualizácií na odstránenie problémov bolo naplánované na 12. mája, ale kvôli úniku informácií museli byť údaje o zraniteľnosti zverejnené pred vydaním opráv. Na konci apríla boli na verejnom mailing liste netdev zverejnené opravy pre rxrpc, ipsec a xfrm, bez zmienky o tom, že súvisia s odstránením zraniteľnosti. 5. mája udržiavateľ pod systému IPsec prijal do git-repozitára netdev zmenu s navrhovanou opravou v module xfrm-esp, ktorého popis do značnej miery opakoval popis problému, ktorý viedol k zraniteľnosti Copy Fail v module algif_aead. Jeden z bezpečnostných výskumníkov sa o túto opravu zaujímal, dokázal vytvoriť funkčný exploit a zverejnil ho, nevediac o tom, že na zverejnenie informácií o probléme je do 12. mája uvalené embargo.

Aktualizácie s opravami pre jadro Linux a balíky s jadrom v distribúciách zatiaľ neboli zverejnené, ale existujú opravné záplaty na odstraňovanie problémov - xfrm-esp a rxrpc. CVE identifikátory neboli priradené, čo sťažuje sledovanie aktualizácie balíkov v distribúciách. Ako obchádzajúcu ochranu je možné zablokovať načítanie modulov jadra 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

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster