Tvrtka Qualys otkrila je ranjivost (CVE-2026-3888) u načinu rada paketa snap-confine i systemd-tmpfiles na Ubuntuu, koja omogućava neprivilegiranom korisniku da dobije root pristup sustavu. Problem se pojavljuje na Ubuntuu u zadanoj konfiguraciji od verzije 24.04. Na Ubuntuu 16.04-22.04 ranjivost se može iskoristiti u nestandardnim konfiguracijama koje oponašaju ponašanje novijih verzija distribucije. Na Ubuntuu je ispravak dostupan u jučerašnjem ažuriranju paketa snapd. U snapd problem je riješen u ažuriranju 2.75.
Ranjivost nastaje uslijed nepravilne interakcije alata snap-confine i systemd-tmpfiles, koji se izvršavaju s povišenim privilegijama. Alat snap-confine stvara sandbox okruženje za izvršavanje snap aplikacija, dok systemd-tmpfiles provodi automatsko čišćenje privremenih datoteka i direktorija. Po zadanim postavkama, alat systemd-tmpfiles podešen je za brisanje svih starih datoteka i direktorija u /tmp, što može iskoristiti napadač za zamjenu direktorija /tmp/.snap u trenutku nakon njegovog brisanja od strane alata systemd-tmpfiles, ali prije ponovnog kreiranja od strane snap-confine.
Napad se svodi na čekanje pokretanja procesa čišćenja privremenih datoteka, zamjena direktorija /tmp/.snap nakon njegovog brisanja i smještanje modificirane kopije biblioteka /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. Napadaču može biti potrebno nekoliko dana čekanja na pokretanje systemd-tmpfiles, budući da se na Ubuntuu 24.04 proces čišćenja pokreće svaka 10 dana, a u novijim verzijama svaka 30 dana. Nakon zamjene direktorija, napadač postiže inicijalizaciju novog sandbox okruženja pomoću snap-confine.
Prilikom stvaranja sadržaja sandbox okruženja u privremenom direktoriju /tmp/.snap napadač čeka pravi trenutak i preimenuje /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange u /tmp/.snap/usr/lib/x86_64-linux-gnu, na taj način zamjenjujući biblioteke i osiguravajući njihovo bind-montiranje s root pravima. Na taj način napadač dobiva kontrolu nad zajedničkim bibliotekama i učitavačem ld.so, koji se pokreću u sandbox okruženju snap, i može postići izvršavanje proizvoljnog koda s root pravima pokretanjem bilo kojeg suid programa u kojem se primjenjuje dinamičko povezivanje.
Imajući root pristup u sandbox okruženju, izoliranom putem AppArmor i filtra sistemskih poziva temeljenog na seccomp, napadač može kopirati /bin/bash u katalog /var/snap/$SNAP/common/ i postaviti mu prava „04755“ (suid root). Iako su prava promijenjena unutar sandbox okruženja, datoteka s promijenjenim pravima dostupna je i u osnovnom sustavu, stoga je za dobivanje potpunog root pristupa dovoljno pokrenuti /var/snap//common/bash kao običan neprivilegirani korisnik iz standardnog sistemskog okruženja.
Prilikom toga otkrivena je ranjivost u alatima uutils coreutils (Rust Coreutils), ekvivalentu paketa GNU Coreutils, napisanom na jeziku Rust. Ranjivost omogućava neprivilegiranom korisniku da dobije root prava u sustavu. Problem je otkriven tijekom recenzije promjena u Ubuntu 25.10 i zaobiđen do objavljivanja Ubuntu 25.10 isporukom /usr/bin/gnurm umjesto uutils rm. U paketu uutils problem je otklonjen u izdanju uutils coreutils 0.3.0, bez naznake u popisu promjena o otklanjanju ranjivosti (navedeno je da je u rm, du, chmod i chgrp implementirana sigurna metoda za zaobilaženje putanja).
Problem je uzrokovan stanjem utrke u alatu „rm“, omogućujući lokalnom korisniku da zamijeni sadržaj direktorija simboličkom vezom tijekom brisanja datoteke pod kontrolom korisnika procesom „rm“ s root pravima. Između ostalog, ranjivost se može iskoristiti tijekom svakodnevne upotrebe iz cron skripte /etc/cron.daily/apport, koja se pokreće s root pravima i rekurzivno briše sadržaj direktorija /var/crash, dostupnog za pisanje svim korisnicima u sustavu.
Tijekom rekurzivnog brisanja direktorija alat rm najprije provjerava sve direktorije, a zatim ih sequentialno uklanja u obrnutom redoslijedu, pozivajući funkciju rmdir(). Ako se postigne zamjena roditeljskog direktorija simboličkom vezom odmah nakon provjere tog direktorija, ali prije provjere ugniježđenih poddirektorija, operacija će rezultirati brisanjem direktorija na koji upućuje simbolička veza. Na taj način se može postići ne samo brisanje bilo koje datoteke u sustavu, već i podizanje privilegija kroz brisanje direktorija /tmp/snap-private-tmp/$SNAP/tmp/.snap kako bi se zamijenilo sadržaj sandbox okruženja snap paketa (metoda dobivanja root prava slična je prvoj ranjivosti).
Izvor: opennet.ru
