Ko te whakaraeraetanga tino nui i roto i te PolKit ka taea te uru pakiaka ki te nuinga o nga tohatoha Linux

Kua tautuhia e Qualys tetahi whakaraeraetanga (CVE-2021-4034) i roto i te waahanga punaha Polkit (PoreihanaKit o mua) e whakamahia ana i roto i nga tohatoha hei tuku i nga kaiwhakamahi kore whai mana ki te mahi i nga mahi e hiahia ana kia piki ake nga mana uru. Ko te whakaraeraetanga ka taea e tetahi kaiwhakamahi rohe kore whai mana ki te whakanui ake i o raatau mana ki te pakiaka me te whai mana katoa o te punaha. I whakaingoatia te raruraru ko PwnKit, he mea rongonui mo te whakaputa i tetahi mahi mahi e rere ana i roto i te whirihoranga taunoa i runga i te nuinga o nga tohatoha Linux.

Ko te raruraru kei roto i te whaipainga pkexec a PolKit, ka tae mai me te haki pakiaka SUID ka hangaia hei whakahaere i nga whakahau me nga mana o tetahi atu kaiwhakamahi e ai ki nga ture PolKit kua tohua. Na te he o te whakahaere i nga tohenga raina whakahau i tukuna ki te pkexec, ka taea e te kaiwhakamahi kore whai mana ki te karo i te motuhēhēnga me te whakahaere i o raatau waehere hei putake, ahakoa nga ture whakauru kua whakaritea. Mo te whakaeke, kaore he aha he aha nga tautuhinga me nga here kua tohua i roto i te PolKit, he nui noa atu ko te huanga pakiaka SUID kua whakaritea mo te konae whakahaere me te whaipainga pkexec.

Karekau a Pkexec e taki i te mana o te tatauranga tohenga rarangi whakahau (argc) i paahitia i te tiimata o te mahi. Ko nga kaihanga o pkexec i kii ko te urunga tuatahi i roto i te raupapa argv kei roto tonu te ingoa o te tukanga (pkexec), me te tuarua he uara NULL ranei te ingoa o te whakahau i whakarewahia ma te pkexec. I te mea karekau i tirohia te tatauranga tautohe ki nga ihirangi o te huinga me te kii he nui ake i te 1, mena ka tukuna he mahinga ki te raupapa argv kau, i te mea ka taea e te mahi whakahaere Linux, ka kiia e pkexec te NULL hei tohenga tuatahi ( te ingoa tukanga) me te mea e whai ake nei kei waho o te mahara papaa, penei i nga mea o muri mai o te huinga. |———+———+——+————|———+———+——+—————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "hōtaka" "-kōwhiringa" NULL "uara" "PATH=ingoa" NULL

Ko te raruraru ko muri i te huinga argv he huinga envp kei roto i te mahara kei roto nga taurangi taiao. No reira, ki te putua te huinga argv, ka tangohia e te pkexec nga raraunga mo te whakahaere whakahau me nga mana teitei mai i te huānga tuatahi o te huānga me nga taurangi taiao (argv[1] ka rite ki te envp[0]), ka taea te whakahaere i nga mea o roto. na te tangata whakaeke.

I te rironga o te uara o argv[1], ka ngana a pkexec, me te whai whakaaro ki nga ara konae kei te PATH, ki te whakatau i te ara katoa ki te konae ka taea te whakahaere me te tuhi tohutohu ki te aho me te ara katoa hoki ki argv[1], ka arahi ki te tuhirua i te uara o te taurangi taiao tuatahi, i te mea he rite te argv[1] ki te envp[0]. Ma te raweke i te ingoa o te taurangi taiao tuatahi, ka taea e te kaitukino te whakakapi i tetahi atu taurangi taiao i roto i te pkexec, hei tauira, whakakapi i te taurangi taiao "LD_PRELOAD", kaore e whakaaetia i roto i nga kaupapa suid, me te whakarite kia utaina to raatau whare pukapuka ki te tukanga.

Ko te mahi mahi ko te whakakapi i te taurangi GCONV_PATH, e whakamahia ana hei whakatau i te ara ki te whare pukapuka whakawhiti tohu, e utaina ana i te wa e karanga ana i te mahi g_printerr(), ko te tohu e whakamahi ana i te iconv_open(). Ma te tautuhi ano i te ara i roto i te GCONV_PATH, ka taea e te kaiwhaiwhai te whakarite ehara i te mea ko te whare pukapuka iconv paerewa e utaina ana, engari ko tana ake whare pukapuka, ka mahia nga kaikawe mai i te wa e whakaatuhia ana he karere hapa i te atamira kei te rere tonu te pkexec motika pakiaka me i mua i te whakarewatanga ka tirohia nga whakaaetanga.

E tohuhia ana ahakoa ko te raru i puta mai i te kino o te mahara, ka taea te whakamahi pono me te whakamahi tonu ahakoa te hoahoanga taputapu i whakamahia. Kua pai te whakamatautau i nga mahi kua rite ki Ubuntu, Debian, Fedora me CentOS, engari ka taea hoki te whakamahi ki etahi atu tohatoha. Ko te mahi taketake kaore ano kia watea ki te iwi whanui, e tohu ana he mea iti, he ngawari te hanga ano e etahi atu kairangahau, no reira he mea nui kia tere te whakauru i te whakahou papaki ki runga i nga punaha maha-kaiwhakamahi. Kei te waatea ano a Polkit mo nga punaha BSD me Solaris, engari kaore ano kia akohia kia whakamahia ki runga. Ko te mea e mohiotia ana kaore e taea te whakaeke i runga i te OpenBSD, na te mea karekau te kernel OpenBSD e whakaae kia tukuna he uara argc kore ina karangahia te execve().

Ko te raruraru mai i Mei 2009, mai i te taapiri o te whakahau pkexec. Ko te whakatika mo te whakaraeraetanga o te PolKit kei te waatea i tenei wa hei papaki (kaore he tuku papaki i tukuna), engari mai i te mea i whakamohiotia nga kaiwhakawhanake tohatoha mo te raru i mua, ko te nuinga o nga tohatoha i whakaputa i te whakahou i te wa kotahi me te whakaatu i nga korero mo te whakaraeraetanga. Kua whakatauhia te take i RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux me Manjaro. Hei mahi rangitahi hei aukati i te whakaraeraetanga, ka taea e koe te tango i te haki pakiaka SUID mai i te kaupapa /usr/bin/pkexec (“chmod 0755 /usr/bin/pkexec”).



Source: opennet.ru

Tāpiri i te kōrero