
Linux LPE via snap-confine + systemd-tmpfiles, expliqué en profondeur
Avertissement : Ce dépôt est uniquement à des fins éducatives. Tout le contenu est basé sur l'avis de sécurité original publié par Qualys le 17 mars 2026. La vulnérabilité a été corrigée — assurez-vous toujours que vos systèmes sont à jour. N'utilisez pas ce matériel contre des systèmes dont vous n'êtes pas propriétaire ou pour lesquels vous n'avez pas d'autorisation écrite explicite de test.
CVE-2026-3888 est une vulnérabilité d'élévation de privilèges locale (LPE) affectant l'installation par défaut d'Ubuntu Desktop >= 24.04. Elle a été découverte et divulguée publiquement par Qualys en mars 2026.
Ce qui rend cette vulnérabilité particulièrement intéressante — comme Qualys l'a elle-même souligné — c'est qu'elle ne provient pas d'un seul composant défectueux. Elle émerge plutôt de l'interaction de deux programmes individuellement sécurisés :
| Composant | Rôle |
|---|---|
snap-confine | Binaire SUID-root qui construit l'espace de noms de montage (sandbox) pour les applications snap |
systemd-tmpfiles | Démon appartenant à root qui nettoie périodiquement les fichiers obsolètes dans /tmp |
Aucun de ces programmes n'est défectueux en soi. Ensemble, ils créent une fenêtre exploitable.
Avis original : https://cdn2.qualys.com/advisory/2026/03/17/snap-confine-systemd-tmpfiles.txt
Crédit : Équipe de recherche en sécurité de Qualys
cve-2026-3888/
├── README.md ← Vous êtes ici
├── analysis/
│ ├── 01-vulnerability.md ← Analyse approfondie de la vulnérabilité
│ ├── 02-race-condition.md ← Comment fonctionne la course TOCTOU
│ ├── 03-backpressure-technique.md ← L'astuce de contre-pression AF/UNIX
│ ├── 04-exploitation-steps.md ← Procédure complète étape par étape
│ └── 05-mitigations.md ← Ce qui a été corrigé et comment
└── src/
├── firefox_2404.c ← Aide à la course (annoté)
└── librootshell.c ← Shellcode du chargeur dynamique (annoté)
| Version d'Ubuntu | Âge de nettoyage | Temps d'attente (réel) |
|---|---|---|
| 24.04 LTS | 30 jours | 30 jours |
| > 24.04 | 10 jours | 10 jours |
Corrigé dans : snapd 2.74.2
/tmp/.snap en tant que root:root 0755/tmp actif avec des écritures périodiques, mais laissez /tmp/.snap devenir obsolètesystemd-tmpfiles supprime le /tmp/.snap obsolète — puisque /tmp est accessible en écriture mondiale, l'attaquant recrée .snap et en devient propriétairesnap-confine pas à passnap-confine monte par liaison des bibliothèques appartenant à l'attaquant en tant que root dans l'espace de nomsld-linux-x86-64.so.2 avec le shellcode — tout binaire SUID exécuté dans cet espace de noms exécute notre code en tant que root/var/snap/firefox/common/ pour obtenir un shell entièrement privilégié