L'azienda Qualys ha identificato una vulnerabilità (CVE-2026-3888) nell'organizzazione del sistema tra snap-confine e systemd-tmpfiles in Ubuntu, che consente a un utente non privilegiato di ottenere accesso root al sistema. Il problema si manifesta in Ubuntu nella configurazione predefinita a partire dalla release 24.04. In Ubuntu 16.04-22.04, la vulnerabilità può essere sfruttata in configurazioni non standard che imitano il comportamento di versioni più recenti della distribuzione. In Ubuntu, la correzione è disponibile nell'aggiornamento del pacchetto snapd rilasciato ieri. In snapd, il problema è stato risolto nell'aggiornamento 2.75.
La vulnerabilità deriva da un'interazione non corretta tra gli strumenti snap-confine e systemd-tmpfiles, eseguiti con privilegi elevati. Lo strumento snap-confine crea un ambiente sandbox per l'esecuzione delle applicazioni snap, mentre systemd-tmpfiles esegue la pulizia automatica dei file e delle directory temporanei. Per impostazione predefinita, lo strumento systemd-tmpfiles è configurato per rimuovere tutti i file e le directory obsolete in /tmp, il che può essere sfruttato da un attaccante per sostituire la directory /tmp/.snap nel momento successivo alla sua rimozione da parte di systemd-tmpfiles, ma prima della ricreazione da parte di snap-confine.
L'attacco consiste nell'attendere l'avvio del processo di pulizia dei file temporanei, sostituendo la directory /tmp/.snap dopo la sua rimozione e inserendo una copia modificata delle librerie in /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. L'attaccante potrebbe dover attendere alcuni giorni per l'avvio di systemd-tmpfiles, poiché in Ubuntu 24.04 il processo di pulizia viene eseguito ogni 10 giorni, mentre nelle versioni più recenti ogni 30 giorni. Dopo aver sostituito la directory, l'attaccante riesce a inizializzare un nuovo ambiente sandbox utilizzando snap-confine.
Durante la creazione del contenuto dell'ambiente sandbox nella directory temporanea /tmp/.snap, l'attaccante attende il momento opportuno e rinomina /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange in /tmp/.snap/usr/lib/x86_64-linux-gnu, sostituendo così le librerie e garantendo il loro montaggio bind con privilegi root. In questo modo, l'attaccante ottiene il controllo sulle librerie condivise e sul caricatore ld.so, in esecuzione nell'ambiente sandbox di snap, e può ottenere l'esecuzione di codice arbitrario con privilegi root avviando qualsiasi programma suid in cui viene applicato il collegamento dinamico.
Con accesso root in un ambiente sandbox isolato tramite AppArmor e un filtro delle chiamate di sistema basato su seccomp, un attaccante può copiare /bin/bash nella directory /var/snap/$SNAP/common/ e impostare i suoi permessi a "04755" (suid root). Anche se i permessi vengono modificati all'interno dell'ambiente sandbox, il file con i permessi modificati è accessibile anche nel sistema principale, quindi per ottenere un accesso root completo è sufficiente eseguire /var/snap//common/bash come utente non privilegiato da un ambiente di sistema standard.
Inoltre, è stata identificata una vulnerabilità nell'insieme di strumenti uutils coreutils (Rust Coreutils), l'analogo del pacchetto GNU Coreutils, scritto in Rust. La vulnerabilità consente a un utente non privilegiato di ottenere diritti di root nel sistema. Il problema è stato rilevato durante la revisione delle modifiche in Ubuntu 25.10 ed è stato risolto in modo indiretto prima del rilascio di Ubuntu 25.10 tramite la fornitura di /usr/bin/gnurm invece di uutils rm. Nel pacchetto uutils, il problema è stato risolto nella versione uutils coreutils 0.3.0, senza annotazione nella lista delle modifiche riguardo alla vulnerabilità (è stato indicato che in rm, du, chmod e chgrp è stato implementato un metodo sicuro per l'attraversamento dei percorsi).
Il problema è causato da una condizione di gara nell'utility "rm", che consente a un utente locale di sostituire il contenuto di una directory con un link simbolico durante l'eliminazione di un file sotto il controllo dell'utente da parte del processo "rm" con diritti di root. Tra l'altro, la vulnerabilità può essere sfruttata durante l'esecuzione giornaliera da uno script cron /etc/cron.daily/apport, che viene eseguito con diritti di root e elimina ricorsivamente il contenuto della directory /var/crash, accessibile in scrittura a tutti gli utenti nel sistema.
Durante l'eliminazione ricorsiva delle directory, l'utility rm verifica prima tutte le directory e poi le elimina in ordine inverso, richiamando la funzione rmdir(). Se si riesce a sostituire la directory padre con un link simbolico subito dopo la verifica di quella directory, ma prima che vengano verificate le directory figlie al suo interno, l'operazione porterà all'eliminazione della directory a cui punta il link simbolico. In questo modo è possibile non solo eliminare qualsiasi file nel sistema, ma anche ottenere un incremento dei privilegi tramite l'eliminazione della directory /tmp/snap-private-tmp/$SNAP/tmp/.snap per sostituire il contenuto dell'ambiente sandbox del pacchetto snap (il metodo per ottenere root è analogo alla prima vulnerabilità).
Fonte: opennet.ru
