Ranjivost eskalacije lokalnih prava u polkitovom pkexecu (CVE-2021-4034)


Istraživači iz Qualysa danas su objavili obavijest o ranjivosti eskalacije lokalnih prava u alatu pkexec, koji je instaliran kao dio paketa Polkit (bivši PolicyKit).
Taj paket se koristi za kontrolu prava na razini cijelog sustava; alat pkexec, koji se koristi kroz naredbeni redak, koristi se za definiranje koji autorizirani korisnik može izvršiti program kao drugi korisnik. Radi se o kritičnom alatu, zbog zahtjeva za kontrolom prava instalira se kao SUID, što je prikazano u nastavku:

$ ls -l /usr/bin/pkexec
-rwsr-xr-x 1 root root 31032 May 26  2021 /usr/bin/pkexec

Kao takav, odlična je meta napadaču. Istraživači iz Qualysa napisali su detaljan blog u kojem su objasnili o čemu se točno radi i kako dolazi do sigurnosnog propusta.

A sada evo tri zastrašujuće stvari o ovoj ranjivosti:
  1. Postoji više od 12 godina (!!!) otkada je predstavljena u commitu za pkexec u svibnju 2009. godine
  2. Zahvaćena verzija pkexeca je instalirana u svim popularnim distribucijama Linuxa: Ubuntu, Debian, Fedora i CentOS
  3. Vrlo je lagano reproducirati propust i radi u 100 posto slučajeva! Dopustite da ponovno naglasim: vrlo je lagano reproducirati propust!

Jesam li već rekao da je vrlo lagano reproducirati propust? Uspješno sam ga napravio, kako je prikazano na donjem screenshotu, gdje se izvršio na potpuno zakrpanom sustavu Ubuntu 20.04 – dakako, prije nego što se instalirala zakrpa za polkit (koja je, srećom, već vani):

Očekujemo da će propust ubrzo postati javan i da će ga napadači početi koristiti – to je posebno opasno za bilo koji višekorisnički sustav koji dozvoljava korisnicima pristup shellu.

Kako su mnoge velike distribucije već izdale zakrpe, najbolja opcija je da ih instalirate. Normalno, to morate napraviti na svim sustavima. Ukoliko pa ne možete ili zakrpe za vaš sustav još ne postoje, možete spriječiti ranjivosti micanjem SUID bita s alata pkexec; samo budite sigurno da time niste nešto nenamjerno potrgali.

Na kraju, za plave timove, propust će napraviti sljedeći sistemski log, koji se na mojem Ubuntuu nalazi u auth.log datoteci:

Jan 25 21:53:27 ubuntu pkexec[6999]: infigo: The value for the SHELL variable was not found the /etc/shells file [USER=root] [TTY=/dev/pts/1] [CWD=/home/infigo/exploit] [COMMAND=GCONV_PATH=./value=abc PATH=GCONV_PATH=. CHARSET=test SHELL=/test]

Kao što su u Qualysu također primijetili, prvi dio (boldan gore) može se koristiti za upozorenje, ali imajte na umu da je moguće iskoristiti ranjivost bez generiranja takvog log zapisa.

Dakako, svi proizvodi Infiga, kao i usluge, su dobili nadograđene indikatore napada te prate stanje sustava vezano uz ovaj sigurnosni propust.