Vulnérabilités dans PAM et libblockdev, permettant d'obtenir des droits root dans le système

La société Qualys a détecté une vulnérabilité (CVE-2025-6019) dans la bibliothèque libblockdev, permettant, par des manipulations du processus en arrière-plan udisks, d'obtenir des droits root sur le système. Le fonctionnement d'un prototype d'exploit a été démontré sur Ubuntu, Debian, Fedora et openSUSE Leap 15.

Le processus udisks est utilisé dans pratiquement toutes les distributions Linux et fournit une interface D-Bus pour effectuer des opérations sur les supports, comme le montage et le formatage. Pour réaliser des actions sur les supports, udisks appelle les fonctions de la bibliothèque libblockdev. L'accès à udisks est par défaut ouvert uniquement aux utilisateurs travaillant dans le contexte « allow_active », c'est-à-dire ayant un accès physique à l'ordinateur et connectés via une console locale ou ayant lancé une session graphique. Les utilisateurs se connectant à distance, par exemple par SSH, ne se trouvent pas dans ce contexte et ne peuvent pas exploiter directement la vulnérabilité.

Pour contourner cette limitation, on peut utiliser un truc permettant d'élever le niveau d'authentification à « allow_active » en manipulant le lancement d'un service utilisateur via l'outil systemctl, que polkitd interprétera comme un signe de session locale. Le principe de la méthode est que polkitd détermine la présence d'un accès physique et attribue le niveau « allow_active » en fonction d'indices indirects sur lesquels on peut agir. La limitation de la méthode est que pour tromper polkitd, il est nécessaire qu'une session d'utilisateur local avec accès physique soit déjà active dans le système.

La deuxième méthode pour obtenir des droits « allow_active » est l'exploitation d'une vulnérabilité (CVE-2025-6018) dans PAM (Pluggable Authentication Modules), découverte par les chercheurs de Qualys lors de l'analyse de la vulnérabilité dans libblockdev. Cette vulnérabilité permet à tout utilisateur, y compris celui se connectant par SSH, d'effectuer des opérations dans le contexte « allow_active ». Le problème est spécifique aux paramètres PAM dans openSUSE Leap 15 et SUSE Linux Enterprise 15, et ne se manifeste que dans ces distributions.

Dans le module pam_env d'openSUSE et de SUSE, la lecture du fichier ~/.pam_environment est activée par défaut. À travers ce fichier, l'utilisateur peut définir les variables d'environnement XDG_SEAT=seat0 et XDG_VTNR=1, qui seront considérées lors du traitement comme un indicateur de la présence physique de l'utilisateur, même si la connexion a été effectuée via SSH. Le module pam_env est également appelé lors des connexions SSH dans Debian 12 et Ubuntu 24.04 (dans Debian 13 et Ubuntu 24.10 et versions ultérieures, il est désactivé), mais la définition des variables d'environnement dans ces distributions ne peut pas être utilisée pour élever le niveau d'accès à « allow_active », car pam_env est appelé à la fin du processus après le chargement du module pam_systemd et les variables d'environnement définies ne peuvent pas affecter les paramètres de session.

En ce qui concerne la vulnérabilité dans libblockdev, un attaquant peut monter une image de système de fichiers arbitraire en mode loop, en plaçant dans cette image un fichier exécutable avec le drapeau SUID root ou un appareil spécial (/dev/mem) pour un accès bas niveau aux disques ou à la mémoire. Pour bloquer de telles attaques, les images de systèmes de fichiers sont montées par le système avec les drapeaux nosuid et nodev, mais la vulnérabilité dans libblockdev permet de monter une image sans ces drapeaux. L'essence de la vulnérabilité est qu'udisks permet à un utilisateur ayant le niveau d'accès « allow_active » de modifier la taille de ses systèmes de fichiers et libblockdev monte temporairement le système de fichiers sans appliquer les drapeaux nosuid et nodev durant cette opération.

Ainsi, l'attaque consiste à créer un dispositif loop basé sur une image de système de fichiers XFS, dans laquelle est placé un fichier suid root, d'initier une opération de redimensionnement du dispositif loop et de suivre le moment de son montage dans le répertoire /tmp/blockdev*: victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksctl loop-setup --file ./xfs.image --no-user-interaction Fichier mappé ./xfs.image en /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 '{}' Erreur : GDBus.Error:org.freedesktop.UDisks2.Error.Failed : Erreur lors du redimensionnement du système de fichiers sur /dev/loop0 : Impossible de démonter '/dev/loop0' après l'avoir redimensionné : la cible est occupée -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) groupes=65534(nobody)

La vulnérabilité dans libblockdev a été corrigée uniquement sous forme de correctifs. Vous pouvez vérifier l'état de la nouvelle version du paquet ou la préparation d'une correction dans les distributions sur les pages suivantes (si la page est inaccessible, cela signifie que les développeurs de la distribution n'ont pas encore commencé à examiner le problème) : Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo et Arch (1, 2). Comme solution de contournement pour bloquer la vulnérabilité, vous pouvez modifier la règle d'accès à l'opération « org.freedesktop.udisks2.modify-device » dans polkit, en changeant dans le fichier /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy la valeur du paramètre « allow_active » de « yes » à « auth_admin ».

On peut également noter la vulnérabilité (CVE-2025-6020) dans le paquet linux-pam, révélée il y a quelques heures, permettant à un utilisateur local d'obtenir des droits root. Le module pam_namespace ne vérifiait pas correctement les chemins de fichiers sous le contrôle de l'utilisateur, ce qui permettait, à travers des manipulations avec des liens symboliques et en atteignant un état de course, de réécrire des fichiers privilégiés dans le système. La vulnérabilité a été corrigée dans la version linux-pam 1.7.1. Vous pouvez vérifier l'état de la nouvelle version du paquet ou la préparation d'une correction dans les distributions sur les pages suivantes : Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo et Arch (1, 2).

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster