Qualys ha identificat una vulnerabilitat (CVE-2026-3888) al paquet snap-confine i systemd-tmpfiles a Ubuntu, que permet a un usuari sense privilegis obtenir accés root al sistema. El problema es manifesta a la configuració predeterminada d'Ubuntu a partir de la versió 24.04. A Ubuntu 16.04-22.04, la vulnerabilitat es pot explotar en configuracions no predeterminades que imiten el comportament de les versions més noves de la distribució. Hi ha una solució per a Ubuntu disponible a l'actualització del paquet snapd d'ahir. El problema es va solucionar a l'actualització snapd 2.75.
La vulnerabilitat sorgeix a causa d'una interacció incorrecta entre les utilitats snap-confine i systemd-tmpfiles, ambdues executant-se amb privilegis elevats. Snap-confine crea un entorn de sandbox per executar una aplicació snap, mentre que systemd-tmpfiles neteja automàticament els fitxers i directoris temporals. Per defecte, systemd-tmpfiles està configurat per suprimir tots els fitxers i directoris antics de /tmp, cosa que un atacant pot utilitzar per substituir el directori /tmp/.snap després que systemd-tmpfiles l'hagi suprimit però abans que snap-confine l'hagi recreat.
L'atac consisteix a esperar que comenci el procés de neteja de fitxers temporals, substituir el directori /tmp/.snap després que s'hagi suprimit i col·locar una còpia modificada de les biblioteques a /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. L'atacant pot haver d'esperar diversos dies perquè systemd-tmpfiles comenci, ja que el procés de neteja s'executa cada 10 dies a Ubuntu 24.04 i cada 30 dies a les versions més noves. Després de substituir el directori, l'atacant inicialitza un nou entorn de sandbox mitjançant snap-confine.
Mentre construeix la càrrega útil de l'entorn de sandbox al directori temporal /tmp/.snap, l'atacant espera el moment adequat i canvia el nom de /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange a /tmp/.snap/usr/lib/x86_64-linux-gnu, substituint així les biblioteques i assegurant el muntatge de la seva vinculació amb privilegis de root. Això dóna a l'atacant control sobre les biblioteques compartides i el carregador ld.so que s'executa a l'entorn de sandbox snap i li permet executar codi arbitrari amb privilegis de root executant qualsevol programa suid que utilitzi l'enllaç dinàmic.
Amb accés root en un entorn de sandbox aïllat per AppArmor i un filtre de crides de sistema basat en seccomp, un atacant pot copiar /bin/bash al directori /var/snap/$SNAP/common/ i establir els seus permisos a "04755" (suid root). Tot i que els permisos es canvien dins de l'entorn de sandbox, el fitxer amb els permisos modificats també és accessible al sistema amfitrió. Per tant, per obtenir accés root complet, simplement executeu /var/snap/<nom_del_paquet_snap>/common/bash com a usuari normal i sense privilegis des de l'entorn de sistema predeterminat.
També es va descobrir una vulnerabilitat a la cadena d'eines uutils coreutils (Rust Coreutils), un equivalent basat en Rust del paquet GNU Coreutils. La vulnerabilitat permet a un usuari sense privilegis obtenir privilegis de root. El problema es va descobrir durant el registre de canvis d'Ubuntu 25.10 i es va solucionar amb una solució alternativa abans del llançament d'Ubuntu 25.10 distribuint /usr/bin/gnurm en lloc d'uutils rm. El problema es va solucionar a la versió 0.3.0 d'uutils coreutils del paquet, sense indicar la mitigació de la vulnerabilitat al registre de canvis (es va indicar que rm, du, chmod i chgrp implementaven un mètode de travessia de ruta segura).
El problema està causat per una condició de carrera a la utilitat "rm", que permet a un usuari local substituir el contingut d'un directori per un enllaç simbòlic en suprimir un fitxer controlat per l'usuari mitjançant el procés "rm" amb privilegis de root. Entre altres coses, la vulnerabilitat es pot explotar executant l'script /etc/cron.daily/apport diàriament des de cron. Aquest script, executat amb privilegis de root, suprimeix recursivament el contingut del directori /var/crash, en què tots els usuaris del sistema poden escriure.
Quan es suprimeixen directoris recursivament, la utilitat rm primer escaneja tots els directoris i després els suprimeix seqüencialment en ordre invers cridant la funció rmdir(). Si un directori principal es substitueix per un enllaç simbòlic immediatament després d'escanejar aquest directori però abans d'escanejar els seus directoris fills, l'operació provocarà l'eliminació del directori al qual apunta l'enllaç simbòlic. Això permet no només l'eliminació de qualsevol fitxer del sistema, sinó també l'escalada de privilegis eliminant el directori /tmp/snap-private-tmp/$SNAP/tmp/.snap per substituir el contingut de l'entorn de sandbox del paquet snap (el mètode per obtenir l'accés root és similar a la primera vulnerabilitat).
Font: opennet.ru
