Ny vulnerability manan-danja ao amin'ny PolKit mamela ny fidirana amin'ny faka amin'ny ankamaroan'ny fizarana Linux

Qualys dia nahita vulnerable (CVE-2021-4034) ao amin'ny singa rafitra Polkit (PolitikKit taloha) ampiasaina amin'ny fizarana mba ahafahan'ny mpampiasa tsy manana tombontsoa hanao hetsika izay mitaky zo fidirana ambony. Ny vulnerability dia ahafahan'ny mpampiasa eo an-toerana tsy manana tombontsoa hampitombo ny tombontsoany amin'ny fakany sy hahazoana fifehezana tanteraka ny rafitra. Ny olana dia nomena anarana hoe PwnKit ary malaza amin'ny famokarana fitrandrahana miasa izay mandeha amin'ny fanamafisana default amin'ny ankamaroan'ny fizarana Linux.

Ny olana dia hita ao amin'ny pkexec utility an'ny PolKit, izay miaraka amin'ny saina fakan'ny SUID ary natao hampandehanana baiko miaraka amin'ny tombontsoan'ny mpampiasa hafa araka ny fitsipika PolKit voafaritra. Noho ny fikarakarana diso ny tohan-kevitry ny andalana baiko nalefa tany amin'ny pkexec, mpampiasa tsy manana tombontsoa dia afaka mandingana ny fanamarinana sy mampandeha ny kaody ho fototry ny kaody, na inona na inona fitsipika fidirana napetraka. Ho an'ny fanafihana, na inona na inona toe-javatra sy fameperana voatondro ao amin'ny PolKit, dia ampy ny mametraka ny toetra fototry ny SUID ho an'ny rakitra azo ampiasaina miaraka amin'ny utility pkexec.

Pkexec dia tsy manamarina ny maha-ara-dalàna ny fanisan'ny tohan-kevitra andalana (argc) nandalo rehefa manomboka dingana. Ny mpamorona ny pkexec dia nihevitra fa ny fidirana voalohany ao amin'ny argv array dia misy foana ny anaran'ny dingana (pkexec), ary ny faharoa dia sanda NULL na ny anaran'ny baiko natomboka tamin'ny pkexec. Koa satria tsy voamarina ny isan'ny tohan-kevitra manohitra ny tena votoatin'ny array ary heverina ho lehibe kokoa noho ny 1, raha toa ka misy dingana iray mandalo argv array tsy misy na inona na inona, araka ny avelan'ny Linux execve function, pkexec dia hitondra NULL ho tohan-kevitra voalohany ( ny anaran'ny dingana) ary ny manaraka dia ivelan'ny fitadidiana buffer, toy ny votoatin'ny array manaraka. |———+———+——+————|———+———+——+————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "programa" "-option" NULL "value" "PATH=name" NULL

Ny olana dia aorian'ny argv array dia misy envp array ao anaty fitadidiana misy fari-piainan'ny tontolo iainana. Noho izany, raha banga ny argv array, ny pkexec dia maka angon-drakitra momba ny baiko mihazakazaka miaraka amin'ny tombontsoa ambony avy amin'ny singa voalohany amin'ny array miaraka amin'ny fari-piainan'ny tontolo iainana (argv[1] lasa mitovy amin'ny envp[0]), ny ao anatiny dia azo fehezina. nataon'ilay mpanafika.

Rehefa nahazo ny sandan'ny argv[1], pkexec dia manandrana, amin'ny fiheverana ny làlan'ny rakitra ao amin'ny PATH, hamaritana ny lalana feno mankany amin'ny rakitra azo tanterahana ary manoratra tondro mankany amin'ny tady miaraka amin'ny lalana feno miverina amin'ny argv[1], izay mitarika ho amin'ny overwriting ny sandan'ny fari-piainana voalohany, satria argv[1] dia mitovy amin'ny envp[0]. Amin'ny alàlan'ny fanodikodinana ny anaran'ny fari-piainan'ny tontolo iainana voalohany, ny mpanafika dia afaka manolo ny fari-piainan'ny tontolo iainana hafa ao amin'ny pkexec, ohatra, manolo ny fari-piainan'ny tontolo iainana "LD_PRELOAD", izay tsy azo atao amin'ny programa suid, ary mandamina ny hampidirana ny tranomboky iombonany ao amin'ny dingana.

Ny fanararaotana miasa dia ny fanoloana ny fari-piadidiana GCONV_PATH, izay ampiasaina hamaritana ny lalana mankany amin'ny tranomboky transcoding mari-pamantarana, feno dynamique rehefa miantso ny fiasa g_printerr(), ny kaody izay mampiasa iconv_open(). Amin'ny alàlan'ny famaritana indray ny lalana ao amin'ny GCONV_PATH, ny mpanafika dia tsy afaka mameno ny tranomboky iconv mahazatra, fa ny tranomboky manokana, ireo mpitantana izay hovonoina mandritra ny fampirantiana hafatra diso amin'ny sehatra izay mbola mihazakazaka miaraka amin'ny zon'ny fakany ny pkexec ary alohan'ny fandefasana fahazoan-dàlana. dia voamarina.

Marihina fa na dia eo aza ny zava-misy fa ny olana dia vokatry ny kolikoly fahatsiarovana, dia azo ianteherana sy miverimberina trandrahana na inona na inona ny hardware rafitra ampiasaina. Ny fitrandrahana voaomana dia nosedraina soa aman-tsara tao amin'ny Ubuntu, Debian, Fedora ary CentOS, saingy azo ampiasaina amin'ny fizarana hafa. Ny fanararaotana tany am-boalohany dia tsy mbola hita ampahibemaso, izay manondro fa tsy misy dikany izany ary azo averina mora amin'ny mpikaroka hafa, noho izany dia zava-dehibe ny fametrahana ny fanavaozana patch haingana araka izay azo atao amin'ny rafitra mpampiasa maro. Misy ihany koa ny Polkit ho an'ny rafitra BSD sy Solaris, saingy tsy nodinihina mba hampiasaina amin'izy ireo. Ny fantatra dia tsy azo atao ny fanafihana amin'ny OpenBSD, satria ny kernel OpenBSD dia tsy mamela ny sanda argc tsy misy dikany rehefa antsoina hoe execve().

Efa nisy ny olana nanomboka tamin'ny May 2009, hatramin'ny nampidirana ny baiko pkexec. Ny famahana ny vulnerability PolKit dia azo alaina amin'ny endrika patch (tsy misy famoahana patch navoaka), saingy hatramin'ny nampandrenesina mialoha ny olana ny developer distribution, ny ankamaroan'ny fizarana dia namoaka ny fanavaozana miaraka amin'ny fampahafantarana ny vaovao momba ny vulnerability. Ny olana dia raikitra ao amin'ny RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux ary Manjaro. Ho fepetra vonjimaika hanakanana ny vulnerability dia azonao atao ny manala ny saina faka SUID amin'ny programa /usr/bin/pkexec (“chmod 0755 /usr/bin/pkexec”).



Source: opennet.ru

Add a comment