Qualys avduket nyhetene som jeg identifiserer to sårbarheter (CVE-2021-44731 og CVE-2021-44730) i snap-confine-verktøyet, sendt med root-SUID-flagget og kalt opp av snapd-prosessen for å generere et kjørbart miljø for applikasjoner distribuert i snap-pakker.
I blogginnlegget er det nevnt at sårbarheter lar en uprivilegert lokal bruker oppnå kodekjøring som root i systemet.
Den første sårbarheten tillater et fysisk koblingsangrep, men krever deaktivering av systemhardlinks-beskyttelse (ved å sette sysctl fs.protected_hardlinks til 0).
Problemet det er på grunn av en feil verifisering av plasseringen av de kjørbare filene av verktøyene snap-update-ns og snap-discard-ns som kjører som rot. Banen til disse filene ble beregnet i sc_open_snapd_tool()-funksjonen basert på sin egen bane fra /proc/self/exe, slik at du kan lage en hard lenke for å begrense i katalogen din og sette alternativene dine til snap-update-ns og snap -discard-ns i denne katalogen. Når den startes fra en hard kobling, vil snap-confine som root kjøre de angriper-erstattede snap-update-ns og snap-discard-ns-filene fra gjeldende katalog.
Vellykket utnyttelse av dette sikkerhetsproblemet lar enhver ikke-privilegert bruker få root-privilegier på den sårbare verten. Qualys sikkerhetsforskere har vært i stand til uavhengig å verifisere sårbarheten, utvikle en utnyttelse og få fulle root-privilegier på standard Ubuntu-installasjoner.
Så snart Qualys-forskningsteamet bekreftet sårbarheten, engasjerte vi oss i ansvarlig avsløring av sårbarhet og koordinerte med leverandør- og åpen kildekodedistribusjoner for å kunngjøre denne nylig oppdagede sårbarheten.
Den andre sårbarheten er forårsaket av en rasetilstand og kan utnyttes i standard Ubuntu-skrivebordskonfigurasjon. For at utnyttelsen skal fungere vellykket på Ubuntu Server, må du velge en av pakkene fra delen "Featured Server Snaps" under installasjonen.
løpstilstand manifesterer seg i setup_private_mount()-funksjonen kalles under klargjøring av monteringspunktets navneområde for instant-pakken. Denne funksjonen oppretter en midlertidig katalog "/tmp/snap.$SNAP_NAME/tmp" eller bruker en eksisterende til å koble og montere kataloger for snap-pakken til den.
Siden navnet på den midlertidige katalogen er forutsigbar, kan en angriper endre innholdet til en symbolsk lenke etter å ha bekreftet eieren, men før han ringer til monteringssystemet. For eksempel kan du opprette en symbolkobling "/tmp/snap.lxd/tmp" i /tmp/snap.lxd-katalogen som peker til en vilkårlig katalog, og mount()-kallet vil følge symbolkoblingen og montere katalogen i rommet av navn.
På samme måte kan du montere innholdet i /var/lib og, overstyre /var/lib/snapd/mount/snap.snap-store.user-fstab, arrangere å montere /etc-katalogen din i pakkens navneområde snap for å laste biblioteket ditt fra rottilgang ved å erstatte /etc/ld.so.preload.
Det observeres at å skape en utnyttelse viste seg å være en ikke-triviell oppgave, siden snap-confine-verktøyet er skrevet ved hjelp av sikre programmeringsteknikker (snapd er skrevet i Go, men C brukes for snap-confine), har beskyttelse basert på AppArmor-profiler, filtrerer systemanrop basert på seccomp-mekanismen og bruker et mount-navneområde for isolasjon.
Forskerne var imidlertid i stand til å forberede en funksjonell utnyttelse for å få root-tilgang på systemet. Utnyttelseskoden vil bli utgitt noen uker etter at brukerne har installert de medfølgende oppdateringene.
Til slutt er det verdt å nevne detProblemene ble løst i snapd-pakkeoppdateringen for Ubuntu versjoner 21.10, 20.04 og 18.04.
I tillegg til de andre distribusjonene som bruker Snap, har Snapd 2.54.3 blitt utgitt, som i tillegg til problemene ovenfor, fikser en annen sårbarhet (CVE-2021-4120), som tillater, når du installerer spesialdesignede plugin-pakker, overstyr vilkårlige AppArmor-regler og omgå tilgangsbegrensningene som er satt for pakken.
Lur interessert i å vite mer om det, kan du sjekke detaljene I den følgende lenken.