Des vulnérabilités dans snapd et Rust Coreutils permettant d'obtenir des privilèges root sur Ubuntu.

La société Qualys a identifié une vulnérabilité (CVE-2026-3888) dans le fonctionnement de l'articulation snap-confine et systemd-tmpfiles sur Ubuntu, permettant à un utilisateur non privilégié d'obtenir un accès root au système. Le problème se manifeste sur Ubuntu dans la configuration par défaut à partir de la version 24.04. Sur Ubuntu 16.04-22.04, la vulnérabilité peut être exploitée dans des configurations non standards imitant le comportement de versions plus récentes de la distribution. Sur Ubuntu, un correctif est disponible dans la mise à jour d'hier du paquet snapd. La problème a été résolu dans la mise à jour 2.75 de snapd.

La vulnérabilité provient d'une interaction incorrecte entre les utilitaires snap-confine et systemd-tmpfiles qui s'exécutent avec des privilèges élevés. L'utilitaire snap-confine crée un environnement sandbox pour exécuter une application snap, tandis que systemd-tmpfiles effectue le nettoyage automatique des fichiers et répertoires temporaires. Par défaut, l'utilitaire systemd-tmpfiles est configuré pour supprimer tous les anciens fichiers et répertoires dans /tmp, ce qui peut être utilisé par un attaquant pour substituer le répertoire /tmp/.snap au moment juste après sa suppression par l'utilitaire systemd-tmpfiles, mais avant sa recréation par la commande snap-confine.

L'attaque consiste à attendre le lancement du processus de nettoyage des fichiers temporaires, à remplacer le répertoire /tmp/.snap après sa suppression et à placer une copie modifiée des bibliothèques dans /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. L'attaquant peut devoir attendre plusieurs jours que systemd-tmpfiles s'exécute, car sous Ubuntu 24.04 le processus de nettoyage se lance tous les 10 jours, et dans les versions plus récentes, tous les 30 jours. Après avoir remplacé le répertoire, l'attaquant réussit à initialiser un nouvel environnement sandbox à l'aide de snap-confine.

Lors de la création de l'environnement sandbox dans le répertoire temporaire /tmp/.snap, l'attaquant attend le moment opportun et renomme /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange en /tmp/.snap/usr/lib/x86_64-linux-gnu, remplaçant ainsi les bibliothèques et assurant leur montage bind avec des droits root. De cette façon, l'attaquant prend le contrôle des bibliothèques partagées et du chargeur ld.so, exécutés dans l'environnement sandbox snap, et peut obtenir l'exécution de code arbitraire avec des privilèges root en lançant n'importe quel programme suid utilisant le lien dynamique.

Avec un accès root dans un environnement sandbox isolé par AppArmor et un filtre d'appels système basé sur seccomp, un attaquant peut copier /bin/bash dans le répertoire /var/snap/$SNAP/common/ et lui attribuer les droits «04755» (suid root). Bien que les droits soient modifiés à l'intérieur de l'environnement sandbox, le fichier avec les droits modifiés est également accessible dans le système principal, donc pour obtenir un accès root complet, il suffit d'exécuter /var/snap//common/bash en tant qu'utilisateur non privilégié depuis l'environnement système standard.

Une vulnérabilité a été découverte dans l'outil uutils coreutils (Rust Coreutils), équivalent du paquet GNU Coreutils, écrit en Rust. Cette vulnérabilité permet à un utilisateur non privilégié d'obtenir des droits root sur le système. Le problème a été identifié lors de la révision des modifications dans Ubuntu 25.10 et a été contourné avant la sortie de l'Ubuntu 25.10 par la fourniture de /usr/bin/gnurm au lieu de uutils rm. Dans le paquet uutils, le problème a été corrigé dans la version uutils coreutils 0.3.0, sans mention dans la liste des changements sur la correction de la vulnérabilité (il a été indiqué qu'une méthode de contournement sécurisée a été mise en œuvre dans rm, du, chmod et chgrp).

Le problème est causé par une condition de course dans l'utilitaire «rm», permettant à un utilisateur local de remplacer le contenu d'un répertoire par un lien symbolique pendant la suppression d'un fichier sous le contrôle de l'utilisateur par le processus «rm» avec des droits root. Parmi d'autres exploitations potentielles, la vulnérabilité peut être exploitée lors d'une exécution quotidienne d'un script cron /etc/cron.daily/apport, qui s'exécute avec des droits root et supprime récursivement le contenu du répertoire /var/crash, accessible en écriture à tous les utilisateurs du système.

Lors de la suppression récursive de répertoires, l'utilitaire rm vérifie d'abord tous les répertoires, puis les supprime successivement dans l'ordre inverse, en appelant la fonction rmdir(). Si on réussit à remplacer le répertoire parent par un lien symbolique juste après la vérification de ce répertoire, mais avant la vérification de ses répertoires enfants, l'opération entraînera la suppression du répertoire pointé par le lien symbolique. Cela permet non seulement de supprimer n'importe quel fichier dans le système, mais aussi d'augmenter les privilèges en supprimant le répertoire /tmp/snap-private-tmp/$SNAP/tmp/.snap pour remplacer le contenu de l'environnement sandbox du paquet snap (la méthode d'obtention de root est similaire à la première vulnérabilité).

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