PolKit ievainojamība ļāva iegūt root piekļuvi lielākajai daļai Linux izplatījumu

Nesen Qualy's izlaida ziņu, ka ir identificējis ievainojamību (CVE-2021-4034) en sistēmas sastāvdaļa polkit (agrāk PolicyKit), ko izmanto izplatījumos, lai ļautu lietotājiem bez priviliģētām darbībām veikt darbības, kurām nepieciešamas paaugstinātas piekļuves tiesības.

Neaizsargātība ļauj nepievilinātam lokālajam lietotājam paaugstināt savas privilēģijas root lietotājam un iegūstiet pilnīgu kontroli pār sistēmu. Problēma ir nosaukta ar koda nosaukumu PwnKit, un tā ir ievērojama ar to, ka tiek radīta darba izmantošana, kas lielākajā daļā Linux izplatījumu darbojas noklusējuma iestatījumos.

Tas ir minēts problēma pastāv utilītprogrammā pkexec, kas iekļauta PolKit, kas nāk ar SUID saknes karogu un ir paredzēts, lai izpildītu komandas ar citu lietotāju privilēģijām saskaņā ar PolKit noteikumiem.

Nepareizas argumentu apstrādes dēļ no komandrindas, kas nodota pkexec, a Nepriviliģēts lietotājs var apiet autentifikāciju un likt jūsu kodam palaist kā root, neatkarīgi no noteiktajiem piekļuves noteikumiem. Uzbrukumam neatkarīgi no tā, kādi iestatījumi un ierobežojumi ir iestatīti programmā PolKit, pietiek ar to, ka izpildāmā faila SUID saknes atribūts ir iestatīts ar pkexec utilītu.

Pkexec nepārbauda pareizību no komandrindas argumentu (argc) skaita, kas nodots, uzsākot procesu. Pkexec izstrādātāji pieņēma, ka pirmais ieraksts argv masīvā vienmēr satur procesa nosaukumu (pkexec), bet otrais ieraksts ir NULL vai komandas nosaukums, kas izpildīts, izmantojot pkexec.

Tā kā argumentu skaits netika salīdzināts ar faktisko masīva saturu un tika pieņemts, ka vienmēr ir lielāks par 1, ja procesam tika nodots tukšs argv masīvs, ko pieļauj Linux execve funkcija, pkexec kā pirmo argumentu apstrādāja NULL ( process nosaukums) un nākamais pēc buferatmiņas beigām kā nākamā masīva saturs.

Problēma ir tāda, ka pēc argv masīva atmiņā ir envp masīvs, kurā ir vides mainīgie. Tādējādi ar tukšu argv masīvu pkexec izvelk datus par komandas izpildi ar paaugstinātām privilēģijām no pirmā masīva elementa ar vides mainīgajiem (argv[1] kļuva identisks envp[0]), kura saturu var kontrolēt uzbrucējs.

Saņemot vērtību argv[1], pkexec mēģina noteikt pilnu ceļu uz izpildāmo failu, izmantojot faila ceļus PATH, un ieraksta rādītāju uz virkni ar pilnu ceļu atpakaļ uz argv[1], kas noved pie vērtības pārrakstīšanas. arī pirmā vides mainīgā, jo argv[1] ir identisks envp[0]. Manipulējot ar pirmā vides mainīgā nosaukumu, uzbrucējs pkexec var aizstāt ar citu vides mainīgo, piemēram, aizstāt vides mainīgo "LD_PRELOAD", kas nav atļauts suid programmās, un likt procesam procesa laikā ielādēt savu koplietojamo bibliotēku. .

Darba izmantojums izmanto GCONV_PATH mainīgo aizstāšanu, kuru izmanto, lai noteiktu ceļu uz simbolu pārkodēšanas bibliotēku, kas tiek dinamiski ielādēta, kad tiek izsaukta funkcija g_printerr(), kas savā kodā izmanto iconv_open().

Pārdefinējot ceļu GCONV_PATH, uzbrucējs var ielādēt nevis parasto iconv bibliotēku, bet gan savu bibliotēku, kuras draiveri tiks izpildīti kļūdas ziņojuma laikā posmā, kurā pkexec joprojām darbojas kā root, un pirms palaišanas pārbaudes. atļaujas.

Tiek novērots, ka lai gan problēma ir saistīta ar atmiņas bojājumu, to var droši un atkārtoti izmantot, neatkarīgi no izmantotās aparatūras arhitektūras.

Izmantošana sagatavota veiksmīgi pārbaudīts Ubuntu, Debian, Fedora un CentOS, bet to var izmantot arī citos izplatījumos. Sākotnējais izmantojums vēl nav publiski pieejams, norādot, ka tas ir mazsvarīgs un to var viegli izveidot no jauna ar citiem pētniekiem, tāpēc ir svarīgi pēc iespējas ātrāk instalēt labojumfailu atjauninājumu vairāku lietotāju sistēmās.

Polkit ir pieejams arī BSD un Solaris sistēmām, taču tas nav izpētīts izmantošanai. Ir zināms, ka uzbrukumu nevar veikt uz OpenBSD, jo OpenBSD kodols neļauj nodot nulles argc vērtību, izsaucot execve().

Problēma pastāv kopš 2009. gada maija, kad tika pievienota komanda pkexec. PolKit ievainojamības labojums joprojām ir pieejams kā ielāps (labojuma versija nav izveidota), taču, tā kā izplatīšanas izstrādātāji tika iepriekš informēti par problēmu, lielākā daļa izplatījumu vienlaikus izlaida atjauninājumu. ievainojamības informāciju.

Beidzot ja jūs interesē uzzināt vairāk par to, sīkāku informāciju varat pārbaudīt sadaļā šo saiti.


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta.

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.