Qualys waxay aqoonsatay nuglaansho (CVE-2021-4034) oo ku jirta qaybta nidaamka Polkit (oo hore u ahayd PolicyKit), taas oo loo isticmaalo qaybinta si loogu suurtogeliyo isticmaalayaasha aan mudnaanta lahayn inay sameeyaan ficillo u baahan xuquuqda marin u helidda oo sarreysa. Nuglaantu waxay u oggolaanaysaa isticmaale maxalli ah oo aan mudnaanta lahayn inuu kordhiyo mudnaantiisa si uu u xidideeyo oo uu u helo xakamayn buuxda oo nidaamka ah. Arrinta, oo loogu magac daray PwnKit, ayaa caan ku ah horumarinta ka faa'iidaysiga shaqeeya ee ka shaqeeya qaabaynta caadiga ah ee inta badan qaybinta. Linux.
Arrintu waxay ka jirtaa utility PolKit's pkexec, kaas oo lagu raro calanka xididka SUID waxaana loogu talagalay in lagu socodsiiyo amarada leh mudnaanta isticmaale kale, sida uu qabo xeerarka PolKit. Sababo la xiriira maaraynta khaldan ee dooda-khadka taliska ee loo gudbiyay pkexec, isticmaale aan mudnayn ayaa dhaafi kara sugida oo uu ku fulin karaa koodkooda mudnaanta xididka, iyada oo aan loo eegin sharciyada gelitaanka. Weerarku wuxuu u baahan yahay dejinta calanka SUID ee faylka la fulin karo ee ka kooban utility pkexec, iyadoon loo eegin goobaha iyo xaddidaadaha PolKit.
Pkexec ma hubiso ansaxnimada tirinta doodda khadka taliska (argc) ee la dhaafay markii la bilaabayay habraac. Horumariyayaasha pkexec waxay u qaateen in gelitaanka koowaad ee taxanaha argv uu had iyo jeer ku jiro magaca habka (pkexec), kan labaadna wuxuu ahaa NULL ama magaca amarka lagu bilaabay pkexec. Maadaama tirada doodda aan lagu hubin waxyaabaha dhabta ah ee taxanaha oo loo qaatay inay had iyo jeer ka weyn tahay 1, haddii taxane argv oo madhan loo gudbiyo habka, kaas oo uu oggol yahay shaqada fulinta ee Linux, pkexec wuxuu ula dhaqmay NULL dooddii ugu horreysay (magaca habka), iyo xusuusta ka dambeysa dhammaadka kaydka sida inta kale ee safka. |———+———+——————|———+———+———| | argv[0] | argv[1] | … | argv[argc] | envp[0] | envp[1] | … | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "barnaamij" "-option" NULL "qiimaha" "PATH=name" NULL
Dhibaatadu waxay tahay in envp array, oo ka kooban doorsoomayaasha deegaanka, loo qoondeeyay xusuusta ka dib array argv. Sidaa darteed, haddii argv array ay madhan tahay, pkexec waxay soo saartaa xogta ku saabsan amarka lagu maamulayo mudnaanta sare ee qaybta ugu horreysa ee jawiga doorsoomayaasha (argv[1] waxay la mid tahay envp [0]), waxa ku jira kaas oo lagu xakameyn karo weerarka.
Ka dib markii la helo qiimaha argv [1], pkexec waxay isku daydaa inay go'aamiso jidka buuxa ee faylka la fulin karo iyadoo la adeegsanayo waddooyinka faylka ee PATH oo u qor tilmaame xargo leh jidka buuxa ee dib ugu noqoshada argv [1] , kaas oo sidoo kale dib u qora qiimaha doorsoomiyaha deegaanka ee ugu horreeya, maaddaama argv [1] ay la mid tahay envp [0]. Iyada oo la adeegsanayo magaca doorsoomaha deegaanka ee ugu horreeya, weeraryahanku wuxuu bedeli karaa doorsoomiyaha deegaanka ee pkexec, tusaale ahaan, beddelka "LD_PRELOAD" doorsoomaha deegaanka, kaas oo aan loo oggolayn barnaamijyada suid, oo keenaya in maktabaddooda la wadaago lagu shubo habka.
Ka faa'iidaysiga shaqadu wuxuu beddelayaa doorsoomaha GCONV_PATH, kaas oo loo isticmaalo in lagu go'aamiyo jidka loo maro maktabadda beddelka dabeecadda si firfircooni leh marka la wacayo shaqada g_printerr (), kaas oo adeegsada iconv_open () koodka. Marka dib loo qeexo dariiqa GCONV_PATH, weeraryahanku waxa uu rari karaa maktabad gaar ah halkii uu ka isticmaali lahaa halbeegga maktabadda iconv. Maamulayaasha maktabadan waxaa la fulin doonaa inta lagu jiro heerka soo saarida fariinta qaladka, marka pkexec ay wali ku socoto mudnaanta xididka iyo ka hor inta aan ogolaanshaha fulinta la hubin.
Waxaa la ogaaday in, inkastoo ay arrinta sabab u tahay musuqmaasuqa xusuusta, haddana si kalsooni leh oo soo noqnoqota ayaa looga faa'iideysan karaa iyadoon loo eegin qaab-dhismeedka qalabka loo isticmaalay. Ubuntu, Debian, Fedora iyo CentOS, laakiin waxaa loo isticmaali karaa qaybinta kale sidoo kale. Faa'iidada asalka ah weli si guud looma heli karo, taasoo muujinaysa inay tahay mid aan fududayn oo ay si fudud u abuuri karaan cilmi-baarayaal kale. Sidaa darteed, waa muhiim in la rakibo balastar sida ugu dhakhsaha badan nidaamyada isticmaaleyaasha badan. Polkit sidoo kale waxaa loo heli karaa nidaamyada BSD iyo Solaris, laakiin faa'iidada lagu sameeyo lama baran. Waxaa la og yahay oo keliya in weerarka aan lagu fulin karin OpenBSD, maadaama OpenBSD kernel uusan u oggolaanayn qiimaha eber argc in loo gudbiyo wicitaanka execve().
Arrintu waxay jirtay tan iyo Maajo 2009, markii lagu daray amarka pkexec. Xal u helidda nuglaanta PolKit hadda waa la heli karaa iyadoo loo eegayo balastar (ma jiro siidayn sixitaan ah oo la sii daayay), laakiin tan iyo markii horumariyayaasha qaybinta lagu wargeliyay arrinta kahor, inta badan qaybinta waxay daabacday cusbooneysiin isku mar ah iyadoo la shaacinayo nuglaanta. Arrintu waxay ku xallisay RHEL 6/7/8. Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Qaanso Linux iyo Manjaro. Si ku meel gaar ah oo aad u joojiso nuglaanta, waxaad ka saari kartaa calanka xididka SUID barnaamijka /usr/bin/pkexec ("chmod 0755 /usr/bin/pkexec").
Source: opennet.ru
