Dirty Frag -haavoittuvuudet, jotka muokkaavat sivun välimuistia pääkäyttäjän oikeuksien saamiseksi kaikissa Linux-jakeluissa

Linux-ytimestä on löydetty kaksi haavoittuvuutta. Nämä haavoittuvuudet ovat luonteeltaan samankaltaisia ​​kuin muutama päivä sitten julkistettu Copy Fail -haavoittuvuus, mutta ne vaikuttavat eri alijärjestelmiin – xfrm-ESP:hen ja RxRPC:hen. Tämä haavoittuvuussarja on saanut koodinimen Dirty Frag (tunnetaan myös nimellä Copy Fail 2). Nämä haavoittuvuudet mahdollistavat etuoikeudettoman käyttäjän saada pääkäyttäjän oikeudet korvaamalla prosessitietoja sivun välimuistissa. Saatavilla on hyväksikäyttötapa, joka toimii kaikissa nykyisissä Linux-jakeluissa. Haavoittuvuus paljastettiin ennen korjauspäivitysten julkaisemista, mutta sille on saatavilla kiertotie.

Dirty Frag kattaa kaksi eri haavoittuvuutta: ensimmäinen on xfrm-ESP-moduulissa, jota käytetään IPsec-salaustoimintojen kiihdyttämiseen ESP (Encapsulating Security Payload) -protokollan avulla, ja toinen RxRPC-ajurissa, joka toteuttaa AF_RXRPC-socket-perheen ja samannimisen RPC-protokollan UDP:n yli. Kumpikin haavoittuvuus erikseen tarkasteltuna mahdollistaa pääkäyttäjän oikeudet. xfrm-ESP-haavoittuvuus on ollut Linux-ytimessä tammikuusta 2017 lähtien ja RxRPC-haavoittuvuus kesäkuusta 2023 lähtien. Molemmat ongelmat johtuvat optimoinneista, jotka sallivat suorat kirjoitukset sivun välimuistiin.

xfrm-ESP-haavoittuvuuden hyödyntämiseksi käyttäjällä on oltava oikeus luoda nimiavaruuksia, ja RxRPC-haavoittuvuuden hyödyntämiseksi rxrpc.ko-ytimen moduuli on ladattava. Esimerkiksi Ubuntussa AppArmor-säännöt estävät etuoikeudettomia käyttäjiä luomasta nimiavaruuksia, mutta rxrpc.ko-moduuli ladataan oletuksena. Joissakin jakeluissa rxrpc.ko-moduuli puuttuu, mutta ne eivät estä nimiavaruuksien luomista. Ongelman löytänyt tutkija kehitti yhdistetyn hyväksikäyttötavan, joka pystyy hyökkäämään järjestelmään molempien haavoittuvuuksien kautta, jolloin ongelmaa voidaan hyödyntää kaikissa tärkeimmissä jakeluissa. Hyökkäyksen on vahvistettu toimivan Ubuntu 24.04.4:ssä ytimellä 6.17.0-23, RHEL 10.1:ssä ytimellä 6.12.0-124.49.1, openSUSE Tumbleweedissä ytimellä 7.0.2-1, CentOS Stream 10:ssä ytimellä 6.12.0-224, AlmaLinux 10:ssä ytimellä 6.12.0-124.52.3 ja Fedora 44:ssä ytimellä 6.19.14-300.

Kuten Copy Fail -haavoittuvuuden kohdalla, xfrm-ESP:n ja RxRPC:n ongelmat johtuvat paikallisesta datan salauksen purkamisesta splice()-funktion avulla, joka siirtää dataa tiedostokuvaajien ja putkien välillä kopioimatta välittämällä viittauksia sivuvälimuistin elementteihin. Kirjoitusoffsetit laskettiin ilman asianmukaisia ​​tarkistuksia, joilla otettiin huomioon suorat viittaukset sivuvälimuistin elementteihin, mikä mahdollisti erityisesti muotoiltujen pyyntöjen ylikirjoittamisen neljän tavun kohdalla tietyllä offsetilla ja minkä tahansa sivuvälimuistissa olevan tiedoston sisällön muokkaamisen.

Kaikki tiedostonlukutoiminnot hakevat ensin sivuvälimuistin sisällön. Jos sivuvälimuistin tietoja muokataan, tiedostonlukutoiminnot palauttavat korvattuja tietoja, eivätkä asemaan tallennettuja varsinaisia ​​tietoja. Haavoittuvuuden hyödyntäminen tarkoittaa, että sivuvälimuistia muokataan suoritettavan tiedoston osalta, jolla on suid-pääkäyttäjän oikeudet. Esimerkiksi pääkäyttäjän oikeuksien saamiseksi voidaan lukea suoritettava tiedosto /usr/bin/su ja sijoittaa se sivuvälimuistiin, ja sitten korvata omaa koodiaan tämän tiedoston sisältöön, joka ladataan sivuvälimuistiin. "su"-apuohjelman myöhempi suorittaminen johtaa siihen, että sivuvälimuistista ladataan muokattu kopio muistiin, eikä asemasta löytyvää alkuperäistä suoritettavaa tiedostoa.

Haavoittuvuuden julkistaminen ja korjausten koordinoitu julkaisu oli ajoitettu 12. toukokuuta, mutta vuodon vuoksi haavoittuvuustiedot jouduttiin julkaisemaan ennen korjausten julkaisua. Huhtikuun lopulla rxrpc:n, ipsecin ja xfrm:n korjaustiedostot lähetettiin netdevin julkiselle postituslistalle mainitsematta, että ne liittyivät haavoittuvuuteen. 5. toukokuuta IPsec-alijärjestelmän ylläpitäjä hyväksyi muutoksen netdev Git -arkistoon ja ehdotti korjausta xfrm-esp-moduulissa. Muutoksen kuvaus oli pitkälti identtinen algif_aead-moduulin Copy Fail -haavoittuvuuteen johtaneen ongelman kuvauksen kanssa. Tietoturvatutkija kiinnostui tästä korjauksesta, onnistui luomaan toimivan hyökkäysmenetelmän ja julkaisi sen tietämättä, että ongelmaa koskevien tietojen paljastamiselle oli asetettu rajoitus 12. toukokuuta asti.

Linux-ytimen ja jakeluissa olevien kernel-pakettien korjauksia sisältäviä päivityksiä ei ole vielä julkaistu, mutta ongelmiin liittyviä korjauspäivityksiä – xfrm-esp ja rxrpc – on saatavilla. CVE-tunnisteita ei ole määritetty, mikä vaikeuttaa pakettipäivitysten seurantaa jakeluissa. Voit kiertää ongelman estämällä esp4-, esp6- ja rxrpc-ytimen moduulien lataamisen: 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"

Lähde: opennet.ru