Vilnerabilite kritik nan PolKit ki pèmèt aksè rasin sou pifò distribisyon Linux

Qualys te idantifye yon vilnerabilite (CVE-2021-4034) nan eleman sistèm Polkit (ansyen PolicyKit) yo te itilize nan distribisyon pou pèmèt itilizatè ki pa gen privilèj yo fè aksyon ki mande dwa aksè ki wo. Vilnerabilite a pèmèt yon itilizatè lokal ki pa gen privilèj ogmante privilèj yo pou derasinen epi pran kontwòl konplè sou sistèm nan. Pwoblèm lan te nonmen kod PwnKit e li remakab pou pwodwi yon eksplwatasyon k ap travay ki kouri nan konfigirasyon default la sou pifò distribisyon Linux.

Pwoblèm nan prezan nan sèvis piblik pkexec PolKit la, ki vini ak drapo rasin SUID la epi ki fèt pou kouri kòmandman ak privilèj yon lòt itilizatè dapre règleman PolKit espesifye yo. Akòz move manyen agiman liy lòd yo te pase bay pkexec, yon itilizatè san privilèj te kapab kontoune otantifikasyon epi kouri kòd yo kòm rasin, kèlkeswa règ aksè yo mete. Pou yon atak, li pa gen pwoblèm sa ki paramèt ak restriksyon yo espesifye nan PolKit, li ase ke atribi rasin SUID yo mete pou dosye a ègzèkutabl ak sèvis piblik pkexec la.

Pkexec pa tcheke validite kantite agiman liy kòmand (argc) pase lè yo kòmanse yon pwosesis. Devlopè pkexec te sipoze ke premye antre nan etalaj argv la toujou gen non pwosesis la (pkexec), ak dezyèm lan swa yon valè NULL oswa non kòmandman an te lanse atravè pkexec. Piske konte agiman an pa t tcheke kont kontni aktyèl la nan etalaj la epi yo te sipoze toujou pi gran pase 1, si yo te pase yon pwosesis yon etalaj argv vid, jan fonksyon execve Linux la pèmèt, pkexec ta trete NULL kòm premye agiman an ( non pwosesis la) ak pwochen an kòm deyò memwa tanpon, tankou sa ki vin apre yo nan etalaj la. |———+———+——+————|———+———+——+————| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | anvp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "pwogram" "-opsyon" NULL "valè" "PATH=non" NULL

Pwoblèm lan se ke apre etalaj la argv gen yon etalaj envp nan memwa ki gen varyab anviwònman an. Kidonk, si etalaj la argv vid, pkexec ekstrè done sou kouri nan lòd ak privilèj elve soti nan premye eleman nan etalaj la ak varyab anviwònman an (argv[1] te vin idantik ak envp[0]), sa ki ka kontwole. pa atakè a.

Lè w fin resevwa valè argv[1], pkexec eseye, pran an kont chemen fichye yo nan PATH, detèmine chemen konplè a nan dosye ègzèkutabl la epi ekri yon konsèy sou fisèl la ak chemen konplè a tounen nan argv[1], ki. mennen nan ranplase valè premye varyab anviwònman an, paske argv[1] idantik ak envp[0]. Lè yo manipile non premye varyab anviwònman an, yon atakè ka ranplase yon lòt varyab anviwònman nan pkexec, pou egzanp, ranplase varyab anviwònman "LD_PRELOAD" la, ki pa pèmèt nan pwogram suid, epi fè aranjman pou bibliyotèk pataje yo dwe chaje nan pwosesis.

Eksplwatasyon travay la enplike nan ranplase varyab GCONV_PATH, ki itilize pou detèmine chemen an nan bibliyotèk transkodaj senbòl la, ki chaje dinamik lè w ap rele fonksyon g_printerr(), kòd ki sèvi ak iconv_open(). Lè yo redefini chemen an nan GCONV_PATH, yon atakè ka reyalize pa chaje bibliyotèk estanda iconv la, men pwòp bibliyotèk li, moun kap okipe yo pral egzekite pandan ekspozisyon mesaj erè a nan etap lè pkexec toujou ap kouri ak dwa rasin ak anvan otorizasyon pou lansman. yo tcheke.

Li te note ke malgre lefèt ke pwoblèm nan se koze pa koripsyon memwa, li ka fyab ak repete eksplwate kèlkeswa achitekti pyès ki nan konpitè yo itilize. Eksplwatasyon prepare a te teste avèk siksè sou Ubuntu, Debian, Fedora ak CentOS, men yo ka itilize tou sou lòt distribisyon. Eksplwatasyon orijinal la poko disponib piblikman, sa ki endike ke li se trivial epi yo ka rkree pa lòt chèchè fasil, kidonk li enpòtan pou enstale aktyalizasyon patch la pi vit ke posib sou sistèm milti-itilizatè yo. Polkit disponib tou pou sistèm BSD ak Solaris, men li pa te etidye pou itilize sou yo. Ki sa ki konnen se ke atak la pa ka fèt sou OpenBSD, paske nwayo a OpenBSD pa pèmèt yon valè argc nil yo dwe pase lè yo rele execve().

Pwoblèm nan te prezan depi me 2009, depi adisyon a nan lòd la pkexec. Ranje pou vilnerabilite PolKit la disponib kounye a kòm yon patch (pa gen okenn lage patch ki te pibliye), men depi devlopè distribisyon yo te avize pwoblèm nan alavans, pifò distribisyon pibliye aktyalizasyon an ansanm ak divilgasyon enfòmasyon sou vilnerabilite a. Pwoblèm nan fiks nan RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux ak Manjaro. Kòm yon mezi tanporè pou bloke vilnerabilite a, ou ka retire drapo rasin SUID nan pwogram /usr/bin/pkexec ("chmod 0755 /usr/bin/pkexec").



Sous: opennet.ru

Add nouvo kòmantè