Vulnérabilités dans networkd-dispatcher permettant d'obtenir des droits root

Les chercheurs en sécurité de Microsoft ont découvert deux vulnérabilités (CVE-2022-29799, CVE-2022-29800) dans le service networkd-dispatcher, nommées Nimbuspwn, permettant à un utilisateur non privilégié d'exécuter des commandes arbitraires avec des droits root. Le problème a été corrigé dans la version 2.2 de networkd-dispatcher. Il n'y a pas encore d'informations sur la publication des mises à jour par les distributions (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Networkd-dispatcher est utilisé dans de nombreuses distributions Linux, y compris Ubuntu, qui utilise un processus de fond systemd-networkd pour configurer les paramètres réseau, et exécute des fonctions similaires à NetworkManager-dispatcher, c'est-à-dire qu'il lance des scripts lors du changement de l'état de la connexion réseau, par exemple, il est utilisé pour le démarrage VPN après l'établissement de la connexion réseau principale.

Le processus de fond associé à networkd-dispatcher s'exécute avec des droits root et reçoit des signaux d'événements via le bus D-Bus. Les informations sur les événements liés aux changements d'état des connexions réseau sont envoyées par le service systemd-networkd. Le problème est que les utilisateurs non privilégiés peuvent générer un événement pour un état inexistant et initier le lancement de leur propre script, qui sera exécuté avec des droits root.

Systemd-networkd est conçu pour exécuter uniquement des scripts gestionnaires système placés dans le répertoire /etc/networkd-dispatcher et non remplaçables par l'utilisateur, mais en raison de la vulnérabilité (CVE-2022-29799) dans le code de traitement des chemins de fichiers, il était possible de sortir du répertoire de base et d'exécuter des scripts arbitraires. En particulier, lors de la formation d'un chemin de fichier vers le script, les valeurs OperationalState et AdministrativeState, transmises via D-Bus, n'étaient pas nettoyées pour les caractères spéciaux. Un attaquant pouvait générer son propre état contenant les symboles «.. /» et rediriger l'appel de networkd-dispatcher vers un autre répertoire.

La deuxième vulnérabilité (CVE-2022-29800) est liée à un état de concurrence : entre la vérification des paramètres du script (appartenance à root) et son exécution, il y avait un court laps de temps suffisant pour remplacer le fichier et contourner la vérification de l'appartenance du script à l'utilisateur root. De plus, networkd-dispatcher ne vérifiait pas les liens symboliques, y compris lors de l'exécution de scripts via l'appel subprocess.Popen, ce qui a considérablement simplifié l'organisation de l'attaque.

Technique d'exploitation :

  • Un répertoire «/tmp/nimbuspwn» et un lien symbolique «/tmp/nimbuspwn/poc.d» sont créés, pointant vers le répertoire «/sbin», utilisé pour la vérification des fichiers exécutables appartenant à root.
  • Pour les fichiers exécutables de «/sbin», des fichiers avec des noms similaires sont créés dans le répertoire «/tmp/nimbuspwn», par exemple, pour le fichier «/sbin/vgs», un fichier exécutables «/tmp/nimbuspwn/vgs» est créé, appartenant à un utilisateur non privilégié, dans lequel le code que l'attaquant souhaite exécuter est placé.
  • Par D-Bus, le processus networkd-dispatcher envoie un signal indiquant dans OperationalState la valeur «../../tmp/nimbuspwn/poc». Pour envoyer le signal dans l'espace de noms «org.freedesktop.network1», l'option de connexion de ses propres gestionnaires à systemd-networkd est utilisée, par exemple, à travers des manipulations avec gpgv ou epmd, ou on peut profiter du fait que systemd-networkd n'est pas lancé par défaut (par exemple, dans Linux Mint).
  • Après réception du signal, le networkd-dispatcher construit une liste des fichiers exécutables appartenant à l'utilisateur root et disponibles dans le répertoire «/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d», qui fait en fait référence à «/sbin».
  • Au moment où la liste des fichiers est obtenue, mais que le script n'est pas encore exécuté, le lien symbolique est redirigé de «/tmp/nimbuspwn/poc.d» vers «/tmp/nimbuspwn» et le networkd-dispatcher exécutera avec les droits root le script placé par l'attaquant.

Vulnérabilités dans networkd-dispatcher permettant d'obtenir des droits root


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