Vulnérabilité dans le gestionnaire de paquets Guix, permettant l'exécution de code à distance sur le système

Des vulnérabilités ont été détectées dans le gestionnaire de paquets Guix (aucun CVE attribué) dans l'implémentation de la commande interne « guix substitute », appelée automatiquement par le processus en arrière-plan guix-daemon lors de l'exécution des opérations d'installation de paquets. Cette commande est utilisée pour télécharger des paquets binaires déjà construits à partir de serveurs externes tout en vérifiant leur intégrité à l'aide d'une signature numérique. La vulnérabilité la plus dangereuse permet d'exécuter du code à distance sur le système de l'utilisateur avec les privilèges sous lesquels le processus en arrière-plan guix-daemon s'exécute.

Le problème concerne toutes les configurations avec le processus guix-daemon, que celui-ci soit exécuté avec les privilèges root ou sous un utilisateur non privilégié. Pour exploiter la vulnérabilité, il suffit d'une tentative de téléchargement de paquets binaires prêts depuis de serveurs, contrôlé par l'attaquant. Le fichier malveillant serveur n'a pas nécessairement besoin d'être explicitement choisi ou indiqué dans les paramètres de l'utilisateur — il peut être déterminé à l'aide de l'option « —discover », ce qui permet de substituer le serveur au cours d'une attaque MITM. Dans les configurations où guix-daemon est lancé avec des privilèges élevés, un utilisateur local peut mener une attaque s'il a la possibilité de se connecter au processus en arrière-plan via un socket Unix (par défaut accessible à tous les utilisateurs).

La vulnérabilité est présente dans le gestionnaire « restore-file », utilisé pour extraire des fichiers lors du téléchargement du paquet, sans attendre le téléchargement complet et la vérification de l'archive téléchargée par signature numérique. Le problème découle de l'absence de vérification de la présence des caractères « . », « / » et « .. » dans les chemins de fichiers contenus dans l'archive. Par substitution dans l'archive de noms de fichiers incorrects, l'attaquant peut obtenir l'écriture d'un fichier arbitraire dans n'importe quelle zone du système de fichiers, autant que le permettent les privilèges sous lesquels le processus en arrière-plan guix-daemon s'exécute.

Pour exécuter son propre code sur le système, par exemple, on peut ajouter un script à autostart, tel que « ~/ .bashrc » ou « ~/ .profile », ou modifier le fichier « ~/ .ssh/authorized_keys » avec des clés SSH. Si dans un système multi-utilisateurs guix-daemon s'exécute sous l'utilisateur root, l'attaquant peut écraser un fichier de mots de passe ou des scripts système.

La possibilité de créer des serveurs intermédiaires pour la distribution de paquets malveillants est due au fait que la procédure de chargement des métadonnées (narinfo) sur les paquets binaires disponibles (fetch-narinfos) ne vérifiait pas le certificat du serveur, se fiant au fait que la majeure partie des métadonnées est signée numériquement. Il s'est avéré que la signature n'incluait pas l'URL de téléchargement du paquet, ce qui permettait de la remplacer sans compromettre l'intégrité des métadonnées. En fin de compte, le paquet falsifié serait rejeté en raison de l'échec de la vérification de son contenu par le hachage, validé par la signature numérique, mais cette vérification était effectuée après la phase de décompression, où le problème avec les caractères spéciaux dans les noms de fichiers se manifestait.

En plus de la commande « guix substitute », le gestionnaire vulnérable « restore-file » est également impliqué dans le fonctionnement des commandes « guix offload », « guix archive —extract » et « guix challenge », par lesquelles la vulnérabilité peut également être exploitée. Comme solution de contournement pour bloquer la vulnérabilité, il est proposé de spécifier explicitement l'option « —no-substitutes » dans toutes les commandes guix. La correction de la vulnérabilité a été intégrée dans la base de code de Guix. Il est recommandé aux utilisateurs d'installer immédiatement les mises à jour créées par les développeurs pour guix et guix-daemon.

En plus du problème signalé dans Guix, trois autres vulnérabilités ont été corrigées :

  • La possibilité de remplacer des paquets binaires en raison de l'absence de vérification de la correspondance entre le paquet demandé et les métadonnées renvoyées dans le gestionnaire fetch-narinfos. Cette vulnérabilité peut être utilisée pour retourner une version obsolète du paquet demandé, contenant des vulnérabilités.
  • La détermination du contenu de la première ligne de fichiers arbitraires dans le système via la transmission d'une requête par un utilisateur local avec l'URI « file:// » (« —substitute-urls file:////etc/shadow »). Si guix-daemon s'exécute avec des droits root, il lira le fichier demandé, déterminera qu'il ne s'agit pas de métadonnées et renverra une erreur mentionnant la ligne qui n'a pas pu être analysée.
  • Indiquer un nom de référentiel externe spécifiquement formaté («..\/..\/..\/..\/newfile») lors de l'exécution des commandes «guix pull» et «guix time-machine» permet d'enregistrer des données contenant des informations sur le commit dans un fichier existant arbitraire dans le système de fichiers, si son contenu ressemble à une liste de chaînes en langage Scheme. Cette vulnérabilité peut être utilisée pour des attaques DoS, mais il est également possible qu'avec des manipulations astucieuses du pseudo-système de fichiers /proc, des manipulations plus dangereuses du système puissent être réalisées.

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