Une vulnérabilité a été identifiée dans les gestionnaires de paquets Nix et Lix, permettant l'exécution de code avec les droits d'un processus d'arrière-plan, qui dans NixOS et les installations multi-utilisateurs s'exécute sous l'utilisateur root. Le problème (CVE non attribué) se manifeste dans le processus d'arrière-plan nix-daemon, utilisé pour gérer l'accès des utilisateurs non privilégiés aux opérations de construction et au stockage de paquets.
La vulnérabilité découle de l'absence de restriction sur le traitement récursif des répertoires dans le code d'analyse des archives NAR (Nix Archive), ce qui peut être exploité pour initier un épuisement de la pile de coroutines et écraser le contenu du tas (heap) qui se trouve après la pile sans pages de garde en mémoire. Le problème peut être exploité par tout utilisateur capable d'établir des connexions avec nix-daemon. Par défaut, tous les utilisateurs ont cette possibilité, ce qui permet d'élever leurs privilèges au niveau de l'utilisateur root dans des installations multi-utilisateurs Nix.
Le problème a été résolu en limitant le niveau de récursion à 64 répertoires imbriqués, en ajoutant des pages de garde en mémoire entre la pile et le tas, et en mettant en œuvre des vérifications supplémentaires des liens symboliques dans NAR. Dans Nix, la vulnérabilité se manifeste à partir de la version 2.24.4 et a été corrigée dans les versions 2.34.7, 2.33.6, 2.32.8, 2.31.5, 2.30.5, 2.29.4, 2.28.7. Dans Lix, la vulnérabilité est apparue dans la version 2.93.0 et a été corrigée dans les mises à jour 2.93.4, 2.94.2 et 2.95.2. Le gestionnaire de paquets Guix n'est pas concerné par cette vulnérabilité.
De plus, dans les mises à jour publiées de Nix, une autre vulnérabilité a été corrigée (CVE absent), qui a été attribuée à un niveau de gravité moyen (4.3 sur 10). Le problème se manifeste à partir de la version Nix 2.24.7 et permet de procéder à l'écriture de fichiers dans une zone en dehors du répertoire racine où l'archive est extraite. La vulnérabilité est exploitée via la création d'éléments avec des chemins de fichiers absolus dans des fichiers tar. Lors de l'extraction de telles archives avec la commande « nix-prefetch-url —unpack » ou « nix store prefetch-file —unpack », les fichiers avec des chemins absolus sont extraits tels quels, sans conversion en chemin relatif.
Source : opennet.ru
