Nuglaanta halista ah ee PolKit oo u oggolaanaysa helitaanka xididka inta badan qaybinta Linux

Qualys waxay aqoonsatay nuglaanta (CVE-2021-4034) ee qaybta nidaamka Polkit (hore PolicyKit) ee loo isticmaalo qaybinta si loogu oggolaado isticmaalayaasha aan mudnaanta lahayn inay sameeyaan ficillo u baahan xuquuq gelitaanka sare. Nuglaanta waxay u ogolaataa isticmaale maxalli ah oo aan mudnayn inuu kor u qaado mudnaanta uu u leeyahay inuu xidido oo uu si buuxda u xakameeyo nidaamka. Dhibaatada waxaa loo magacaabay PwnKit waxayna caan ku tahay soo saarista ka faa'iidaysiga shaqo ee ku shaqeeya qaabeynta caadiga ah ee inta badan qaybinta Linux.

Dhibaatadu waxay ku jirtaa PolKit's pkexec utility, kaas oo la socda calanka xididka SUID waxaana loogu talagalay in lagu socodsiiyo amarada leh mudnaanta isticmaale kale sida waafaqsan xeerarka PolKit ee cayiman. Sababo la xiriira maaraynta khaldan ee dooda khadka taliska ee loo gudbiyay pkexec, isticmaale aan mudnayn waxa uu dhaafi karaa sugida oo uu u maamuli karaa koodka xididka, iyada oo aan loo eegin xeerarka gelitaanka ee la dejiyay. Weerarka, dhib malahan waxa dejinta iyo xaddidaadaha lagu qeexay PolKit, waa ku filan in sifada xididka SUID loo dejiyay faylka la fulin karo ee utility pkexec.

Pkexec ma hubiso ansaxnimada tirinta doodda khadka taliska (argc) ee la gudbiyay markii hawsha la bilaabayo. Soosaarayaasha pkexec waxay u maleeyeen in gelitaanka ugu horreeya ee array argv had iyo jeer ka kooban yahay magaca habka (pkexec), iyo kan labaad midkood qiimaha NULL ama magaca amarka lagu bilaabay pkexec. Maaddaama tirinta doodda aan laga eegin waxa dhabta ah ee shaxanka oo loo malaynayo in ay had iyo jeer ka weyn tahay 1, haddii habraaca la soo mariyo argv array madhan, sida shaqada Linux-ka ay u ogolaato, pkexec waxay ula dhaqmi doontaa NULL sidii doodda koowaad ( Magaca habka) iyo kan ku xiga sida ka baxsan xusuusta kaydinta, sida waxa ku xiga ee soo diyaari. |———+————+——+————|———+———+——+—————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "barnaamijka" "-opption" NULL "qiimaha" "PATH=magac" NULL

Dhibaatadu waxay tahay in ka bacdi argv array uu jiro envp array ee xasuusta ka kooban doorsoomayaasha deegaanka. Sidaa darteed, haddii argv array ay madhan tahay, pkexec waxay soo saartaa xogta ku saabsan amarka ku socota mudnaanta sare ee qaybta koowaad ee array oo leh doorsoomayaasha deegaanka (argv[1] waxay la mid tahay envp [0]), waxa ku jira kuwaas oo la xakameyn karo by weerarka.

Markuu helay qiimaha argv[1], pkexec wuxuu isku dayaa, isagoo tixgelinaya waddooyinka faylka ee PATH, si loo go'aamiyo dariiqa buuxa ee faylka la fulin karo oo u qoraya tilmaame xadhig leh jidka buuxa ee dib ugu noqoshada argv[1], kaas oo waxay keenaysaa in dib loo qoro qiimaha doorsoomiyaha deegaanka ee ugu horeeya, maadaama argv[1] uu la mid yahay envp[0]. Iyadoo la adeegsanaayo magaca doorsoomiyaha deegaanka koowaad, weeraryahanku wuxuu bedeli karaa doorsoome deegaan kale ee pkexec, tusaale ahaan, wuxuu ku badali karaa doorsoomaha deegaanka "LD_PRELOAD", kaas oo aan lagu ogolayn barnaamijyada suid, wuxuuna habayn karaa in maktabadooda la wadaago lagu shubo habka.

Ka faa'iidaysiga shaqadu waxay ku lug leedahay beddelka doorsoomaha GCONV_PATH, kaas oo loo isticmaalo in lagu go'aamiyo jidka loo maro maktabadda beddelka summada, si firfircoon loo raray marka la wacayo shaqada g_printerr (), koodka kaas oo isticmaala iconv_open(). Marka dib loo qeexo dariiqa GCONV_PATH, weeraryahanku waxa uu hubin karaa in aanay ahayn maktabadda caadiga ah ee iconv in la raray, laakiin maktabaddeeda, maamulayaasha kuwaas oo la fulin doono marka farriinta khaladka ah lagu soo bandhigo marxaladda pkexec ay wali ku socoto. xuquuqda xididka iyo ka hor ogolaanshaha bilaabista waa la hubiyaa.

Waxaa la xusay in inkastoo xaqiiqda ah in dhibaatada ay sababtay musuqmaasuqa xusuusta, waxaa lagu kalsoonaan karaa oo si isdaba-joog ah looga faa'iideysan karaa iyada oo aan loo eegin dhismaha qalabka loo isticmaalo. Ka faa'iidaysiga la diyaariyay ayaa si guul leh loogu tijaabiyay Ubuntu, Debian, Fedora iyo CentOS, laakiin sidoo kale waxaa loo isticmaali karaa qaybinta kale. Ka faa'iidaysiga asalka ah weli si guud looma heli karo, taas oo muujinaysa in ay tahay wax aan waxtar lahayn oo ay si fudud u abuuri karaan cilmi-baarayaal kale, sidaa darteed waa muhiim in sida ugu dhakhsaha badan loogu rakibo cusbooneysiinta balastar-ka hababka isticmaalayaasha badan. Polkit waxa kale oo diyaar u ah nidaamyada BSD iyo Solaris, laakiin looma baran in loo isticmaalo. Waxa la og yahay ayaa ah in weerarka aan lagu fulin karin OpenBSD, maadaama OpenBSD kernel uusan ogolayn in qiimaha null argc la dhaafo marka la yiraahdo execve().

Dhibaatadu waxay jirtay ilaa Maajo 2009, tan iyo markii lagu daray amarka pkexec. Hagaajinta u nuglaanshaha PolKit ayaa hadda loo heli karaa balastar ahaan (wax sii dayn balastar ah lama sii dayn), laakiin maadaama horumariyayaashii qaybinta hore loo ogeysiiyay dhibaatada, inta badan qaybinta ayaa daabacday cusboonaysiinta isku mar iyada oo la shaacinayo macluumaadka ku saabsan baylahda. Arrintu waxay ku go'an tahay RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux iyo Manjaro. Cabbiraadda ku meel gaadhka ah ee lagu joojinayo nuglaanta, waxaad ka saari kartaa calanka xididka SUID barnaamijka /usr/bin/pkexec ("chmod 0755 /usr/bin/pkexec").



Source: opennet.ru

Add a comment