Qualys avastas kaks haavatavust (CVE-2021-44731, CVE-2021-44730) snap-confine utiliidis, mis tarnitakse SUID root tĂ€hisega ja mida snapd protsess kutsub vĂ€lja rakenduste tĂ€itmisoleku loomiseks, mis tarnitakse iseseisvates snap-pakettides. Need haavatavused vĂ”imaldavad kohalikul, privileegide puudumisega kasutajal saavutada sĂŒsteemis root-Ă”iguste tĂ€itmise. Probleemid on lahendatud tĂ€nases snapd paketihalduri uuenduses Ubuntu 21.10, 20.04 ja 18.04 jaoks.
Esimene haavatavus (CVE-2021-44730) vĂ”imaldab rĂŒnnakut, manipuleerides kĂ”vakettaliideseid, kuid see eeldab kĂ”vakettaliideste sĂŒsteemi kaitse keelamist (sysctl fs.protected_hardlinks seadistamine vÀÀrtusele 0). Probleem tuleneb vale kontrollimisest snap-update-ns ja snap-discard-ns abi programmide tĂ€itmise failide asukohtade osas, mis kĂ€ivitatakse root-Ă”igustega. Nende failide teed arvutatakse funktsioonis sc_open_snapd_tool() oma teest /proc/self/exe, mis vĂ”imaldab luua kĂ”vakettaliidese snap-confine oma katalooge ja paigutada sellesse katalooge oma variante utiliite snap-update-ns ja snap-discard-ns. PĂ€rast kĂ”vakettaliidese kaudu snap-confine kĂ€ivitamist root-Ă”igustega kĂ€ivitab see rĂŒndaja mÀÀratud kataloogist failid snap-update-ns ja snap-discard-ns.
Teine haavatavus on pĂ”hjustatud vĂ”idujooksu olukorrast ja seda saab Ă€ra kasutada Ubuntu Desktopi vaikeseadistuses. Kasutaja peab aga Ubuntu Serveri installimisel valima ĂŒhe paketist, mis kuulub kategooriasse âFeatured Server Snapsâ, et edukalt ekspluateerida. VĂ”idujooksu olukord avaldub funktsioonis setup_private_mount(), mida kutsutakse vĂ€lja snapi paketiga seotud mount-kohakeste ettevalmistamise ajal. Antud funktsioon loob ajutise katalooge "/tmp/snap.$SNAP_NAME/tmp" vĂ”i kasutab juba olemasolevat mountimiseks snapi ĂŒle.
Kuna ajutise katalooge nimi on etteennustatav, saab rĂŒndaja selle sisu asendada sĂŒmboolse lingiga vahetult pĂ€rast omaniku kontrollimist, kuid enne mount sĂŒsteemikĂ”ne tegemist. NĂ€iteks vĂ”ib luua kataloogis /tmp/snap.lxd sĂŒmboolse lingi â/tmp/snap.lxd/tmpâ, mis osutab suvalisele kataloogile, ja mount() kutse jĂ€rgneb sĂŒmboolsele lingile ning mountib katalooge snap-nimede ruumis. Samamoodi saab mountida oma sisu /var/lib ja asendada /var/lib/snapd/mount/snap.snap-store.user-fstab, et korraldada oma katalooge /etc mountimist snap-paketi nimede ruumis, et laadida oma raamatukogu root Ă”igustega lĂ€bi /etc/ld.so.preload asendamise.
Tuleb mĂ€rkida, et eksploitimise loomine osutus mitte triviaalseks ĂŒlesandeks, kuna utiliit snap-confine on kirjutatud Go keeles, kasutades turvalise programmeerimise meetodeid, omab AppArmori profiilide pĂ”hist kaitset, filtreerib sĂŒsteemikĂ”nesid seccomp mehhanismi pĂ”hjal ning rakendab mountimiseks nimede ruumi isolatsiooni. Siiski Ă”nnestus teadlastel valmistada ette töötav eksploit, et saavutada root Ă”igused sĂŒsteemis. Eksplooit kood avaldatakse nĂ€dalate pĂ€rast, pĂ€rast seda kui kasutajad on installinud antud uuendused.
Allikas: opennet.ru
