Qualys idantifye yon vilnerabilite (CVE-2021-4034) nan konpozan sistèm Polkit (ansyen PolicyKit), ki itilize nan distribisyon pou pèmèt itilizatè ki pa gen privilèj fè aksyon ki mande dwa aksè elve. Vilnerabilite a pèmèt yon itilizatè lokal ki pa gen privilèj ogmante privilèj li yo pou rive nan root epi jwenn kontwòl konplè sou sistèm nan. Pwoblèm nan, ki gen non kòd PwnKit, remakab pou devlopman yon eksplwatasyon ki fonksyone nan konfigirasyon defo a sou pifò distribisyon yo. 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 verifye validite kantite agiman liy kòmand lan (argc) ki pase lè yon pwosesis kòmanse. Devlopè pkexec yo te sipoze ke premye antre nan tablo argv la toujou genyen non pwosesis la (pkexec), epi dezyèm lan te swa NULL oswa non kòmand ki te lanse atravè pkexec la. Piske yo pa t verifye kantite agiman an parapò ak sa ki nan tablo a epi yo te sipoze li toujou pi gran pase 1, si yo te pase yon tablo argv vid bay pwosesis la, sa fonksyon execve a pèmèt nan Linux, pkexec te trete NULL kòm premye agiman an (non pwosesis la), epi memwa ki swiv fen memwa tanpon an kòm rès tablo a. |âââ+âââ+ââââ+ââââ|âââ+ââââ+âââ+ââ| | argv[0] | argv[1] | ⌠| argv[argc] | envp[0] | envp[1] | ⌠| envp[envc] | |â-|â-+â-|â-+ââ+ââ|ââ|â-+â-|â-+ââ+ââ|ââ| VVVVVV "pwogram" "-opsyon" NULL "valè" "CHEMEN=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 enpòtan pou note ke, malgre pwoblèm nan koze pa koripsyon memwa, li ka eksplwate yon fason fyab e repete kèlkeswa achitekti pyès ki nan konpitè yo itilize a. Yo te teste eksplwate ki te prepare a avèk siksè nan Ubuntu, Debian, Fedora ak CentOS, men li ka itilize sou lòt distribisyon tou. Eksplwatasyon orijinal la poko disponib piblikman, sa ki endike ke li trivial epi lòt chèchè ka rkree li fasilman. Se poutèt sa, li enpòtan pou enstale patch la pi vit posib sou sistèm milti-itilizatè. Polkit disponib tou pou sistèm BSD ak Solaris, men yo pa ko etidye eksplwatasyon sou yo. Sèl bagay nou konnen se ke atak la pa ka fèt sou OpenBSD, paske nwayo OpenBSD a pa pèmèt yo pase yon valè argc zewo nan apèl execve() la.
Pwoblèm nan te prezan depi Me 2009, lè yo te ajoute kòmandman pkexec la. Yon koreksyon pou vilnerabilite nan PolKit disponib kounye a kòm yon patch (pa gen okenn vèsyon korektif ki te pibliye), men kòm devlopè distribisyon yo te avize sou pwoblèm nan davans, pifò distribisyon yo te pibliye yon mizajou an menm tan ak divilgasyon vilnerabilite a. Pwoblèm nan rezoud nan RHEL 6/7/8. Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Vid Linux, Arch Linux ak Manjaro. Kòm yon mezi tanporè pou bloke vilnerabilite a, ou ka retire drapo rasin SUID la nan pwogram /usr/bin/pkexec la ("chmod 0755 /usr/bin/pkexec").
Sous: opennet.ru
