Des vulnérabilités ont été identifiées dans les gestionnaires de paquets GNU Guix, Nix et Lix, permettant l'exécution de code sous les droits des utilisateurs sous lesquels les travaux de construction sont exécutés (par exemple, nixbld* dans Nix/Lix). Cela peut être exploité pour écrire ses propres données dans l'environnement de construction et modifier le processus de construction. Les problèmes se trouvent dans les processus en arrière-plan guix-daemon et nix-daemon, utilisés pour mettre en place l'accès des utilisateurs non privilégiés aux opérations de construction.
Les vulnérabilités sont causées par le fait que, lors de l'exécution de certaines opérations pour accéder aux répertoires temporaires de construction, des chemins de fichiers complets ont été utilisés au lieu de descripteurs dirfd, permettant de remplacer le répertoire de construction situé dans la hiérarchie /tmp (par exemple, «/tmp/guix-build-PACKAGE-X.Y.drv-0»). Une mauvaise utilisation de dirfd dans la fonction de suppression récursive a conduit à une condition de course, permettant à un attaquant d'insérer un lien symbolique entre la création et la modification du propriétaire du répertoire de construction. Lors d'une attaque réussie, guix-daemon/nix-daemon changeait le propriétaire du fichier ciblé par le lien symbolique au lieu de changer l'utilisateur pour le répertoire de construction.
Les vulnérabilités sont corrigées dans les mises à jour Lix 2.93, Nix 2.29 et Guix 1.4.0-38.0e79d5b. Pour exploiter les vulnérabilités, un attaquant doit être capable d'exécuter des travaux de construction arbitraires. Pour exploiter la vulnérabilité CVE-2025-46415, il suffit de pouvoir créer des fichiers dans le répertoire /tmp sur la machine de construction, tandis que pour la vulnérabilité CVE-2025-46416, il est nécessaire d'avoir la capacité d'exécuter du code dans le contexte de l'espace de noms des identifiants de processus (pid namespace) et de réseau (network namespace).
Source : opennet.ru
