Le premier problème est lié au traitement des variables d'environnement par ld.so. Afin de fournir un environnement garanti pour les applications setuid, il enlève certaines variables d'environnement susceptibles d'interagir sur l'exécution des applications, telles que LD_PRELOAD et LD_LIBRARY_PATH. Malheureusement, un bogue peut empêcher ld.so de supprimer ces variables sous certaines conditions. Cela affecte les applications setuid si elles exécutent un autre binaire sans se défausser des privilèges ou effacer les variables d'environnement elles-mêmes.
Le second problème réside dans le comportement interne de glibc. Glibc vérifie les caractères comme « / » dans les variables d'environnement LANG et LC_*, afin de vérifier que personne n'essaie de manipuler un programme dans le but de lire des fichiers arbitraires. Malheureusement, il y a des erreurs logiques dans ces vérifications qui peuvent être utilisées pour forcer une application setuid à utiliser des fichiers arbitraires pour la configuration des locales, qui peuvent être utilisées pour exécuter du code arbitraire.
Ces problèmes ont été résolus dans la version 2.0.7.19981211-6.3 de la Debian GNU/Linux 2.1 (Slink) et dans la version 2.1.3-13 de la Debian GNU/Linux 2.2 (Potato). Nous vous recommandons la mise à jour immédiate de votre paquet glibc.