Qualys har identifisert to sårbarheter (CVE-2021-44731, CVE-2021-44730) i snap-confine-verktøyet, som leveres med SUID-rotflagget og kalles av snapd-prosessen for å opprette et kjørbart miljø for applikasjoner som leveres i selvstendige snap-pakker. Sårbarhetene lar en lokal, uprivilegert bruker kjøre kode med rotrettigheter på systemet. Problemene er løst i dagens snapd-pakkeoppdatering for Ubuntu 21.10, 20.04 og 18.04.
Den første sårbarheten (CVE-2021-44730) tillater et angrep gjennom hard link-manipulering, men krever deaktivering av systemhard link-beskyttelse (sett sysctl fs.protected_hardlinks til 0). Problemet er forårsaket av feil verifisering av plasseringen til de kjørbare filene til hjelpeprogrammene snap-update-ns og snap-discard-ns som kjøres som root. Banen til disse filene ble beregnet i sc_open_snapd_tool()-funksjonen basert på sin egen bane fra /proc/self/exe, som lar deg lage en hard lenke for å snap-confine i katalogen din og plassere dine egne versjoner av snap- update-ns og snap- utilities i denne katalogen discard-ns. Etter å ha kjørt via en hard lenke, vil snap-confine med rotrettigheter starte snap-update-ns og snap-discard-ns-filene fra gjeldende katalog, erstattet av angriperen.
Det andre sikkerhetsproblemet er forårsaket av en kappløpstilstand og kan utnyttes i konfigurasjonen. Ubuntu Skrivebord som standard. For at utnyttelsen skal fungere korrekt i Ubuntu Serveren krever et valg når man installerer en av pakkene fra delen «Featured Server Snaps». En kappløpstilstand oppstår i setup_private_mount()-funksjonen, som kalles når monteringspunktnavnerommet for en snap-pakke forberedes. Denne funksjonen oppretter en midlertidig katalog «/tmp/snap.$SNAP_NAME/tmp» eller bruker en eksisterende katalog til å binde-montere kataloger for snap-pakken.
Siden navnet på den midlertidige katalogen er forutsigbar, kan en angriper erstatte innholdet med en symbolsk lenke etter å ha sjekket eieren, men før han ringer mount-systemanropet. For eksempel kan du opprette en symbolkobling "/tmp/snap.lxd/tmp" i /tmp/snap.lxd-katalogen som peker til en vilkårlig katalog, og et kall til mount() vil følge symbolkoblingen og montere katalogen i snap navneområde. På lignende måte kan du montere innholdet ditt i /var/lib og, ved å erstatte /var/lib/snapd/mount/snap.snap-store.user-fstab, organisere monteringen av /etc-katalogen din i navneområdet til snap-pakken for å organisere lasting av biblioteket ditt fra med rotrettigheter ved å erstatte /etc/ld.so.preload.
Det bemerkes at å lage en utnyttelse viste seg å være en ikke-triviell oppgave, siden snap-confine-verktøyet er skrevet i Go ved hjelp av sikre programmeringsteknikker, har beskyttelse basert på AppArmor-profiler, filtrerer systemanrop basert på seccomp-mekanismen og bruker mount navneområdet for isolasjon. Forskerne var imidlertid i stand til å forberede en fungerende utnyttelse for å få rotrettigheter på systemet. Utnyttelseskoden vil bli publisert om noen uker etter at brukerne har installert de medfølgende oppdateringene.
Kilde: opennet.ru
