
Linux LPE tramite snap-confine + systemd-tmpfiles, spiegato in dettaglio
Disclaimer: Questo repository è solo a scopo educativo. Tutti i contenuti si basano sull'avviso di sicurezza originale pubblicato da Qualys il 17 marzo 2026. La vulnerabilità è stata corretta: assicurati sempre che i tuoi sistemi siano aggiornati. Non utilizzare questo materiale contro sistemi che non possiedi o per i quali non hai esplicita autorizzazione scritta per il test.
CVE-2026-3888 è una vulnerabilità di Escalation Locale dei Privilegi (LPE) che colpisce l'installazione predefinita di Ubuntu Desktop >= 24.04. È stata scoperta e divulgata pubblicamente da Qualys nel marzo 2026.
Ciò che rende questa vulnerabilità particolarmente interessante, come hanno osservato gli stessi Qualys, è che non deriva da un singolo componente difettoso. Emerge invece dall'interazione di due programmi individualmente sicuri:
| Componente | Ruolo |
|---|---|
snap-confine | Binario SUID-root che costruisce il namespace di mount (sandbox) per le applicazioni snap |
systemd-tmpfiles | Daemon di proprietà root che pulisce periodicamente i file obsoleti in /tmp |
Nessuno dei due programmi è difettoso di per sé. Insieme, creano una finestra sfruttabile.
Avviso originale: https://cdn2.qualys.com/advisory/2026/03/17/snap-confine-systemd-tmpfiles.txt
Crediti: Qualys Security Research Team
cve-2026-3888/
├── README.md ← Sei qui
├── analysis/
│ ├── 01-vulnerability.md ← Analisi approfondita della vulnerabilità
│ ├── 02-race-condition.md ← Come funziona la race TOCTOU
│ ├── 03-backpressure-technique.md ← Il trucco del backpressure AF/UNIX
│ ├── 04-exploitation-steps.md ← Guida completa passo dopo passo
│ └── 05-mitigations.md ← Cosa è stato corretto e come
└── src/
├── firefox_2404.c ← Helper per la race (annotato)
└── librootshell.c ← Shellcode del loader dinamico (annotato)
| Versione Ubuntu | Età di pulizia | Tempo di attesa (reale) |
|---|---|---|
| 24.04 LTS | 30 giorni | 30 giorni |
| > 24.04 | 10 giorni | 10 giorni |
Corretto in: snapd 2.74.2
/tmp/.snap come root:root 0755/tmp attivo con scritture periodiche, ma lascia che /tmp/.snap diventi obsoletosystemd-tmpfiles elimina il /tmp/.snap obsoleto - poiché /tmp è scrivibile da tutti, l'attaccante ricrea .snap e ne diventa proprietariosnap-confinesnap-confine esegue il bind-mount di librerie di proprietà dell'attaccante come root nel namespaceld-linux-x86-64.so.2 con lo shellcode - qualsiasi binario SUID eseguito in questo namespace esegue il nostro codice come root/var/snap/firefox/common/