Lokaal root-kwetsbaarheden in het Snap-pakketbeheer.

Qualys heeft twee kwetsbaarheden (CVE-2021-44731, CVE-2021-44730) ontdekt in de snap-confine tool, die wordt geleverd met de SUID root flag en wordt aangeroepen door het snapd proces om een uitvoeringsomgeving te creƫren voor applicaties die worden geleverd in zelfvoorzienende pakketten in het snap formaat. De kwetsbaarheden stellen een lokale niet-geprivilegieerde gebruiker in staat om code uit te voeren met root-rechten op het systeem. De problemen zijn verholpen in de huidige update van de snapd pakketten voor Ubuntu 21.10, 20.04 en 18.04.

De eerste kwetsbaarheid (CVE-2021-44730) maakt een aanval mogelijk via het manipuleren van harde koppelingen, maar vereist het uitschakelen van de systeembeveiliging voor harde koppelingen (het instellen van sysctl fs.protected_hardlinks op 0). Het probleem wordt veroorzaakt door een onjuiste controle van de locatie van de uitvoerbare bestanden van de hulpprogramma's snap-update-ns en snap-discard-ns, die met root-rechten worden uitgevoerd. Het pad naar deze bestanden werd berekend in de functie sc_open_snapd_tool() op basis van het eigen pad van /proc/self/exe, wat het mogelijk maakt om een harde schakel te creƫren naar snap-confine in de eigen map en daar de eigen versies van de hulpprogramma's snap-update-ns en snap-discard-ns te plaatsen. Na de uitvoering via de harde schakel zal snap-confine met root-rechten de bestanden snap-update-ns en snap-discard-ns uitvoeren die door de aanvaller zijn geplaatst.

De tweede kwetsbaarheid wordt veroorzaakt door een raceconditie en kan worden uitgebuit in de standaardconfiguratie van Ubuntu Desktop. Voor een succesvolle exploitatie op Ubuntu Server is het nodig om tijdens de installatie een van de pakketten uit de sectie ā€˜Featured Server Snaps’ te kiezen. De raceconditie manifesteert zich in de functie setup_private_mount(), die wordt aangeroepen tijdens de voorbereiding van de namespace mountpoints voor het snap pakket. Deze functie creĆ«ert een tijdelijke map '/tmp/snap.$SNAP_NAME/tmp' of gebruikt een al bestaande map voor het bind-mounten van de mappen voor het snap formaat.

Omdat de naam van de tijdelijke directory voorspelbaar is, kan een aanvaller de inhoud vervangen door een symbolische link op het moment na de eigenaarcontrole maar vóór de aanroep van de systeemfunctie mount. Bijvoorbeeld, men kan in de directory /tmp/snap.lxd een symbolische link maken naar '/tmp/snap.lxd/tmp', die naar een willekeurige directory verwijst, en de aanroep mount() zal de symbolische link volgen en de directory in de snap-namespace monteren. Op dezelfde manier kan men zijn eigen inhoud in /var/lib monteren en via het vervangen van /var/lib/snapd/mount/snap.snap-store.user-fstab de montage van zijn directory /etc in de snap-pakket namespace organiseren om zijn bibliotheek met root-rechten te laden door /etc/ld.so.preload te vervangen.

Er werd opgemerkt dat het creëren van een exploit een niet-triviale taak bleek te zijn, aangezien het hulpprogramma snap-confine is geschreven in Go met gebruik van veilig programmeren, bescherming volgens AppArmor-profielen heeft, systeemaanroepen filtert via het seccomp-mechanisme en namespaces gebruikt voor isolatie van de montage. Desondanks is het onderzoekers gelukt om een werkende exploit voor het verkrijgen van root-rechten in het systeem voor te bereiden. De exploit-code zal over enkele weken worden gepubliceerd, nadat gebruikers de aangeboden updates hebben geïnstalleerd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster