Vulnerabbiltà kritika fil-PolKit li tippermetti aċċess għall-għeruq fuq il-biċċa l-kbira tad-distribuzzjonijiet tal-Linux

Qualys identifika vulnerabbiltà (CVE-2021-4034) fil-komponent tas-sistema Polkit (li qabel kien PolicyKit) użat fid-distribuzzjonijiet biex jippermetti lill-utenti mhux privileġġjati jwettqu azzjonijiet li jeħtieġu drittijiet ta 'aċċess elevati. Il-vulnerabbiltà tippermetti lil utent lokali mhux privileġġjat li jeskala l-privileġġi tiegħu biex jelimina u jikseb kontroll sħiħ tas-sistema. Il-problema kienet isem kodiċi PwnKit u hija notevoli għall-produzzjoni ta 'exploit ta' ħidma li taħdem fil-konfigurazzjoni default fuq il-biċċa l-kbira tad-distribuzzjonijiet Linux.

Il-problema hija preżenti fl-utilità pkexec ta' PolKit, li tiġi mal-bandiera ta' l-għerq SUID u hija mfassla biex tmexxi kmandi bil-privileġġi ta' utent ieħor skont ir-regoli speċifikati ta' PolKit. Minħabba l-immaniġġjar ħażin tal-argumenti tal-linja tal-kmand mgħoddija lil pkexec, utent mhux privileġġjat jista’ jevita l-awtentikazzjoni u jmexxi l-kodiċi tiegħu bħala root, irrispettivament mir-regoli tal-aċċess stabbiliti. Għal attakk, ma jimpurtax liema settings u restrizzjonijiet huma speċifikati f'PolKit, huwa biżżejjed li l-attribut root SUID ikun stabbilit għall-fajl eżekutibbli bl-utilità pkexec.

Pkexec ma jiċċekkjax il-validità tal-għadd tal-argument tal-linja tal-kmand (argc) mgħoddi meta jibda proċess. L-iżviluppaturi ta 'pkexec assumaw li l-ewwel daħla fl-array argv dejjem fiha l-isem tal-proċess (pkexec), u t-tieni jew valur NULL jew l-isem tal-kmand imniedi permezz ta' pkexec. Peress li l-għadd tal-argumenti ma kienx iċċekkjat mal-kontenut attwali tal-array u kien preżunt li kien dejjem akbar minn 1, jekk proċess ikun għadda minn array argv vojta, kif tippermetti l-funzjoni execve Linux, pkexec jittratta NULL bħala l-ewwel argument ( l-isem tal-proċess) u dak li jmiss bħala barra l-memorja buffer, bħall-kontenut sussegwenti tal-firxa. |———+———+——+————|———+———+——+————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "programm" "-għażla" NULL "valur" "PATH=isem" NULL

Il-problema hija li wara l-array argv hemm firxa envp fil-memorja li fiha varjabbli ambjentali. Għalhekk, jekk l-array argv tkun vojta, pkexec estratti data dwar il-kmand run bi privileġġi elevati mill-ewwel element tal-firxa b'varjabbli ambjentali (argv[1] sar identiku għal envp[0]), li l-kontenut tagħha jista 'jiġi kkontrollat mill-attakkant.

Wara li rċieva l-valur ta' argv[1], pkexec jipprova, filwaqt li jqis il-mogħdijiet tal-fajl f'PATH, biex jiddetermina l-mogħdija sħiħa għall-fajl eżekutibbli u jikteb pointer għall-sekwenza bil-mogħdija sħiħa lura għal argv[1], li twassal għall-kitba fuq il-valur tal-ewwel varjabbli ambjentali, peress li argv[1] huwa identiku għal envp[0]. Billi jimmanipula l-isem tal-ewwel varjabbli tal-ambjent, attakkant jista’ jissostitwixxi varjabbli tal-ambjent ieħor f’pkexec, pereżempju, jissostitwixxi l-varjabbli tal-ambjent “LD_PRELOAD”, li mhux permess fi programmi suid, u jirranġa biex il-librerija kondiviża tagħhom titgħabba fil- proċess.

L-isfruttament tax-xogħol jinvolvi li tissostitwixxi l-varjabbli GCONV_PATH, li tintuża biex tiddetermina l-mogħdija lejn il-librerija tat-transcoding tas-simboli, mgħobbija b'mod dinamiku meta ssejjaħ il-funzjoni g_printerr(), li l-kodiċi tagħha juża iconv_open(). Billi tiddefinixxi mill-ġdid il-mogħdija f'GCONV_PATH, attakkant jista 'jiżgura li mhix il-librerija standard iconv li hija mgħobbija, iżda l-librerija tagħha stess, li l-handlers minnha se jiġu eżegwiti meta jintwera messaġġ ta' żball fl-istadju meta pkexec ikun għadu għaddej bi id-drittijiet tal-għeruq u qabel il-permessi tat-tnedija jiġu ċċekkjati.

Huwa nnutat li minkejja l-fatt li l-problema hija kkawżata minn korruzzjoni tal-memorja, tista 'tiġi sfruttata b'mod affidabbli u ripetut irrispettivament mill-arkitettura tal-ħardwer użata. L-isfruttament ippreparat ġie ttestjat b'suċċess fuq Ubuntu, Debian, Fedora u CentOS, iżda jista 'jintuża wkoll fuq distribuzzjonijiet oħra. L-isfruttament oriġinali għadu mhux disponibbli pubblikament, li jindika li huwa trivjali u jista 'jiġi rikrejat faċilment minn riċerkaturi oħra, għalhekk huwa importanti li tinstalla l-aġġornament tal-garża kemm jista' jkun malajr fuq sistemi multi-utenti. Polkit huwa wkoll disponibbli għal sistemi BSD u Solaris, iżda ma ġiex studjat għall-użu fuqhom. Li hu magħruf huwa li l-attakk ma jistax jitwettaq fuq OpenBSD, peress li l-kernel OpenBSD ma jippermettix li jiġi mgħoddi valur argc null meta tissejjaħ execve().

Il-problema ilha preżenti minn Mejju 2009, minn meta ż-żieda tal-kmand pkexec. It-tiswija għall-vulnerabbiltà PolKit bħalissa hija disponibbli bħala garża (l-ebda rilaxx tal-garża ma ġiet rilaxxata), iżda peress li l-iżviluppaturi tad-distribuzzjoni ġew notifikati bil-problema bil-quddiem, il-biċċa l-kbira tad-distribuzzjonijiet ippubblikaw l-aġġornament simultanjament mal-iżvelar ta 'informazzjoni dwar il-vulnerabbiltà. Il-kwistjoni hija ffissata f'RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux u Manjaro. Bħala miżura temporanja biex timblokka l-vulnerabbiltà, tista 'tneħħi l-bandiera tal-għerq SUID mill-programm /usr/bin/pkexec ("chmod 0755 /usr/bin/pkexec").



Sors: opennet.ru

Żid kumment