Tulaga fa'aletonu i PolKit fa'atagaina a'a i luga ole tele o fa'asalalauga Linux

Ua faailoa mai e Qualys se tulaga vaivai (CVE-2021-4034) i le vaega o le Polkit (muamua PolicyKit) o ​​loʻo faʻaaogaina i tufatufaga e faʻataga ai tagata faʻapitoa e faʻatino gaioiga e manaʻomia ai aia tatau avanoa maualuga. O le fa'aletonu e mafai ai e se tagata fa'aoga fa'apitonu'u fa'apitoa ona fa'ateleina o latou avanoa e a'a ma maua ai le pulea atoatoa o le faiga. O le faʻafitauli na faʻaigoaina PwnKit ma e lauiloa mo le faia o se faʻaoga galue e alu i le faʻaogaina le faʻaogaina i le tele o faʻasalalauga Linux.

O le faʻafitauli o loʻo i ai i le PolKit's pkexec utility, lea e sau ma le fuʻa aʻa SUID ma ua mamanuina e faʻatautaia ai faʻatonuga ma avanoa o se isi tagata faʻaoga e tusa ai ma tulafono faʻapitoa PolKit. Ona o le le sa'o o le fa'afoeina o fa'aupuga o le laina fa'atonu na tu'uina atu i le pkexec, e mafai e se tagata fa'apitoa ona fa'aogaina le fa'amaoni ma mafua ai ona fa'agasolo le latou code e avea ma a'a, tusa lava po'o le a le fa'atonuga o tulafono fa'atonu. Mo se osofaʻiga, e le afaina po o le a le faʻatulagaga ma tapulaʻa o loʻo faʻamaonia i PolKit, ua lava le faʻatulagaina o le aʻa o le SUID mo le faila faila ma le aoga pkexec.

E le siakiina e Pkexec le aoga o le numera o finauga laina (argc) na pasia pe a amataina se gaioiga. O le au atiaʻe o pkexec na manatu o le uluaʻi faʻamatalaga i le argv array o loʻo i ai i taimi uma le igoa o le faagasologa (pkexec), ma le lona lua o le NULL tau poʻo le igoa o le poloaiga na faʻalauiloaina e ala i pkexec. Talu ai e leʻi siakiina le numera o finauga e faasaga i mea moni o le laina ma sa manatu e sili atu nai lo le 1, pe a fai e pasia se faʻagasologa o le argv array gaogao, e pei ona mafai e le Linux execve function, pkexec o le a togafitia NULL o le finauga muamua ( le igoa o le faagasologa) ma le isi o loʻo i fafo atu o le faʻamaufaʻailoga, pei o mea o loʻo mulimuli mai o le laina. |———+———+——+—————|———+———+——+————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "polokalame" "-option" NULL "taua" "PATH=igoa" NULL

O le faʻafitauli o le a maeʻa le argv array o loʻo i ai se envp array i le manatua o loʻo i ai suiga o le siosiomaga. O lea la, afai o le argv array e gaogao, pkexec aveese faʻamatalaga e uiga i le faʻatonuga o loʻo faʻatautaia ma tulaga maualuga mai le elemene muamua o le laina faʻatasi ai ma fesuiaiga o le siosiomaga (argv [1] ua tutusa ma envp [0]), o mea e mafai ona pulea. e le tagata osofaia.

O le mauaina o le tau o le argv[1], e taumafai le pkexec, i le amanaia o ala faila i le PATH, e fuafua le ala atoa i le faila faila ma tusi se faasinoala i le manoa ma le ala atoa i tua i argv[1], lea e taʻitaʻia ai le soloia o le tau o le suiga muamua o le siosiomaga, talu ai argv[1] e tutusa ma envp[0]. E ala i le faʻaogaina o le igoa o le suiga muamua o le siosiomaga, e mafai e le tagata osofaʻi ona suitulaga i se isi fesuiaiga o le siosiomaga i pkexec, mo se faʻataʻitaʻiga, sui le "LD_PRELOAD" fesuiaiga o le siosiomaga, lea e le faʻatagaina i suid polokalame, ma faʻatulaga a latou faletusi faʻasoa e utaina i totonu o le faiga.

O le fa'aogaina o galuega e aofia ai le suitulaga o le GCONV_PATH fesuia'i, lea e fa'aaogaina e fuafua ai le ala i le fa'ailoga transcoding faletusi, fa'atumuina fa'amalosi pe a vala'au i le g_printerr() galuega, o le fa'ailoga lea e fa'aaoga ai iconv_open(). E ala i le toe faʻamalamalamaina o le ala i le GCONV_PATH, e mafai e le tagata osofaʻi ona faʻamautinoa e le o le faletusi iconv masani o loʻo faʻapipiʻiina, ae o lana lava faletusi, o le a faʻataunuʻuina le au faʻatonu pe a faʻaalia se feʻau sese i le tulaga o loʻo faʻaauau pea le pkexec. aia tatau a'a ma a'o le'i fa'alauiloa fa'atagaga e siaki.

E maitauina e ui lava i le mea moni o le faʻafitauli e mafua mai i le faʻaleagaina o le manatua, e mafai ona faʻalagolago ma faʻaaogaina e tusa lava po o le a le faʻaogaina o meafaigaluega. Ua maeʻa faʻataʻitaʻiina le faʻaogaina o mea na saunia i Ubuntu, Debian, Fedora ma CentOS, ae mafai foi ona faʻaoga i isi tufatufaga. O le uluai faʻaoga e leʻi faʻaalia i le lautele, e faʻaalia ai e le taua tele ma e mafai ona faigofie ona toe faia e isi tagata suʻesuʻe, o lea e taua ai le faʻapipiʻiina o le patch update i se taimi vave i luga o le tele-user system. O loʻo avanoa foʻi Polkit mo BSD ma Solaris, ae e leʻi suʻesuʻeina mo le faʻaogaina i luga. O le mea ua iloa e le mafai ona faia le osofaʻiga i luga o OpenBSD, talu ai o le OpenBSD kernel e le faʻatagaina le null argc tau e pasia pe a valaauina execve().

O le faʻafitauli na i ai talu mai Me 2009, talu mai le faʻaopoopoga o le pkexec command. O loʻo avanoa nei le faʻaogaina o le vaivai o PolKit e pei o se patch (e leai se faʻasalalauga faʻasaʻo na faʻasaʻolotoina), ae talu ai na logoina e le au atinaʻe tufatufa le faʻafitauli i le taimi muamua, o le tele o faʻasalalauga na faʻasalalau le faʻafouga i le taimi e tasi ma le faʻaalia o faʻamatalaga e uiga i le faʻafitauli. O loʻo faʻamauina le mataupu ile RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux ma Manjaro. I le avea ai o se faiga le tumau e poloka ai le faʻafitauli, e mafai ona e aveese le fuʻa aʻa SUID mai le polokalame /usr/bin/pkexec (“chmod 0755 /usr/bin/pkexec”).



puna: opennet.ru

Faaopoopo i ai se faamatalaga