Qualys har identificeret en sårbarhed (CVE-2026-3888) i samarbejdsmåden mellem snap-confine og systemd-tmpfiles i Ubuntu, som gør det muligt for en ikke-privilegeret bruger at få root-adgang til systemet. Problemet opstår i Ubuntu i standardkonfigurationen fra version 24.04 og i Ubuntu 16.04-22.04, hvor sårbarheden kan udnyttes i ikke-standardkonfigurationer, der efterligner adfærden fra nyere versioner af distributionen. I Ubuntu er der tilgængeligt et fix i den seneste opdatering af snapd-pakken. Problemet i snapd er blevet løst i opdatering 2.75.
Sårbarheden opstår på grund af fejlbehæftet interaktion mellem værktøjerne snap-confine og systemd-tmpfiles, som køres med forhøjede privilegier. Værktøjet snap-confine opretter et sandbox-miljø til kørsel af snap-applikationer, mens systemd-tmpfiles udfører automatisk oprydning af temporære filer og mapper. Som standard er systemd-tmpfiles konfigureret til at slette alle gamle filer og mapper i /tmp, hvilket kan udnyttes af en angriber til at erstatte mappen /tmp/.snap lige efter den er blevet slettet af systemd-tmpfiles, men før den bliver genskabt af snap-confine.
Angrebet går ud på at vente på processen til oprydning af temporære filer, erstatte mappen /tmp/.snap efter dens sletning og placere en modificeret kopi af bibliotekerne i /tmp/.snap/usr/lib/x86_64-linux-gnu. Angriberen kan have brug for at vente flere dage på, at systemd-tmpfiles kører, da i Ubuntu 24.04 bliver oprydningsprocessen kørt hver 10. dag, og i nyere versioner hver 30. dag. Efter erstatningen af mappen opnår angriberen initialization af et nyt sandbox-miljø ved hjælp af snap-confine.
Under oprettelsen af indholdet i sandbox-miljøet i den midlertidige mappe /tmp/.snap afventer angriberen det rigtige tidspunkt og omdøber /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange til /tmp/.snap/usr/lib/x86_64-linux-gnu, hvilket dermed erstatter bibliotekerne og sikrer deres bind-mounting med root-rettigheder. På den måde får angriberen kontrol over de delte biblioteker og loaderen ld.so, der kører i snap-sandbox-miljøet, og kan udføre vilkårlig kode med root-rettigheder ved at køre et hvilket som helst suid-program, der bruger dynamisk linking.
Med root-adgang i et sandbox-miljø, der er isoleret via AppArmor og et systemkaldsfiltreringssystem baseret på seccomp, kan en angriber kopiere /bin/bash til katalogen /var/snap/$SNAP/common/ og give den rettighederne "04755" (suid root). På trods af at rettighederne er ændret i sandbox-miljøet, er filen med de ændrede rettigheder også tilgængelig i hovedsystemet, så for at opnå fuld root-adgang er det tilstrækkeligt at udføre /var/snap//common/bash som en almindelig ikke-privilegeret bruger fra det normale systemmiljø.
Samtidig blev der identificeret en sårbarhed i værktøjet uutils coreutils (Rust Coreutils), som er et alternativ til GNU Coreutils, skrevet i Rust. Sårbarheden tillader en ikke-privilegeret bruger at opnå root-rettigheder i systemet. Problemet blev identificeret under gennemgang af ændringer i Ubuntu 25.10 og blev midlertidigt løst før udgivelsen af Ubuntu 25.10 ved at levere /usr/bin/gnurm i stedet for uutils rm. Problemet i uutils blev løst i udgivelsen af uutils coreutils 0.3.0, uden at det blev angivet i changelog for reparation af sårbarheden (det blev angivet, at der var implementeret en sikker metode til at omgå stier i rm, du, chmod og chgrp).
Problemet er forårsaget af en racesituation i værktøjet "rm", der tillader en lokal bruger at ombytte indholdet af et katalog med et symbolsk link under sletning af en brugerkontrolleret fil af processen "rm" med root-rettigheder. Blandt andet kan sårbarheden udnyttes ved daglig kørsel fra cron-scriptet /etc/cron.daily/apport, som kører med root-rettigheder og rekursivt sletter indholdet af kataloget /var/crash, der er skrivbart for alle brugere i systemet.
Ved rekursiv sletning af kataloger kontrollerer værktøjet rm først alle kataloger og sletter dem derefter sekventielt i omvendt rækkefølge, hvilket kalder funktionen rmdir(). Hvis man lykkes med at ombytte moder-kataloget med et symbolsk link lige efter kontrol af dette katalog, men før kontrol af de underliggende børn i det, vil operationen føre til, at kataloget, som det symbolske link peger på, bliver slettet. På denne måde kan man opnå ikke kun sletning af enhver fil i systemet, men også forhøjelse af privilegier ved at slette kataloget /tmp/snap-private-tmp/$SNAP/tmp/.snap for at ombytte indholdet af sandbox-miljøet for snap-pakken (metoden til at opnå root er den samme som den første sårbarhed).
Kilde: opennet.ru
