Rótarveikleiki í Snap Package Management Toolkit

Qualys hefur greint þriðja hættulega varnarleysið á þessu ári (CVE-2022-3328) í snap-confine tólinu, sem kemur með SUID rótfánanum og er kallað af snapd ferlinu til að búa til keyranlegt umhverfi fyrir forrit sem dreift er í sjálfstættum pakka í snap sniði. Varnarleysið gerir staðbundnum forréttindalausum notanda kleift að keyra kóða sem rót í sjálfgefna Ubuntu uppsetningu. Málið er lagað í snapd 2.57.6 útgáfu. Pakkauppfærslur hafa verið gefnar út fyrir allar studdar greinar Ubuntu.

Athyglisvert er að varnarleysið sem um ræðir var kynnt í ferlinu við að laga svipaðan febrúar veikleika í snap-confine. Rannsakendur gátu útbúið virka hetjudáð sem veitir rótaraðgang að Ubuntu Server 22.04, sem, auk varnarleysis í snap-confine, felur einnig í sér tvo veikleika í fjölbrauta ferlinu (CVE-2022-41974, CVE-2022-41973) , sem tengist því að fara framhjá heimildarskoðuninni þegar sendar eru forréttindaskipanir og óörugg vinna með táknrænum tenglum.

Varnarleysið í snap-confine stafar af keppnisástandi í must_mkdir_and_open_with_perms() aðgerðinni, bætt við til að verjast því að /tmp/snap.$SNAP_NAME möppunni sé skipt út með táknrænum hlekk eftir að hafa athugað eigandann, en áður en hringt er í tengikerfið kalla á bind-mount möppur inn í það fyrir pakka á snap sniði. Auka vörnin var að endurnefna /tmp/snap.$SNAP_NAME möppuna í aðra möppu í /tmp með handahófsheiti ef hún er til og er ekki í eigu rótarinnar.

Þegar þeir nýttu sér /tmp/snap.$SNAP_NAME möppuendurnefnaaðgerðina nýttu rannsakendur sér þá staðreynd að snap-confine býr einnig til /tmp/snap.rootfs_XXXXXX möppu fyrir rót innihald snappakkans. "XXXXXX" hluti nafnsins er valinn af handahófi af mkdtemp(), en pakka sem heitir "rootfs_XXXXXX" er hægt að staðfesta í sc_instance_name_validate aðgerðinni (þ.e.a.s. hugmyndin er að $SNAP_NAME verði stillt á "rootfs_XXXXXX" og síðan endurnefna aðgerðina mun leiða til þess að skrifa yfir /tmp/snap.rootfs_XXXXXX möppuna með rótarsnapinu).

Til að ná samtímis notkun á /tmp/snap.rootfs_XXXXXX og endurnefna /tmp/snap.$SNAP_NAME voru tvö tilvik af snap-confine ræst. Þegar fyrsta tilvikið var búið til /tmp/snap.rootfs_XXXXXX myndi ferlið lokast og annað tilvik myndi byrja á pakkanafninu rootfs_XXXXXX, sem veldur því að tímabundin skrá annars tilviksins /tmp/snap.$SNAP_NAME verður rótarskráin /tmp/snap .rootfs_XXXXXX af þeim fyrstu. Strax eftir að endurnefnan var lokið hrundi annað tilvikið og /tmp/snap.rootfs_XXXXXX var skipt út fyrir kappakstursástand, eins og þegar varnarleysið var nýtt í febrúar. Eftir skiptinguna var framkvæmdalásinn fjarlægður frá fyrsta tilviki og árásarmennirnir náðu fullri stjórn á skyndirótarskránni.

Síðasta skrefið var að búa til tákntengil /tmp/snap.rootfs_XXXXXX/tmp, sem var notaður af sc_bootstrap_mount_namespace() fallinu til að binda-tengja skrifanlega raunverulegu möppuna /tmp við hvaða möppu sem er í skráarkerfinu, þar sem mount() kallar fylgir tákntengjum fyrir uppsetningu. Slík uppsetning er lokuð af AppArmor-takmörkunum, en til að komast framhjá þessari blokk, notaði hagnýtingin tvo aukaveikleika í multipathd.

Heimild: opennet.ru

Bæta við athugasemd