Dans l'utilitaire
L'option « pwfeedback » permet l'affichage du caractère « * » après chaque caractère saisi lors de la saisie d'un mot de passe. À cause de
L'essence du problème est que lors de l'utilisation du caractère spécial ^U (effacement de ligne) pendant la saisie et si l'opération d'écriture échoue, le code responsable de l'effacement des caractères « * » en sortie réinitialise les données sur la taille du tampon disponible, mais ne le fait pas. renvoie le pointeur à la position actuelle de la valeur initiale dans le tampon. Un autre facteur contribuant à l'exploitation est l'absence de désactivation automatique du mode « pwfeedback » lorsque les données n'arrivent pas du terminal, mais via le flux d'entrée (cette faille permet de créer les conditions pour qu'une erreur d'enregistrement se produise, par exemple, sur des systèmes avec unidirectionnel
Puisqu'un attaquant a un contrôle total sur l'écrasement des données sur la pile, il n'est pas difficile de créer un exploit qui lui permet d'élever ses privilèges au niveau root. Le problème peut être exploité par n'importe quel utilisateur, quels que soient les autorisations sudo ou les paramètres spécifiques à l'utilisateur dans sudoers. Pour bloquer le problème, vous devez vous assurer qu'il n'y a pas de paramètre « pwfeedback » dans /etc/sudoers et, si nécessaire, le désactiver (« Valeurs par défaut !pwfeedback »). Pour vérifier s'il y a un problème, vous pouvez exécuter le code :
$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S identifiant
Mot de passe : erreur de segmentation
Source: opennet.ru