Bulletin d'alerte Debian

screen -- Débordement de capacité du programme « screen » quand on copie les champs gecos.

Date du rapport :
20 février 1997
Paquets concernés :
screen
Vulnérabilité :
Non
Références dans la base de données de sécurité :
Aucune référence à une base de données externe en rapport avec la sécurité n'est actuellement disponible.
Plus de précisions :

Le débordement existe, mais screen délivre les privilèges du root avant l'exécution du code.

Rapporteur originel du rapport :  Khelbin <khelbin@connix.com>

Screen 3.07.02, lorsqu'il y a un setuid root (comme c'est généralement le cas), est susceptible d'effectuer un dépassement de capacité, au moins sur certaines plates-formes. Je n'ai jamais lu toutes les sources mais en regardant rapidement, j'ai remarque que attacher.c contenait les choses suivantes :

      struct passwd ppp;
      char fullname[100];

      strcpy(fullname, ppp->pw_gecos);

J'ai été en mesure de déclencher un petit exploit, mais il ne fonctionne pas ici sur un BSDI 1.1 parce que chpass/chfn n'accepte pas certains caractères. Ainsi, placer une chaîne de code dans le champ « Nom Complet » produit le message d'erreur « Caractère illégal trouvé dans le champ Nom Complet, rééditer [o] ? » ou quelque chose de similaire.

Quelques systèmes d'exploitation ou versions de chfn/chpass, ne vérifiant pas les « caractères illégaux » ou encore la taille de l'information passée dans le champ (BSDI 1.1 ne vérifiait pas la longueur, juste les caractères illégaux), peuvent être vulnérables (Je n'ai pas vérifié si cela m'a déjà accordé les privilèges de root, j'étais sur le point de le faire en le surchargeant par ma chaîne de code).

Ce que j'ai fait revient à mettre simplement une chaîne de code dans une variable ENV (avec les adresses NOPs et ret de retour vers les NOPs) et d'envoyer les variables ENV dans un fichier. Puis simplement lire dans ce fichier lorsque l'on est dans chpass/chfn comme le nouveau info gecos.