Root-haavatavus Snap pakihaldustarkvaras

Qualys avastas selle aasta kolmanda tĂ”sise haavatavuse (CVE-2022-3328) utiliidis snap-confine, mis on varustatud SUID root lipuga ja mida kĂ€itab protsess snapd, et luua tĂ€itmiskeskkond snap-formaadis iseseisvaid rakendusi sisaldavatele pakettidele. Haavatavus vĂ”imaldab kohalikel, mitte-privileegitud kasutajatel saada root’i Ă”igusi Ubuntu vaikeseades. Probleem on lahendatud versioonis snapd 2.57.6. Pakettide uuendused on vĂ€lja antud kĂ”igi toetatud Ubuntu harude jaoks.

On huvitav, et arutatav haavatavus lisati sarnase veebruari haavatavuse parandamise protsessi kĂ€igus snap-confine'is. Uurijatel Ă”nnestus valmistada töövĂ”ime, mis annab root-juurdepÀÀsu Ubuntu Server 22.04-le, mille puhul on lisaks snap-confine'i haavatavusele seotud ka kaks haavatavust multipathd protsessis (CVE-2022-41974, CVE-2022-41973), mis on seotud privileege kontrollivate kĂ€skude edastamise ja sĂŒmboolsete linkidega ebaturvalise töötlemisega.

Snap-confine'i haavatavus tuleneb vĂ”istlusolukorrast funktsioonis must_mkdir_and_open_with_perms(), mis lisati katalooge /tmp/snap.$SNAP_NAME, et kaitsta kaustade asendamise eest sĂŒmboolsetele linkidele omaniku kontrollimise jĂ€rel, kuid enne mount-sĂŒsteemikĂ”ne sooritamist bind-monteerimiseks katsetas. Lisatud kaitse seisnes katalooge /tmp/snap.$SNAP_NAME nimelise randomiseerimise muutmises teise katalooge all /tmp, kui see eksisteerib ja ei kuulu kasutajale root.

Haavatavuse Ă€rakasutamisel muutis kataloogide /tmp/snap.$SNAP_NAME uuendamine, et uurijad said kasutada ka seda, et snap-confine loob katalooge /tmp/snap.rootfs_XXXXXX snap-paketi sisu juureks. Osa «XXXXXX» nimes valitakse juhuslikult mkdtemp() funktsiooniga, kuid pakett nimega «rootfs_XXXXXX» vĂ”ib lĂ€bi minna tĂŒve sc_instance_name_validate kontrollimise, st idee on, et $SNAP_NAME nimeks muutub «rootfs_XXXXXX», ja seega viib nimemuutus katalooge /tmp/snap.rootfs_XXXXXX snap-juure all kirjutamisse.

Selleks, et saavutada samaaegset kasutamist /tmp/snap.rootfs_XXXXXX ja katalooge /tmp/snap.$SNAP_NAME muutmist, kĂ€ivitati kaks snap-confine'i eksemplari. Kui esimene eksemplar loob katalooge /tmp/snap.rootfs_XXXXXX, lukustub protsess ja kĂ€ivitatakse teine eksemplar nimega rootfs_XXXXXX, mis viib oma ajutise kausta /tmp/snap.$SNAP_NAME muutmise戰 /tmp/snap.rootfs_XXXXXX. PĂ€rast rename toimingut lĂ”petas teine eksemplar ootamatult, ja /tmp/snap.rootfs_XXXXXX asendati vĂ”istlusolukorra manipuleerimisega, nagu veebruari haavatavuse Ă€rakasutamise korral. PĂ€rast asendust eemaldati esimese eksemplari heldus ja rĂŒndajad said tĂ€ieliku kontrolli snap-juure katalooge.

Viimases etapis loodi sĂŒmboolne link /tmp/snap.rootfs_XXXXXX/tmp, mida kasutati funktsioonis sc_bootstrap_mount_namespace() bind-monteerimiseks kirjutatavas fĂŒĂŒsilises kataloogis /tmp, mis iga katalooge FS-s, kuna mount() tĂ”uke tulevaste sĂŒmboolsete linkide sĂ”numit enne monteerimist. Selline monteerimine on AppArmori piirangutega blokeeritud, kuid need blokid ĂŒletamiseks hĂ”lmas utiliidis kahte abikwaidad multipathd.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster