Snapi pakettide haldamise tööriistakomplekti juurhaavatavus

Qualys tuvastas sel aastal kolmanda ohtliku haavatavuse (CVE-2022-3328) snap-confine utiliidis, mis on kaasas SUID juurlipuga ja mida kutsub snapd protsess, et luua käivitatav keskkond iseseisvates pakettides levitatavatele rakendustele. snap-vormingus. See haavatavus võimaldab kohalikul privilegeerimata kasutajal saavutada Ubuntu vaikekonfiguratsioonis koodi käitamise juurjuurdepääsuga. Probleem on lahendatud snapd 2.57.6 versioonis. Kõigi toetatud Ubuntu harude jaoks on välja antud paketivärskendused.

Huvitav on see, et kõnealune haavatavus võeti kasutusele samalaadse veebruari haavatavuse parandamise protsessi käigus snap-confine'is. Teadlased suutsid ette valmistada toimiva ärakasutamise, mis pakub juurjuurdepääsu Ubuntu Server 22.04-le, mis lisaks snap-confine'i haavatavusele hõlmab ka kahte mitmeteelise protsessi haavatavust (CVE-2022-41974, CVE-2022-41973). , mis on seotud volituste kontrollist möödahiilimisega privilegeeritud käskude edastamisel ja sümboolsete linkidega ohtliku tööga.

Snap-confine'i haavatavus on põhjustatud võistlustingimusest funktsioonis must_mkdir_and_open_with_perms(), mis on lisatud kaitseks kataloogi /tmp/snap.$SNAP_NAME asendamise eest sümboolse lingiga pärast omaniku kontrollimist, kuid enne paigaldussüsteemi kutsumist. kõne, et siduda sellesse kataloogid snap-vormingus paketi jaoks. Lisakaitseks oli kataloogi /tmp/snap.$SNAP_NAME ümbernimetamine mõneks muuks juhusliku nimega kataloogiks /tmp, kui see on olemas ja see ei kuulu juurkäibele.

Kataloogi /tmp/snap.$SNAP_NAME ümbernimetamise toimingu kasutamisel kasutasid teadlased ära asjaolu, et snap-confine loob snap-paketi sisu juurteks ka /tmp/snap.rootfs_XXXXXX kataloogi. Nime osa "XXXXXX" valib juhuslikult mkdtemp(), kuid paketti nimega "rootfs_XXXXXX" saab kontrollida funktsioonis sc_instance_name_validate (st idee on, et $SNAP_NAME seatakse väärtusele "rootfs_XXXXXX" ja seejärel ümbernimetamise toiming tulemuseks on /tmp/snap.rootfs_XXXXXX kataloogi juuretõmbega ülekirjutamine).

Faili /tmp/snap.rootfs_XXXXXX ja faili /tmp/snap.$SNAP_NAME ümbernimetamise samaaegseks kasutamiseks käivitati kaks snap-confine'i eksemplari. Kui esimene eksemplar on loonud /tmp/snap.rootfs_XXXXXX, blokeeritakse protsess ja teine ​​eksemplar algab paketinimega rootfs_XXXXXX, mistõttu teise eksemplari ajutine kataloog /tmp/snap.$SNAP_NAME muutub juurkataloogiks /tmp/snap .rootfs_XXXXXX esimesest. Kohe pärast ümbernimetamise lõpetamist jooksis teine ​​eksemplar kokku ja /tmp/snap.rootfs_XXXXXX asendati rassitingimuste manipuleerimisega, nagu veebruari haavatavuse ärakasutamisel. Pärast asendamist eemaldati esmalt täitmise lukk ja ründajad said täieliku kontrolli snapi juurkataloogi üle.

Viimase sammuna loodi sümlink /tmp/snap.rootfs_XXXXXX/tmp, mida kasutas funktsioon sc_bootstrap_mount_namespace() kirjutatava päriskataloogi /tmp sidumiseks-ühendamiseks mis tahes failisüsteemi kataloogi, kuna mount() kutse järgib enne paigaldamist sümbolilinke. Sellist paigaldamist blokeerivad AppArmori piirangud, kuid sellest plokist mööda hiilimiseks kasutas ärakasutamine mitmeteelises ühenduses kahte abihaavatavus.

Allikas: opennet.ru

Lisa kommentaar