Dėl „PolKit“ pažeidžiamumo daugumoje „Linux“ paskirstymų buvo suteikta šakninė prieiga

Neseniai „Qualys“ paskelbė žinią, kad nustatė pažeidžiamumą (CVE-2021-4034) en sistemos komponentas polkit (anksčiau PolicyKit), kuris naudojamas paskirstymuose, kad privilegijuoti vartotojai galėtų atlikti veiksmus, kuriems reikalingos padidintos prieigos teisės.

Pažeidžiamumas leidžia neprivilegijuotam vietiniam vartotojui pakelti savo teises į pagrindinį vartotoją ir visiškai valdyti sistemą. Problema pavadinta kodiniu pavadinimu PwnKit ir išsiskiria tuo, kad sukuria veikiantį išnaudojimą, kuris veikia pagal numatytuosius nustatymus daugelyje Linux platinimų.

Minima, kad problema egzistuoja „pkexec“ programoje, įtrauktoje į „PolKit“., kuris pateikiamas su SUID šaknies vėliava ir yra skirtas paleisti komandas su kitų vartotojų teisėmis pagal PolKit taisykles.

Dėl netinkamo argumentų tvarkymo iš komandinės eilutės, perduotos pkexec, a neprivilegijuotas vartotojas gali apeiti autentifikavimą ir jūsų kodą paleisti kaip root, nepaisant nustatytų prieigos taisyklių. Atakai, nesvarbu, kokie nustatymai ir apribojimai nustatyti PolKit, pakanka, kad vykdomojo failo SUID šakninis atributas būtų nustatytas su pkexec programa.

Pkexec netikrina teisingumo komandinės eilutės argumentų (argc), perduodamų pradedant procesą, skaičiaus. Pkexec kūrėjai manė, kad pirmame argv masyvo įraše visada yra proceso pavadinimas (pkexec), o antrasis įrašas yra arba NULL, arba komandos, vykdomos per pkexec, pavadinimas.

Kadangi argumentų skaičius nebuvo lyginamas su tikruoju masyvo turiniu ir buvo daroma prielaida, kad jis visada yra didesnis nei 1, jei procesui buvo perduotas tuščias argv masyvas, kurį leidžia Linux execve funkcija, pkexec laikė NULL pirmuoju argumentu ( procesas pavadinimas), o kitą po to, kai nebeliko buferinės atminties, kaip kitą masyvo turinį.

Problema ta, kad po argv masyvo atmintyje yra envp masyvas, kuriame yra aplinkos kintamieji. Taigi, naudojant tuščią argv masyvą, pkexec iš pirmojo masyvo elemento su aplinkos kintamaisiais ištraukia duomenis apie komandą, vykdomą su padidintomis teisėmis (argv[1] tapo identiškas envp[0]), kurio turinį galima valdyti naudojant užpuolikas.

Gavęs reikšmę argv[1], pkexec bando nustatyti visą kelią į vykdomąjį failą naudodamas PATH failo kelius ir įrašo žymeklį į eilutę su visu keliu atgal į argv[1], todėl vertė perrašoma. Pirmojo aplinkos kintamojo taip pat, nes argv[1] yra identiškas envp[0]. Manipuliuodamas pirmojo aplinkos kintamojo pavadinimu, užpuolikas gali pakeisti pkexec aplinkos kintamąjį kitu, pavyzdžiui, pakeisti aplinkos kintamąjį "LD_PRELOAD", kuris neleidžiamas suid programose, ir leisti procesui įkelti savo bendrinamą biblioteką. .

Darbinis išnaudojimas naudoja GCONV_PATH kintamųjų pakeitimą, kuris naudojamas norint nustatyti kelią į simbolių perkodavimo biblioteką, kuri dinamiškai įkeliama, kai iškviečiama funkcija g_printerr(), kuri savo kode naudoja iconv_open().

Iš naujo apibrėžęs kelią GCONV_PATH, užpuolikas gali įkelti ne įprastą iconv biblioteką, o savo biblioteką, kurios tvarkyklės bus vykdomos klaidos pranešimo metu, kai pkexec vis dar veikia kaip root ir prieš patikrinant paleidimą. leidimai.

Pastebima, kad, nors problema kyla dėl atminties sugadinimo, ją galima patikimai ir pakartotinai išnaudoti, nepriklausomai nuo naudojamos aparatinės įrangos architektūros.

Parengtas išnaudojimas sėkmingai išbandytas Ubuntu, Debian, Fedora ir CentOS, bet gali būti naudojamas ir kituose platinimuose. Pradinis išnaudojimas dar nėra viešai prieinamas, o tai rodo, kad jis yra trivialus ir gali būti lengvai atkurtas kitų tyrinėtojų, todėl svarbu kuo greičiau įdiegti karštųjų pataisų naujinimą kelių vartotojų sistemose.

„Polkit“ taip pat prieinama BSD ir Solaris sistemoms, tačiau nebuvo ištirta, kaip naudoti. Yra žinoma, kad ataka negali būti įvykdyta naudojant OpenBSD, nes OpenBSD branduolys neleidžia perduoti nulinės argc reikšmės iškviečiant execve().

Problema kilo nuo 2009 m. gegužės mėn., kai buvo pridėta komanda pkexec. „PolKit“ pažeidžiamumo pataisa vis dar prieinama kaip pataisa (pataisymo versija nesukurta), bet kadangi platinimo kūrėjai buvo iš anksto informuoti apie problemą, dauguma platinimų tuo pačiu metu išleido naujinimą. pažeidžiamumo informaciją.

Pagaliau jei norite sužinoti daugiau apie tai, išsamią informaciją galite sužinoti šią nuorodą.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.