korenska ranljivost sudo, ki vpliva na Linux Mint in Elementary OS

V komunali sudo, ki se uporablja za organizacijo izvajanja ukazov v imenu drugih uporabnikov, ugotovljeno ranljivost (CVE-2019-18634), ki vam omogoča, da povečate svoje privilegije v sistemu na root uporabnika. Težava se pojavi šele od izdaje sudo 1.7.1 pri uporabi možnosti »pwfeedback« v datoteki /etc/sudoers, ki je privzeto onemogočena, vendar omogočena v nekaterih distribucijah, kot sta Linux Mint in Elementary OS. Težava odpravljena v izdaji sudo 1.8.31, objavljeno pred nekaj urami. Ranljivost ostaja nepopravljena v distribucijskih kompletih.

Možnost “pwfeedback” omogoča prikaz znaka “*” za vsakim vnesenim znakom ob vnosu gesla. Zaradi Napake Pri izvedbi funkcije getln(), definirani v datoteki tgetpass.c, prevelik niz gesel, posredovan prek standardnega vhodnega toka (stdin), pod določenimi pogoji morda ne ustreza dodeljenemu medpomnilniku in prepiše druge podatke na skladu. Do prelivanja pride pri zagonu kode sudo kot root.

Bistvo problema je, da pri uporabi posebnega znaka ^U (čiščenje vrstice) med vnosom in če operacija pisanja ne uspe, koda, odgovorna za brisanje izhodnih znakov “*”, ponastavi podatke na razpoložljivo velikost medpomnilnika, vendar ne vrne kazalec na začetno vrednost, trenutni položaj v medpomnilniku. Drug dejavnik, ki prispeva k izkoriščanju, je pomanjkanje samodejnega onemogočanja načina »pwfeedback«, ko podatki ne prispejo s terminala, temveč prek vhodnega toka (ta napaka omogoča ustvarjanje pogojev za pojav napake pri snemanju, na primer v sistemih z enosmerno neimenovani kanali pride do napake pri poskusu pisanja na konec bralnega kanala).

Ker ima napadalec popoln nadzor nad prepisovanjem podatkov na skladu, ni težko ustvariti izkoriščanja, ki mu omogoča, da poveča svoje privilegije na root. Težavo lahko izkoristi kateri koli uporabnik, ne glede na dovoljenja sudo ali uporabniško specifične nastavitve v sudoers. Če želite blokirati težavo, se prepričajte, da v /etc/sudoers ni nastavitve »pwfeedback« in jo po potrebi onemogočite (»Privzeto !pwfeedback«). Če želite preveriti, ali obstaja težava, lahko zaženete kodo:

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Geslo: Napaka segmentacije

Vir: opennet.ru

Dodaj komentar