Ọdịmma dị oke egwu na PolKit na-enye ohere ịnweta mgbọrọgwụ na ọtụtụ nkesa Linux

Qualys achọpụtala adịghị ike (CVE-2021-4034) na akụrụngwa sistemu Polkit (nke bụbu PolicyKit) ejiri na nkesa iji nye ndị ọrụ enweghị ohere ịme omume chọrọ ikike ohere dị elu. Ọdịmma ahụ na-enye ohere ka onye ọrụ mpaghara na-enweghị ohere ịbawanye ohere ha iji gbanye mgbọrọgwụ wee nweta njikwa zuru oke nke usoro ahụ. Akpọrọ nsogbu ahụ PwnKit ma bụrụ ihe ama ama maka iwepụta nrigbu na-arụ ọrụ na-arụ na nhazi ndabara na ọtụtụ nkesa Linux.

Nsogbu a dị na PolKit's pkexec utility, nke na-abịa na ọkọlọtọ SUID mgbọrọgwụ ma emebere ya iji mee iwu site na ikike nke onye ọrụ ọzọ dịka iwu PolKit akọwapụtara. N'ihi njikwa na-ezighi ezi nke arụmụka ahịrị iwu gafere na pkexec, onye ọrụ na-enweghị ohere nwere ike gafere nyocha wee mee ka koodu ha na-agba ọsọ dị ka mgbọrọgwụ, n'agbanyeghị agbanyeghị iwu nnabata etinyere. Maka mbuso agha, ọ baghị uru ihe ntọala na mmachi akọwapụtara na PolKit, o zuru ezu na edobere njirimara mgbọrọgwụ SUID maka faịlụ enwere ike iji ngwa pkexec.

Pkexec anaghị elele izi ezi nke ọnụọgụ arụmụka ahịrị iwu (argc) gafere mgbe ịmalite usoro. Ndị mmepe nke pkexec chere na ntinye nke mbụ na argv array na-enwekarị aha usoro ahụ (pkexec), na nke abụọ ma ọ bụ uru NULL ma ọ bụ aha iwu nke ewepụtara site na pkexec. Ebe ọ bụ na enyochaghị ọnụ ọgụgụ arụmụka ahụ megide ọdịnaya nke nhazi ahụ ma chee na ọ na-adịkarị karịa 1, ma ọ bụrụ na agafere usoro argv efu, dị ka ọrụ ọrụ Linux na-enye ohere, pkexec ga-emeso NULL dị ka arụmụka mbụ. aha usoro) na nke na-esote dị ka mpụga ebe nchekwa nchekwa, dị ka ọdịnaya na-esote nke nhazi ahụ. |———+————+——+————|————————+————————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—--+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "mmemme" "-option" NULL "uru" "PATH= aha" NULL

Nsogbu bụ na mgbe argv array nwere usoro envp na ebe nchekwa nwere mgbanwe gburugburu ebe obibi. Ya mere, ọ bụrụ na argv array bụ ihe efu, pkexec na-ewepụta data gbasara iwu ahụ na-eji ihe ùgwù dị elu sitere na ihe mbụ nke nhazi ahụ na mgbanwe gburugburu ebe obibi (argv[1] ghọrọ otu na envp [0]), ọdịnaya nke nwere ike ịchịkwa ya. site n'aka onye agha.

N'ịbụ onye natara uru nke argv[1], pkexec na-agba mbọ, na-eburu n'uche ụzọ faịlụ dị na PATH, iji chọpụta ụzọ zuru ezu na faịlụ a na-arụ ọrụ ma dee ihe nrịbama na eriri na ụzọ zuru ezu azụ na argv[1], nke na-eduga na idegharị uru nke mgbanwe gburugburu ebe obibi mbụ, ebe ọ bụ na argv[1] yiri envp[0]. Site n'ịgbanwe aha nke mgbanwe gburugburu ebe obibi mbụ, onye na-awakpo nwere ike dochie mgbanwe gburugburu ebe ọzọ na pkexec, dịka ọmụmaatụ, dochie "LD_PRELOAD" mgbanwe gburugburu ebe obibi, nke anaghị anabata na mmemme suid, ma hazie ka ebuba n'ọbá akwụkwọ ha na-ekekọrịta n'ime ụlọ ọrụ ahụ. usoro.

Nrigbu a na-arụ ọrụ gụnyere dochie mgbanwe GCONV_PATH, nke a na-eji achọpụta ụzọ gaa n'ọbá akwụkwọ transcoding akara, na-arụ ọrụ nke ọma mgbe ị na-akpọ ọrụ g_printerr (), koodu nke na-eji iconv_open(). Site n'ịkọwagharị ụzọ na GCONV_PATH, onye na-awakpo nwere ike hụ na ọ bụghị akwụkwọ ndekọ aha iconv ka a na-ebu, kama ọ bụ ọbá akwụkwọ nke ya, ndị na-ahụ maka ya ga-esi na ya gbuo mgbe egosipụtara njehie na ọkwa mgbe pkexec ka na-arụ ọrụ. ikike mgbọrọgwụ na tupu enyocha ikike mmalite.

Achọpụtara na n'agbanyeghị eziokwu ahụ bụ na nsogbu ahụ na-akpata site na nrụrụ aka nke ebe nchekwa, ọ nwere ike ịdabere na ya ma jiri ya mee ihe ugboro ugboro n'agbanyeghị agbanyeghị nhazi ngwaike eji. A nwalela nrigbu a akwadoro nke ọma na Ubuntu, Debian, Fedora na CentOS, mana enwere ike iji ya na nkesa ndị ọzọ. Nrigbu mbụ adịbeghị n'ihu ọha, na-egosi na ọ bụ ihe na-adịghị mkpa na ndị nchọpụta ndị ọzọ nwere ike ịmepụta ya ngwa ngwa, ya mere ọ dị mkpa ịwụnye mmelite patch ozugbo enwere ike na sistemụ ọtụtụ ndị ọrụ. Polkit dịkwa maka sistemụ BSD na Solaris, mana amụbeghị maka ojiji na ha. Ihe a maara bụ na enweghị ike ime mwakpo ahụ na OpenBSD, ebe ọ bụ na OpenBSD kernel anaghị ekwe ka uru argc efu gafere mgbe a na-akpọ execve().

Nsogbu a adịla kemgbe Mee 2009, kemgbe agbakwunyere iwu pkexec. Ndozi maka adịghị ike PolKit dị ugbu a dị ka patch (enweghị mwepụta patch a tọhapụrụ), mana ebe ọ bụ na a mara ndị mmepe nkesa ọkwa maka nsogbu ahụ tupu oge eruo, ọtụtụ nkesa na-ebipụta mmelite ahụ n'otu oge na mkpughe ozi gbasara adịghị ike ahụ. Edere okwu a na RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux na Manjaro. Dị ka ihe nwa oge iji gbochie adịghị ike ahụ, ị ​​nwere ike wepu ọkọlọtọ SUID na / usr / bin / pkexec mmemme ("chmod 0755 / usr / bin / pkexec").



isi: opennet.ru

Tinye a comment