Ranljivost PolKit je omogočila pridobitev korenskega dostopa v večini distribucij Linuxa

Pred kratkim Kakovost objavil novico, da je ugotovil ranljivost (CVE-2021-4034) en sistemska komponenta polkit (prej PolicyKit), ki se uporablja v distribucijah, da neprivilegiranim uporabnikom omogoči izvajanje dejanj, ki zahtevajo povišane pravice dostopa.

Ranljivost omogoča neprivilegiranemu lokalnemu uporabniku, da svoje privilegije poviša na korenskega uporabnika in pridobite popoln nadzor nad sistemom. Težava ima kodno ime PwnKit in je znana po ustvarjanju delujočega izkoriščanja, ki se izvaja v privzetih nastavitvah v večini distribucij Linuxa.

Omenjeno je, da težava obstaja v pripomočku pkexec, ki je vključen v PolKit, ki prihaja s korensko zastavico SUID in je zasnovan za izvajanje ukazov s privilegiji drugih uporabnikov v skladu s pravili PolKit.

Zaradi napačnega ravnanja z argumenti iz ukazne vrstice, posredovane v pkexec, a neprivilegirani uporabnik lahko zaobide avtentikacijo in da vašo kodo izvaja kot root, ne glede na uveljavljena pravila dostopa. Za napad, ne glede na nastavitve in omejitve, ki so nastavljene v PolKitu, je dovolj, da je korenski atribut SUID za izvedljivo datoteko nastavljen s pripomočkom pkexec.

Pkexec ne preverja pravilnosti števila argumentov ukazne vrstice (argc), posredovanih ob zagonu procesa. Razvijalci pkexec so domnevali, da prvi vnos v matriki argv vedno vsebuje ime procesa (pkexec), drugi vnos pa je NULL ali ime ukaza, ki se izvede prek pkexec.

Ker število argumentov ni bilo primerjano z dejansko vsebino matrike in se je predpostavljalo, da je vedno večje od 1, če je bila v proces posredovana prazna argv matrika, kar omogoča Linuxova funkcija execve, je pkexec obravnaval NULL kot prvi argument ( proces ime), in naslednje za zmanjkalo pomnilnika medpomnilnika, kot naslednja vsebina matrike.

Težava je v tem, da je za matriko argv v pomnilniku matrika envp, ki vsebuje spremenljivke okolja. Tako pkexec s praznim nizom argv iz prvega elementa matrike s spremenljivkami okolja (argv[1] je postal identičen envp[0]), katerega vsebino lahko nadzirate, izvleče podatke o ukazu, ki se izvaja s povišanimi privilegiji. napadalec.

Ko pkexec prejme vrednost argv[1], poskuša določiti celotno pot do izvedljive datoteke z uporabo poti datoteke v PATH in zapiše kazalec na niz s celotno potjo nazaj do argv[1], kar vodi do prepisa vrednosti tudi prve spremenljivke okolja, saj je argv[1] identičen envp[0]. Z manipuliranjem imena prve spremenljivke okolja lahko napadalec nadomesti drugo spremenljivko okolja v pkexec, na primer nadomesti spremenljivko okolja "LD_PRELOAD", ki ni dovoljena v programih za suid, in da proces naloži svojo skupno knjižnico v procesu .

Delovni izkoriščanje uporablja zamenjavo spremenljivke GCONV_PATH, ki se uporablja za določitev poti do knjižnice za prekodiranje simbolov, ki se dinamično naloži, ko se kliče funkcija g_printerr(), ki v svoji kodi uporablja iconv_open().

Z redefiniranjem poti v GCONV_PATH lahko napadalec uspe naložiti ne običajno knjižnico iconv, temveč svojo knjižnico, katere gonilniki se bodo izvajali med sporočilom o napaki v fazi, ko pkexec še vedno deluje kot root in pred preverjanjem zagonskih dovoljenj.

Opaziti je, da čeprav je težava posledica okvare pomnilnika, jo je mogoče zanesljivo in večkrat izkoristiti, ne glede na uporabljeno arhitekturo strojne opreme.

Izkoriščanje pripravljeno uspešno preizkušen na Ubuntu, Debian, Fedora in CentOS, lahko pa se uporablja tudi v drugih distribucijah. Prvotni izkoriščanje še ni javno dostopno, kar kaže, da je nepomembno in ga lahko drugi raziskovalci zlahka poustvarijo, zato je pomembno, da posodobitev hitrega popravka čim prej namestite na sisteme za več uporabnikov.

Polkit je na voljo tudi za sisteme BSD in Solaris, vendar ni bil raziskan za izkoriščanje. Znano je, da napada ni mogoče izvesti na OpenBSD, saj jedro OpenBSD ne dovoljuje posredovanja ničelne vrednosti argc pri klicu execve().

Težava je prisotna od maja 2009, ko je bil dodan ukaz pkexec. Popravek za ranljivost v PolKitu je še vedno na voljo kot popravek (različica popravka ni oblikovana), a ker so bili razvijalci distribucije o težavi obveščeni vnaprej, je večina distribucij hkrati izdala posodobitev. kot razkritje informacij o ranljivosti.

Končno če vas zanima več o tem, podrobnosti lahko preverite v naslednjo povezavo.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.