Nimbuspwn, une vulnérabilité dans networkd-dispatcher qui permet d'exécuter des commandes en tant que root

Les Les chercheurs en sécurité de Microsoft libérés les nouvelles qui ont identifié deux vulnérabilités (CVE-2022-29799, CVE-2022-29800) dans le service networkd-dispatcher nom de code Nimbuspwn qui permettent à un utilisateur non privilégié d'exécuter des commandes arbitraires en tant que root.

networkd-dispatcher fr utilisé par de nombreuses distributions Linux, y compris Ubuntu, qui utilise le processus d'arrière-plan systemd-networkd pour configurer les paramètres réseau et exécute des fonctions similaires à NetworkManager-dispatcher, c'est-à-dire qu'il gère l'exécution du script lorsque l'état de la connexion réseau change, par exemple, il est utilisé pour démarrer un VPN après avoir établi le connexion au réseau principal.

Microsoft a découvert plusieurs vulnérabilités, appelées collectivement Nimbuspwn, qui pourraient permettre à un attaquant d'élever les privilèges à la racine sur de nombreux points de terminaison de bureau Linux. Les vulnérabilités peuvent être enchaînées pour obtenir des privilèges root sur les systèmes Linux, permettant aux attaquants de déployer des charges utiles telles qu'une porte dérobée root et d'effectuer d'autres actions malveillantes via l'exécution arbitraire de code root. De plus, les vulnérabilités de Nimbuspwn pourraient potentiellement être exploitées comme vecteur d'accès root par des menaces plus sophistiquées, telles que des logiciels malveillants ou des ransomwares, pour avoir un impact supplémentaire sur les appareils vulnérables.

Nous avons découvert les vulnérabilités en écoutant les messages sur le bus système tout en effectuant des révisions de code et des analyses dynamiques sur les services exécutés en tant que root, et avons remarqué un modèle étrange dans une unité systemd appelée networkd-dispatcher.

Le processus d'arrière-plan associé à networkd-dispatcher s'exécute en tant que root et écoute les événements via le D-Bus. Le service systemd-networkd envoie des informations sur les événements liés au changement d'état des connexions réseau. Le problème est que les utilisateurs non privilégiés peuvent déclencher un événement de statut inexistant et commencer à exécuter votre script, qui s'exécutera en tant que root.

systemd-networkd est conçu pour exécuter uniquement des scripts contrôleur système situé dans le répertoire /etc/networkd-dispatcher et non remplaçable par l'utilisateur, mais en raison d'une vulnérabilité (CVE-2022-29799) il était possible que le code de gestion du chemin d'accès au fichier ait été désactivé à partir du répertoire de base des limites et exécuter des scripts arbitraires.

En particulier, lors de la formation du chemin du fichier vers le script, les valeurs OperationalState et AdministrationState transmises via D-Bus ont été utilisées, dans lesquelles les caractères spéciaux n'ont pas été supprimés. Un attaquant pourrait générer son propre état avec les caractères "../" dans le nom et rediriger l'appel networkd-dispatcher vers un autre répertoire.

La deuxième vulnérabilité (CVE-2022-29800) est lié à une condition de concurrence : Entre la vérification des paramètres du script (appartenant à root) et son exécution, il y avait une courte période de temps, suffisante pour remplacer le fichier et ignorer la vérification du script appartenant à root. De plus, networkd-dispatcher ne vérifiait pas les liens symboliques, même lors de l'exécution de scripts via l'appel subprocess.Popen, ce qui simplifiait grandement l'orchestration des attaques.

Le répertoire "/tmp/nimbuspwn" est créé et un lien symbolique "/tmp/nimbuspwn/poc.d" pointant vers le répertoire "/sbin" est créé qui est utilisé pour passer une vérification des fichiers exécutables appartenant à root.

Pour les fichiers exécutables « /sbin », des fichiers portant le même nom sont créés dans le répertoire « /tmp/nimbuspwn », par exemple, pour le fichier « /sbin/vgs », un fichier exécutable « /tmp/nimbuspwn/vgs » est créé , appartenant à un utilisateur sans privilèges, dans lequel est placé le code que l'attaquant souhaite exécuter.

Un signal D-Bus est envoyé au processus networkd-dispatcher avec OperationalState défini sur "../../../tmp/nimbuspwn/poc". Pour envoyer un signal dans l'espace de noms "org.freedesktop.network1", vous avez utilisé la possibilité de connecter vos contrôleurs à systemd-networkd, par exemple, par des manipulations gpgv ou epmd, ou vous pouvez utiliser le fait que systemd-networkd n'est pas s'exécutant par défaut (par exemple, sur Linux mint).

Dès réception du signal, Networkd-dispatcher crée une liste de fichiers exécutables appartenant à l'utilisateur root et disponibles dans le répertoire "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d", auquel il fait en fait référence à "/sbin".

Dès que la liste des fichiers est reçue, mais que le script n'a pas encore été exécuté, le lien symbolique est redirigé de "/tmp/nimbuspwn/poc.d" vers "/tmp/nimbuspwn" et networkd-dispatcher sera exécuté comme racine. script placé par l'attaquant.

Le problème corrigé dans la version 2.2 de networkd-dispatcher, bien qu'il n'y ait aucune information sur la publication des mises à jour par les distributions.

Enfin si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant.


Un commentaire, laissez le vôtre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Luix dit

    Cela a été dit mille et une fois : systemd c'est des ordures. Redondant, mal conçu, surchargé, sujet aux erreurs. Dommage qu'il ait été intégré dans ma distribution préférée (debian)