Ho ba kotsing ho hoholo ho PolKit e lumellang phihlello ea metso libakeng tse ngata tsa Linux

Qualys e khethile ho ba kotsing (CVE-2021-4034) ho karolo ea sistimi ea Polkit (eo pele e neng e le PolicyKit) e neng e sebelisoa kabong ho lumella basebelisi ba se nang tokelo ho etsa liketso tse hlokang litokelo tse phahameng tsa phihlello. Bofokoli bo lumella mosebelisi oa lehae ea se nang monyetla ho eketsa litokelo tsa bona ho mela le ho fumana taolo e felletseng ea sistimi. Bothata e ne e le codenamed PwnKit 'me e tsebahala ka ho hlahisa ts'ebetso e sebetsang e tsamaeang ka mokhoa o tloaelehileng ho li-distributions tse ngata tsa Linux.

Bothata bo teng ts'ebelisong ea pkexec ea PolKit, e tlang le folakha ea motso oa SUID mme e etselitsoe ho tsamaisa litaelo ka litokelo tsa mosebelisi e mong ho latela melao e boletsoeng ea PolKit. Ka lebaka la ts'ebetso e fosahetseng ea likhang tsa mela ea taelo e fetiselitsoeng ho pkexec, mosebelisi ea se nang tokelo a ka feta netefatso mme a tsamaisa khoutu e le motso, ho sa tsotelehe melao ea phihlello e behiloeng. Bakeng sa tlhaselo, ha ho na taba hore na ke litlhophiso life le lithibelo tse boletsoeng ho PolKit, ho lekane hore tšobotsi ea motso oa SUID e behiloe bakeng sa faele e ka phethisoang ka ts'ebeliso ea pkexec.

Pkexec ha e hlahlobe bonnete ba palo ea likhang tsa mola oa taelo (argc) e fetisitsoeng ha e qala ts'ebetso. Bahlahisi ba pkexec ba ne ba nahana hore ho kena ha pele ho argv array kamehla ho na le lebitso la ts'ebetso (pkexec), 'me ea bobeli e ka ba boleng ba NULL kapa lebitso la taelo e qalileng ka pkexec. Kaha palo ea likhang ha ea ka ea hlahlojoa khahlanong le litaba tsa 'nete tsa sehlopha' me ho ne ho nkoa hore e lula e le kholo ho feta 1, haeba ts'ebetso e ne e fetisoa ka mokhoa o se nang letho, joalokaha mosebetsi oa Linux execve o lumella, pkexec e ne e tla tšoara NULL e le khang ea pele. the process name) le e latelang e le kantle ho memori ea buffer, joalo ka litaba tse latelang tsa sehlopha. |———+———+——+————————————————+—————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|———|—-|—-+—-|—-+———+———|——| VVVVVV "lenaneo" "-khetho" NULL "boleng" "PATH=name" NULL

Bothata ke hore kamora "argv array" ho na le envp array mohopolong o nang le mefuta e fapaneng ea tikoloho. Kahoo, haeba argv array e se na letho, pkexec e ntša lintlha tse mabapi le taelo e tsamaisoang ka litokelo tse phahameng ho tloha karolong ea pele ea lihlopha tse nang le mefuta-futa ea tikoloho (argv[1] e ile ea tšoana le envp[0]), likahare tsa eona li ka laoloa. ka mohlaseli.

Ha e se e amohetse boleng ba argv[1], pkexec e leka, ho ela hloko litsela tsa faele tse PATH, ho fumana tsela e felletseng ea faele e ka phethisoang mme e ngola sesupo ho khoele ka tsela e felletseng ea ho khutlela ho argv[1], e lebisa ho hlakola boleng ba phetoho ea pele ea tikoloho, kaha argv[1] e ts'oana le envp[0]. Ka ho sebelisa lebitso la phetoho ea pele ea tikoloho, mohlaseli a ka kenya sebaka se seng sa tikoloho ho pkexec, mohlala, a nkela sebaka sa "LD_PRELOAD" sebaka sa "LD_PRELOAD", se sa lumelloeng mananeong a suid, 'me a hlophise hore laeborari ea bona e arolelanoeng e kenngoe tshebetso.

Ts'ebetso ea ts'ebetso e kenyelletsa ho kenya sebaka sa GCONV_PATH e feto-fetohang, e sebelisetsoang ho fumana tsela e eang laeboraring ea transcoding, e kentsoeng ka matla ha o bitsa g_printerr() ts'ebetso, eo khoutu e sebelisang iconv_open(). Ka ho hlakisa tsela hape ho GCONV_PATH, mohlaseli a ka etsa bonnete ba hore ha se laeborari e tloaelehileng ea iconv e laetsoeng, empa laeborari ea eona, bao ba sebetsang ho eona ba tla etsoa ha molaetsa oa phoso o hlaha sethaleng ha pkexec e ntse e sebetsa le eona. litokelo tsa motso le pele tumello ea ho qala e hlahlojoa.

Hoa hlokomeloa hore ho sa tsotellehe taba ea hore bothata bo bakoa ke bobolu ba mohopolo, bo ka sebelisoa ka botšepehi le ka ho pheta-pheta ho sa tsotellehe mohaho oa hardware o sebelisitsoeng. Ts'ebetso e lokiselitsoeng e lekoa ka katleho ho Ubuntu, Debian, Fedora le CentOS, empa e ka sebelisoa le ho liabo tse ling. Tšebeliso ea pele ha e e-s'o fumanehe phatlalatsa, e bontšang hore ke ntho e nyenyane 'me e ka etsoa habonolo ke bafuputsi ba bang, kahoo ke habohlokoa ho kenya ts'ebetsong ea patch kapele kamoo ho ka khonehang lits'ebetsong tsa basebelisi ba bangata. Polkit e fumaneha hape bakeng sa litsamaiso tsa BSD le Solaris, empa ha e so ithutoe hore e sebelisoe ho tsona. Se tsejoang ke hore tlhaselo e ke ke ea etsoa ho OpenBSD, kaha kernel ea OpenBSD ha e lumelle hore boleng ba argc bo fetisoe ha execve() e bitsoa.

Bothata bo bile teng ho tloha ka May 2009, ho tloha ha ho kenyelletsoa taelo ea pkexec. Tokiso ea ho ba tlokotsing ea PolKit e fumaneha hajoale e le patch (ha ho na tokollo ea patch e lokollotsoeng), empa kaha baetsi ba kabo ba ile ba tsebisoa ka bothata esale pele, liphatlalatso tse ngata li phatlalalitse ntlafatso ka nako e le 'ngoe le phatlalatso ea tlhahisoleseling mabapi le ho ba kotsing. Taba ena e tsitsitsoe ho RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux le Manjaro. E le mohato oa nakoana oa ho thibela ho ba kotsing, o ka tlosa folakha ea motso oa SUID ho tsoa ho /usr/bin/pkexec lenaneo ("chmod 0755 /usr/bin/pkexec").



Source: opennet.ru

Eketsa ka tlhaloso