Snapi pakettide haldamise tööriistakomplekti kohalikud juur-haavatavused

Qualys on tuvastanud kaks haavatavust (CVE-2021-44731, CVE-2021-44730) snap-confine utiliidis, mis on varustatud SUID juurlipuga ja mida snapd-protsess kutsub üles looma käivitatava keskkonna iseseisvate pakettidena tarnitavatele rakendustele. snap-vormingus. Haavatavus võimaldab kohalikul privilegeerimata kasutajal käivitada süsteemis juurõigustega koodi. Probleemid lahendatakse tänases Ubuntu 21.10, 20.04 ja 18.04 snapd-paketi värskenduses.

Esimene haavatavus (CVE-2021-44730) lubab rünnakut kõvalinki manipuleerimise kaudu, kuid nõuab süsteemi kõvalingi kaitse keelamist (sysctl fs.protected_hardlinks väärtuseks 0). Probleemi põhjustab administraatorina töötavate abiprogrammide snap-update-ns ja snap-discard-ns käivitatavate failide asukoha vale kontrollimine. Nende failide tee arvutati funktsiooni sc_open_snapd_tool() abil, mis põhineb selle enda teedel failist /proc/self/exe, mis võimaldab teil luua kataloogis snap-confine'i jaoks kõva lingi ja paigutada oma versioonid snap- update-ns ja snap-utiliidid selles kataloogis discard-ns. Pärast kõva lingi kaudu käivitamist käivitab juurõigustega snap-confine praegusest kataloogist failid snap-update-ns ja snap-discard-ns, mille ründaja asendab.

Teine haavatavus on põhjustatud rassist ja seda saab ära kasutada Ubuntu töölaua vaikekonfiguratsioonis. Selleks, et ekspluatatsioon Ubuntu serveris edukalt töötaks, peate installimisel valima ühe pakettidest jaotisest „Featured Server Snaps”. Võistlustingimus on ilmne funktsioonist setup_private_mount(), mida kutsutakse snap-paketi ühenduspunkti nimeruumi ettevalmistamisel. See funktsioon loob ajutise kataloogi "/tmp/snap.$SNAP_NAME/tmp" või kasutab olemasolevat kataloogide ühendamiseks snap-paketi jaoks.

Kuna ajutise kataloogi nimi on etteaimatav, saab ründaja pärast omaniku kontrollimist, kuid enne mount süsteemikutse kutsumist, asendada selle sisu sümboolse lingiga. Näiteks saate luua /tmp/snap.lxd kataloogis sümlingi "/tmp/snap.lxd/tmp", mis osutab suvalisele kataloogile, ja kutse mount() järgib sümlinki ja ühendab kataloogi kataloogis. snap nimeruum. Sarnasel viisil saate ühendada oma sisu kausta /var/lib ja asendades /var/lib/snapd/mount/snap.snap-store.user-fstab, korraldada oma /etc kataloogi ühendamise nimeruumi snap pakett, mis korraldab teie teegi laadimise juurõigustega, asendades faili /etc/ld.so.preload.

Märgitakse, et ärakasutamise loomine osutus mittetriviaalseks ülesandeks, kuna snap-confine utiliit on Go keeles kirjutatud turvalisi programmeerimistehnikaid kasutades, sellel on AppArmori profiilidel põhinev kaitse, see filtreerib seccompi mehhanismi alusel süsteemikutseid ja kasutab mounti nimeruum isoleerimiseks. Teadlased suutsid aga süsteemi juurõiguste saamiseks ette valmistada toimiva ärakasutamise. Kasutuskood avaldatakse mõne nädala jooksul pärast seda, kui kasutajad installivad kaasasolevad värskendused.

Allikas: opennet.ru

Lisa kommentaar