Das Unternehmen Qualys hat eine SicherheitsanfÀlligkeit (CVE-2025-6019) in der Bibliothek libblockdev entdeckt, die es durch Manipulation mit dem Hintergrundprozess udisks ermöglicht, root-Rechte im System zu erlangen. Der Prototyp eines Exploits wurde in Ubuntu, Debian, Fedora und openSUSE Leap 15 demonstriert.
Der Prozess udisks wird in nahezu allen Linux-Distributionen eingesetzt und bietet eine D-Bus-Schnittstelle zur DurchfĂŒhrung von Operationen mit SpeichergerĂ€ten, wie z. B. Mounten und Formatieren. Um Aktionen mit den SpeichergerĂ€ten durchzufĂŒhren, ruft udisks Funktionen der Bibliothek libblockdev auf. Der Zugang zu udisks ist standardmĂ€Ăig nur fĂŒr Benutzer geöffnet, die im Kontext âallow_activeâ arbeiten, d. h. die physischen Zugang zum Computer haben und sich ĂŒber die lokale Konsole oder einen grafischen Sitzung verbunden haben. Benutzer, die sich remote, z. B. ĂŒber SSH, verbinden, fallen nicht in diesen Kontext und können die SicherheitsanfĂ€lligkeit nicht direkt ausnutzen.
Um diese EinschrĂ€nkung zu umgehen, kann ein Trick verwendet werden, der es erlaubt, das Authentifizierungsniveau auf âallow_activeâ zu erhöhen, indem mit dem Start der systemctl-Dienste des Benutzers manipuliert wird, was polkitd als Hinweis auf eine lokale Sitzung wahrnimmt. Der Kern der Methode besteht darin, dass polkitd das Vorhandensein physischen Zugangs erkennt und das Niveau âallow_activeâ basierend auf indirekten Anzeichen zuweist, die manipuliert werden können. Die EinschrĂ€nkungen der Methode bestehen darin, dass zum TĂ€uschen von polkitd ein aktives Sitzung eines lokalen Benutzers mit physischem Zugang erforderlich ist.
Die zweite Methode zur Erlangung von âallow_activeâ-Rechten besteht in der Ausnutzung einer SicherheitsanfĂ€lligkeit (CVE-2025-6018) in PAM (Pluggable Authentication Modules), die von Forschern bei Qualys wĂ€hrend der Untersuchung der SicherheitsanfĂ€lligkeit in libblockdev gefunden wurde. Die SicherheitsanfĂ€lligkeit ermöglicht es jedem Benutzer, einschlieĂlich derjenigen, die sich ĂŒber SSH verbinden, Operationen im Kontext âallow_activeâ durchzufĂŒhren. Das Problem ist spezifisch fĂŒr die PAM-Einstellungen in openSUSE Leap 15 und SUSE Linux Enterprise 15 und tritt nur in diesen Distributionen auf.
Im Modul pam_env in openSUSE und SUSE ist das Lesen der Datei ~/.pam_environment standardmĂ€Ăig aktiviert. Ăber diese Datei kann der Benutzer die Umgebungsvariablen XDG_SEAT=seat0 und XDG_VTNR=1 setzen, die bei weiterer Verarbeitung als Indikator fĂŒr die physische Anwesenheit des Benutzers interpretiert werden, auch wenn der Zugang tatsĂ€chlich ĂŒber SSH erfolgt. Das Modul pam_env wird auch bei der SSH-Verbindung in Debian 12 und Ubuntu 24.04 aufgerufen (in Debian 13 und Ubuntu 24.10+ ist es deaktiviert), jedoch kann das Setzen der Umgebungsvariablen in diesen Distributionen nicht zur Erhöhung des Zugriffslevels auf âallow_activeâ verwendet werden, da pam_env in der finalen Phase nach dem Laden des Moduls pam_systemd aufgerufen wird und die gesetzten Umgebungsvariablen keinen Einfluss auf die Sitzungsparameter haben können.
Was die Schwachstelle in libblockdev betrifft, kann ein Angreifer ein Abbild eines beliebigen Dateisystems im Loop-Modus einbinden, indem er in diesem Abbild eine ausfĂŒhrbare Datei mit dem SUID-Root-Flag oder ein spezielles GerĂ€t (/dev/mem) fĂŒr den Low-Level-Zugriff auf Festplatten oder Speicher platziert. Um solche Angriffe zu verhindern, werden die Abbild-Dateisysteme vom System mit den Flags nosuid und nodev eingehĂ€ngt, aber die Schwachstelle in libblockdev ermöglicht das Einbinden eines Abbilds ohne die Flags nosuid und nodev. Der Kern der Schwachstelle liegt darin, dass udisks einem Benutzer mit dem Zugriffslevel âallow_activeâ erlaubt, die GröĂe seiner Dateisysteme zu Ă€ndern, und libblockdev wĂ€hrend dieses Vorgangs das Dateisystem vorĂŒbergehend ohne Setzen der Flags nosuid und nodev einbindet.
Somit besteht der Angriff darin, ein Loop-GerĂ€t auf Basis des XFS-Abbilds zu erstellen, in dem eine SUID-Root-Datei abgelegt ist, eine Operation zur GröĂenĂ€nderung des Loop-GerĂ€ts zu initiieren und den Moment seiner Einbindung in das Verzeichnis /tmp/blockdev* zu ĂŒberwachen: victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksctl loop-setup âfile ./xfs.image âno-user-interaction Mapped file ./xfs.image as /dev/loop0. victim> while true; do /tmp/blockdev*/bash -c âsleep 10; ls -l /tmp/blockdev*/bashâ && break; done 2>/dev/null & victim> gdbus call âsystem âdest org.freedesktop.UDisks2 âobject-path /org/freedesktop/UDisks2/block_devices/loop0 âmethod org.freedesktop.UDisks2.Filesystem.Resize 0 â{}â Error: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Error resizing filesystem on /dev/loop0: Failed to unmount â/dev/loop0â after resizing it: target is busy -r-sr-xr-x. 1 root root 1406608 Jun 18 09:42 /tmp/blockdev.RSM429/bash victim> /tmp/blockdev*/bash -p victim# id uid=65534(nobody) gid=65534(nobody) euid=0(root) groups=65534(nobody)
Die Schwachstelle in libblockdev wurde bisher nur in Form von Patches behoben. Der Status der neuen Version des Pakets oder die Vorbereitung eines Fixes in den Distributionen kann auf den folgenden Seiten ĂŒberprĂŒft werden (wenn die Seite nicht verfĂŒgbar ist, haben die Entwickler der Distribution noch nicht mit der PrĂŒfung des Problems begonnen): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo und Arch (1, 2). Als Workaround zur Blockierung der Schwachstelle kann die Zugriffsregel fĂŒr die Operation âorg.freedesktop.udisks2.modify-deviceâ in polkit geĂ€ndert werden, indem der Wert des Parameters âallow_activeâ in der Datei /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy von âyesâ auf âauth_adminâ geĂ€ndert wird.
ZusĂ€tzlich kann die vor wenigen Stunden aufgedeckte Schwachstelle (CVE-2025-6020) im Paket linux-pam erwĂ€hnt werden, die es einem lokalen Benutzer ermöglicht, Root-Rechte zu erlangen. Das Modul pam_namespace ĂŒberprĂŒfte die vom Benutzer kontrollierten Dateipfade nicht ordnungsgemĂ€Ă, wodurch durch Manipulationen mit symbolischen Links und das Erreichen eines Rennens das Ăberschreiben von privilegierten Dateien im System möglich wurde. Die Schwachstelle wurde in der Version linux-pam 1.7.1 behoben. Der Status der neuen Version des Pakets oder die Vorbereitung eines Fixes in den Distributionen kann auf den folgenden Seiten ĂŒberprĂŒft werden: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo und Arch (1, 2).
Quelle: opennet.ru
