Linuxi kernelis on avastatud kaks haavatavust. Need haavatavused on oma olemuselt sarnased paar päeva tagasi avalikustatud Copy Fail haavatavusega, kuid mõjutavad erinevaid alamsüsteeme – xfrm-ESP ja RxRPC. See haavatavuste seeria on koodnimega Dirty Frag (nimetatakse ka Copy Fail 2-ks). Need haavatavused võimaldavad privilegeerimata kasutajal saada juurõigused, kirjutades lehe vahemälus olevaid protsessiandmeid üle. Saadaval on ärakasutamise võimalus, mis töötab kõigis praegustes Linuxi distributsioonides. Haavatavus avalikustati enne paranduste avaldamist, kuid saadaval on ajutine lahendus.
Dirty Frag katab kaks erinevat haavatavust: esimene xfrm-ESP moodulis, mida kasutatakse IPsec krüpteerimistoimingute kiirendamiseks ESP (Encapsulating Security Payload) protokolli abil, ja teine RxRPC draiveris, mis rakendab AF_RXRPC sokliperekonda ja samanimelist RPC protokolli, mis töötab UDP kaudu. Iga haavatavus eraldi võetuna võimaldab juurkasutaja õigusi. xfrm-ESP haavatavus on Linuxi kernelis olnud alates 2017. aasta jaanuarist ja RxRPC haavatavus alates 2023. aasta juunist. Mõlemad probleemid on põhjustatud optimeeringutest, mis võimaldavad otsekirjutamist lehe vahemällu.
xfrm-ESP haavatavuse ärakasutamiseks peab kasutajal olema õigus luua nimeruume ja RxRPC haavatavuse ärakasutamiseks peab olema laaditud kerneli moodul rxrpc.ko. Näiteks Ubuntus takistavad AppArmori reeglid privilegeerimata kasutajatel nimeruumide loomist, kuid rxrpc.ko moodul laaditakse vaikimisi. Mõnel distributsioonil rxrpc.ko moodul puudub, kuid see ei blokeeri nimeruumide loomist. Probleemi avastanud uurija töötas välja kombineeritud ärakasutamise, mis on võimeline rünnama süsteemi mõlema haavatavuse kaudu, võimaldades probleemi ärakasutamist kõigis suuremates distributsioonides. On kinnitust leidnud, et rünnak töötab Ubuntu 24.04.4-s kerneliga 6.17.0-23, RHEL 10.1-s kerneliga 6.12.0-124.49.1, openSUSE Tumbleweedis kerneliga 7.0.2-1, CentOS Stream 10-s kerneliga 6.12.0-224, AlmaLinux 10-s kerneliga 6.12.0-124.52.3 ja Fedora 44-s kerneliga 6.19.14-300.
Nagu kopeerimise ebaõnnestumise haavatavuse puhul, on ka xfrm-ESP ja RxRPC probleemid põhjustatud kohapealsest andmete dekrüpteerimisest splice() funktsiooni abil, mis edastab andmeid failideskriptorite ja torude vahel ilma kopeerimata, edastades viiteid lehe vahemälu elementidele. Kirjutamisnihked arvutati ilma korralike kontrollideta, et arvestada otseste viidete kasutamist lehe vahemälu elementidele, mis võimaldab spetsiaalselt loodud päringutel kirjutada antud nihke juures üle 4 baiti ja muuta mis tahes lehe vahemälus oleva faili sisu.
Kõik failide lugemise toimingud hangivad esmalt sisu lehe vahemälust. Kui lehe vahemälus olevaid andmeid muudetakse, tagastavad failide lugemise toimingud asendatud andmed, mitte kettale salvestatud tegelikku teavet. Haavatavuse ärakasutamine taandub lehe vahemälu muutmisele käivitatava faili jaoks, millel on suid root lipp. Näiteks root õiguste saamiseks saab lugeda käivitatavat faili /usr/bin/su, et see lehe vahemälusse paigutada, ja seejärel asendada selle faili sisu lehe vahemälusse laadides oma koodi. Utiliidi "su" hilisem käivitamine toob kaasa lehe vahemälust muudetud koopia laadimise mällu, mitte kettalt pärit algse käivitatava faili laadimise.
Haavatavuse avalikustamine ja paranduste koordineeritud avaldamine oli kavandatud 12. maiks, kuid lekke tõttu tuli haavatavuse teave avaldada enne paranduste avaldamist. Aprilli lõpus postitati rxrpc, ipsec ja xfrm parandused netdev avalikku meililistti mainimata, et need on haavatavusega seotud. 5. mail aktsepteeris IPsec alamsüsteemi hooldaja muudatuse netdev Giti repositooriumis koos parandusettepanekuga xfrm-esp moodulis. Muudatuse kirjeldus oli suures osas identne probleemi kirjeldusega, mis viis algif_aead mooduli kopeerimise ebaõnnestumise haavatavuseni. Turvauurija hakkas sellest parandusest huvituma, suutis luua toimiva ärakasutamise ja avaldas selle, teadmata, et probleemi kohta teabe avaldamisele oli kehtestatud embargo kuni 12. maini.
Linuxi kerneli ja distributsioonides olevate kerneli pakettide parandustega värskendusi pole veel avaldatud, kuid probleemide lahendamiseks on saadaval paigad – xfrm-esp ja rxrpc. CVE identifikaatoreid pole määratud, mis raskendab pakettide värskenduste jälgimist distributsioonides. Lahendusena saate blokeerida kerneli moodulite esp4, esp6 ja rxrpc laadimise: 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"
Allikas: opennet.ru
