
CVE-2025-6019: TOCTOU-Privilegieneskalation bei XFS-Resize in udisks2
CVE-2025-6019: udisks2 XFS Resize TOCTOU Privilegieneskalation Dieses Repository enthält einen Proof of Concept (PoC) für CVE-2025-6019, eine Race-Condition-Schwachstelle in udisks2, die eine lokale Privilegieneskalation über die Vergrößerung von XFS-Dateisystemen ermöglicht.
Dieser Exploit ist universell für jedes Linux-System ausgelegt, das die folgenden Kriterien erfüllt:
Verwundbarer Dienst: udisks2 (mit aktiviertem D-Bus-Zugriff).
Dateisystem-Tool: xfsprogs installiert (insbesondere mkfs.xfs).
Architektur: Unabhängig (funktioniert auf x86, x64, ARM, usw.).
Der Exploit wurde auf der folgenden Konfiguration verifiziert:
weapon.py übernimmt automatisch die PATH-Einrichtung der Umgebung, um mkfs.xfs zu finden, das normalerweise auf sbin beschränkt ist.Für den Exploit wird ein speziell präpariertes XFS-Image benötigt, das mit einer Protodatei erstellt wird. Dadurch können wir eine Dateisystemstruktur definieren, die eine SUID-Root-Binärdatei (pwnbash) enthält, ohne während der Image-Erstellung Root-Rechte zu benötigen. Das mkfs.xfs -p-Flag verwendet diese Vorlage, um das SUID-Bit direkt in die Metadaten des Images einzubrennen.
Standardbenutzer in Remote-Sitzungen (SSH, Docker) sind in der Nutzung von udisks2 eingeschränkt. Führen Sie dieses Skript aus, um eine lokale Sitzung (seat0) vorzutäuschen:
python3 bypass.py
Erzeugen Sie das SUID-Image mit weapon.py. Dieses Skript verwendet die XFS-Protodatei, um eine Shell mit 4755-Berechtigungen einzubetten. python3 weapon.py
Führen Sie trigger.sh aus, um udisks2 mit D-Bus-Resize-Anfragen zu überfluten. Dies zwingt den Daemon, temporäre Mountpunkte in /tmp/blockdev.XXXXXX zu erstellen. chmod +x trigger.sh ./trigger.sh
Da automatisierte Skripte in ressourcenbeschränkten Umgebungen instabil sein können, wird die manuelle Methode empfohlen: Überwachen Sie /tmp auf temporäre Mountpunkte: watch -n 0.1 "ls -la /tmp" Ziel identifizieren: Suchen Sie nach einem Verzeichnis mit weltweit lesbaren Berechtigungen (z. B. drwxr-xr-x) anstelle der standardmäßig gehärteten drwx------.
Payload ausführen: Sobald es identifiziert ist, navigieren Sie in das Verzeichnis und führen Sie die Shell aus:
cd /tmp/blockdev.Q797J3 # Example directory name ./pwnbash -p Ergebnis: Wenn die Ausführung innerhalb des Race-Fensters erfolgt (bevor das nosuid-Flag angewendet wird), erhalten Sie eine Root-Shell.
bypass.py: Konfigurationsskript zum Vortäuschen einer lokalen Sitzung (seat0) und zum Umgehen der Polkit-Einschränkungen über ~/.pam_environment.
weapon.py: SUID-Image-Generator unter Verwendung der XFS-Protodateivorlage.
trigger.sh: D-Bus-Race-Condition-Trigger für die udisks2-Dateisystemvergrößerung.
Für eine detaillierte Aufschlüsselung: 👉 NetaCoding - https://netacoding.com/posts/udisks2-cve_lpe/
Dieses Projekt dient nur zu Bildungs- und autorisierten Sicherheitstestzwecken. Unbefugter Zugriff auf Computersysteme ist illegal.