Qhov teeb meem tseem ceeb hauv PolKit tso cai rau cov hauv paus nkag ntawm feem ntau Linux faib

Qualys tau txheeb xyuas qhov muaj qhov tsis zoo (CVE-2021-4034) hauv Polkit (yav tas los PolicyKit) cov txheej txheem siv hauv kev faib khoom kom tso cai rau cov neeg siv tsis tau txais txiaj ntsig los ua cov haujlwm uas yuav tsum tau txais cov cai nkag siab. Qhov tsis txaus ntseeg tso cai rau tus neeg siv tsis muaj cai hauv zos los nce lawv cov cai rau hauv paus thiab tau txais kev tswj hwm tag nrho ntawm lub cev. Qhov teeb meem yog codenamed PwnKit thiab yog ib qho tseem ceeb rau kev ua hauj lwm exploit uas khiav nyob rau hauv lub neej ntawd configuration ntawm feem ntau Linux distributions.

Qhov teeb meem yog tam sim no nyob rau hauv PolKit's pkexec utility, uas los nrog SUID hauv paus chij thiab yog tsim los khiav commands nrog cov cai ntawm lwm tus neeg siv raws li txoj cai PolKit teev. Vim yog kev tuav tsis raug ntawm kab lus hais lus sib cav dhau mus rau pkexec, tus neeg siv tsis muaj cai tuaj yeem hla kev lees paub thiab khiav lawv cov cai raws li hauv paus, tsis hais txog cov cai nkag mus. Rau kev tawm tsam, nws tsis muaj teeb meem dab tsi qhov chaw thiab kev txwv tau teev tseg hauv PolKit, nws yog qhov txaus tias SUID hauv paus tus cwj pwm tau teeb tsa rau cov ntaub ntawv executable nrog pkexec utility.

Pkexec tsis kuaj xyuas qhov siv tau ntawm cov kab lus hais kom sib cav suav (argc) dhau thaum pib txheej txheem. Cov neeg tsim tawm ntawm pkexec xav tias thawj qhov nkag hauv argv array ib txwm muaj lub npe ntawm cov txheej txheem (pkexec), thiab qhov thib ob yog tus nqi NULL lossis lub npe ntawm cov lus txib pib ntawm pkexec. Txij li thaum qhov kev sib cav suav tsis tau txheeb xyuas qhov tseeb ntawm cov array thiab tau xav tias yuav tsum muaj ntau dua 1, yog tias tus txheej txheem dhau los ntawm qhov khoob argv array, raws li Linux execve muaj nuj nqi tso cai, pkexec yuav kho NULL raws li thawj qhov kev sib cav ( tus txheej txheem npe) thiab ib tug tom ntej raws li sab nraum lub buffer nco, zoo li cov ntsiab lus tom ntej ntawm lub array. |————+——————————————————————————————————————————– | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |--|------------------|-----|-----|-----|----| VVVVVV "program" "-option" NULL "value" "PATH=name" NULL

Qhov teeb meem yog tias tom qab argv array muaj ib qho envp array hauv nco uas muaj ib puag ncig hloov pauv. Yog li, yog tias argv array yog khoob, pkexec rho tawm cov ntaub ntawv hais txog cov lus txib khiav nrog cov cai nce siab los ntawm thawj lub ntsiab ntawm cov array nrog ib puag ncig hloov pauv (argv[1] tau zoo ib yam rau envp[0]), cov ntsiab lus uas tuaj yeem tswj tau. los ntawm tus neeg tawm tsam.

Tom qab tau txais tus nqi ntawm argv[1], pkexec sim, coj mus rau hauv tus account cov ntaub ntawv paths hauv PATH, los txiav txim tag nrho txoj hauv kev rau cov ntaub ntawv executable thiab sau tus taw tes rau txoj hlua nrog tag nrho txoj kev rov qab mus rau argv[1], uas ua rau overwriting tus nqi ntawm thawj qhov chaw hloov pauv, txij li argv[1] zoo ib yam rau envp[0]. Los ntawm kev tswj hwm lub npe ntawm thawj qhov chaw hloov pauv, tus neeg tawm tsam tuaj yeem hloov lwm qhov chaw hloov pauv hauv pkexec, piv txwv li, hloov qhov "LD_PRELOAD" ib puag ncig hloov pauv, uas tsis raug tso cai hauv suid cov kev pabcuam, thiab npaj rau lawv cov tsev qiv ntawv sib koom ua haujlwm kom thauj mus rau hauv txheej txheem.

Kev siv nyiaj ua haujlwm suav nrog kev hloov pauv GCONV_PATH hloov pauv, uas yog siv los txiav txim siab txoj hauv kev mus rau lub cim hloov pauv lub tsev qiv ntawv, dynamically loaded thaum hu rau g_printerr() muaj nuj nqi, cov cai uas siv iconv_open(). Los ntawm redefining txoj kev nyob rau hauv GCONV_PATH, ib tug attacker yuav xyuas kom meej tias nws tsis yog tus qauv iconv tsev qiv ntawv uas yog loaded, tab sis nws tus kheej lub tsev qiv ntawv, cov handlers los ntawm uas yuav raug tua thaum cov lus yuam kev tshwm sim nyob rau theem thaum pkexec tseem khiav nrog. cov cai hauv paus thiab ua ntej tso cai tso cai raug kuaj xyuas.

Nws tau raug sau tseg tias txawm hais tias qhov teeb meem yog tshwm sim los ntawm kev nco kev noj nyiaj txiag, nws tuaj yeem ntseeg tau thiab rov siv dua tsis hais txog cov khoom siv kho vajtse siv. Cov kev npaj siv tau raug sim ua tiav ntawm Ubuntu, Debian, Fedora thiab CentOS, tab sis kuj tuaj yeem siv rau lwm qhov kev faib tawm. Tus thawj exploit tseem tsis tau muaj nyob rau hauv pej xeem, qhia tias nws yog tsis tseem ceeb thiab yuav tsum tau yooj yim recreated los ntawm lwm cov neeg soj ntsuam, yog li nws yog ib qho tseem ceeb rau nruab qhov hloov tshiab thaj kom sai li sai tau ntawm ntau tus neeg siv tshuab. Polkit kuj muaj rau BSD systems thiab Solaris, tab sis tsis tau kawm txog kev siv rau lawv. Dab tsi paub yog tias qhov kev tawm tsam tsis tuaj yeem ua tiav ntawm OpenBSD, vim tias OpenBSD kernel tsis tso cai rau tus nqi null argc kom dhau thaum execve() raug hu.

Qhov teeb meem tau tshwm sim txij li lub Tsib Hlis 2009, txij li qhov sib ntxiv ntawm pkexec hais kom ua. Kev kho rau PolKit qhov tsis zoo yog tam sim no muaj raws li thaj chaw (tsis muaj thaj chaw tso tawm), tab sis txij li cov neeg tsim khoom faib khoom tau ceeb toom txog qhov teeb meem ua ntej, feem ntau cov kev faib tawm tau tshaj tawm qhov hloov tshiab ib txhij nrog kev tshaj tawm cov ntaub ntawv hais txog qhov tsis zoo. Qhov teeb meem raug kho hauv RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux thiab Manjaro. Raws li kev ntsuas ib ntus los thaiv qhov tsis zoo, koj tuaj yeem tshem tawm SUID hauv paus chij los ntawm /usr/bin/pkexec program ("chmod 0755 / usr/bin/pkexec").



Tau qhov twg los: opennet.ru

Ntxiv ib saib