Kwetsbaarheden in snapd en Rust Coreutils die root-rechten in Ubuntu kunnen verkrijgen

Het bedrijf Qualys heeft een kwetsbaarheid (CVE-2026-3888) ontdekt in de werking van de combinatie van snap-confine en systemd-tmpfiles in Ubuntu, waardoor een niet-geprivilegieerde gebruiker root-toegang tot het systeem kan krijgen. Het probleem doet zich voor in Ubuntu met de standaardconfiguratie vanaf release 24.04. In Ubuntu 16.04-22.04 kan de kwetsbaarheid worden uitgebuit in niet-standaardconfiguraties die het gedrag van nieuwere versies van de distributie nabootsen. In Ubuntu is de oplossing beschikbaar in de update van het snapd-pakket van gisteren. In snapd is het probleem verholpen in update 2.75.

De kwetsbaarheid ontstaat door de onjuiste interactie tussen de hulpprogramma's snap-confine en systemd-tmpfiles, die met verhoogde privileges worden uitgevoerd. Het hulpprogramma snap-confine creƫert een sandbox-omgeving voor het uitvoeren van een snap-applicatie, terwijl systemd-tmpfiles automatisch tijdelijke bestanden en mappen opruimt. Standaard is systemd-tmpfiles ingesteld om alle oude bestanden en mappen in /tmp te verwijderen, wat door een aanvaller kan worden gebruikt om de map /tmp/.snap te vervalsen op het moment dat deze door systemd-tmpfiles wordt verwijderd, maar voordat deze opnieuw wordt aangemaakt door snap-confine.

De aanval bestaat uit het wachten op het starten van het proces voor het opruimen van tijdelijke bestanden, het vervalsen van de map /tmp/.snap na verwijdering en het plaatsen van een gemodificeerde kopie van de bibliotheken /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. Een aanvaller kan enkele dagen moeten wachten op het starten van systemd-tmpfiles, aangezien in Ubuntu 24.04 het opruimproces eens in de 10 dagen wordt uitgevoerd, en in nieuwere versies eens in de 30 dagen. Na het vervalsen van de map bereikt de aanvaller de initialisatie van een nieuwe sandbox-omgeving met behulp van snap-confine.

Tijdens het opzetten van de sandbox-omgeving in de tijdelijke map /tmp/.snap wacht de aanvaller op het juiste moment en hernoemt /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange naar /tmp/.snap/usr/lib/x86_64-linux-gnu, waarmee de bibliotheken worden vervalst en hun bind-montage met root-rechten wordt verzekerd. Op deze manier krijgt de aanvaller controle over de gedeelde bibliotheken en de loader ld.so, die in de sandbox-omgeving van snap worden uitgevoerd, en kan hij willekeurige code met root-rechten uitvoeren door elke suid-programma te starten waarin dynamische linking wordt toegepast.

Met root-toegang in een sandbox-omgeving, geĆÆsoleerd via AppArmor en een systeemaanroepfilter op basis van seccomp, kan een aanvaller /bin/bash kopiĆ«ren naar de map /var/snap/$SNAP/common/ en het bestand rechten ā€˜04755’ (suid root) geven. Hoewel de rechten binnen de sandbox-omgeving zijn gewijzigd, is het bestand met de gewijzigde rechten ook beschikbaar in het hoofd systeem, dus om volledige root-toegang te krijgen, is het voldoende om /var/snap//common/bash uit te voeren als een gewone niet-privilege gebruiker in de standaard systeemomgeving.

Tegelijkertijd werd er een kwetsbaarheid ontdekt in de uutils coreutils-toolset (Rust Coreutils), de tegenhanger van het GNU Coreutils-pakket, geschreven in Rust. Deze kwetsbaarheid stelt een niet-privilege gebruiker in staat om root-rechten in het systeem te verkrijgen. Het probleem werd ontdekt tijdens de beoordeling van wijzigingen in Ubuntu 25.10 en omzeild vóór de release van Ubuntu 25.10 door /usr/bin/gnurm te leveren in plaats van uutils rm. In het uutils-pakket werd het probleem opgelost in de release van uutils coreutils 0.3.0, zonder vermelding van de oplossing in de changelog (er werd vermeld dat rm, du, chmod en chgrp een veilige methode voor padomzeiling implementeerden).

Het probleem wordt veroorzaakt door een race-conditie in de ā€˜rm’-tool, die een lokale gebruiker in staat stelt om de inhoud van een map te vervangen door een symbolische link tijdens het verwijderen van een bestand dat door de gebruiker wordt beheerd door het ā€˜rm’-proces met root-rechten. Onder andere kan de kwetsbaarheid worden geĆ«xploiteerd bij dagelijkse uitvoering vanuit een cron-script /etc/cron.daily/apport, dat met root-rechten draait en recursief de inhoud van de map /var/crash verwijdert, die voor alle gebruikers in het systeem schrijfbaar is.

Bij het recursief verwijderen van mappen controleert de rm-tool eerst alle mappen en verwijdert ze vervolgens in omgekeerde volgorde door de functie rmdir() aan te roepen. Als men erin slaagt om de bovenliggende map snel te vervangen door een symbolische link onmiddellijk na de controle van deze map, maar voordat de onderliggende submappen zijn gecontroleerd, zal de operatie leiden tot het verwijderen van de map waar de symbolische link naar verwijst. Op deze manier kan men niet alleen elk bestand in het systeem verwijderen, maar ook privileges verhogen door de map /tmp/snap-private-tmp/$SNAP/tmp/.snap te verwijderen om de inhoud van de sandbox-omgeving van het snap-pakket te vervangen (de methode om root te verkrijgen is vergelijkbaar met de eerste kwetsbaarheid).

Bron: opennet.ru

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