Une vulnérabilité dans la commande wall du package util-linux qui fait partie du système d’exploitation Linux pourrait permettre à un attaquant non privilégié de voler des mots de passe ou de modifier le presse-papiers de la victime.
Suivi comme CVE-2024-28085, le problème de sécurité a été surnommé WallEscape et a été présent dans toutes les versions du package au cours des 11 dernières années jusqu’à la version 2.40 publiée hier.
Bien que la vulnérabilité soit un exemple intéressant de la façon dont un attaquant peut tromper un utilisateur en lui donnant son mot de passe administrateur, l’exploitation est probablement limitée à certains scénarios.
Un attaquant doit avoir accès à un serveur Linux qui a déjà plusieurs utilisateurs connectés en même temps via le terminal, comme un collège où les étudiants peuvent se connecter pour un devoir.
Skyler Ferrante, chercheur en sécurité, a découvert WallEscape, qui est décrit comme une commande de « neutralisation incorrecte des séquences d’échappement dans wall ».
Exploiter l’évasion murale
WallEscape a un impact sur la commande » mur’, qui est généralement utilisée dans les systèmes Linux pour diffuser des messages vers les terminaux de tous les utilisateurs connectés au même système, comme un serveur.
Étant donné que les séquences d’échappement sont mal filtrées lors du traitement des entrées via des arguments de ligne de commande, un utilisateur non privilégié pourrait exploiter la vulnérabilité en utilisant des caractères de contrôle d’échappement pour créer une fausse invite SUDO sur les terminaux des autres utilisateurs et les inciter à taper leur mot de passe administrateur.
Le problème de sécurité peut être exploité sous certaines conditions. Ferrante explique que l’exploitation est possible si l’utilitaire « mesg » est actif et que la commande wall dispose des autorisations setgid.
Le chercheur note que les deux conditions sont présentes sur Ubuntu 22.04 LTS (Jammy Jellyfish) et Debian 12.5 (Bookworm) mais pas sur CentOS.
Un code d’exploitation de validation de principe pour WallEscape a été publié pour démontrer comment un attaquant pourrait exploiter le problème.
En plus des détails techniques, Ferrante inclut également des scénarios d’exploitation qui pourraient conduire à des résultats distincts.
Un exemple décrit les étapes à suivre pour créer une fausse invite sudo pour que le terminal Gnome incite l’utilisateur à saisir son mot de passe.
Ferrante détaille que cela est possible en créant une fausse invite SUDO pour le terminal Gnome pour inciter l’utilisateur à saisir les informations sensibles en tant qu’argument de ligne de commande.
Cela nécessite certaines précautions qui sont possibles en utilisant la commande wall pour transmettre à la cible un script qui modifie leur saisie dans le terminal (couleur de premier plan, masque la saisie, temps de sommeil) afin que l’invite de faux mot de passe passe comme une demande légitime.
Pour trouver le mot de passe, un attaquant devrait alors vérifier le fichier /proc/p pid/cmdline pour les arguments de commande, qui sont visibles pour les utilisateurs non privilégiés sur plusieurs distributions Linux.
Une autre attaque consisterait à changer le presse-papiers d’un utilisateur cible via des séquences d’échappement. Le chercheur souligne que cette méthode ne fonctionne pas avec tous les émulateurs de terminaux, Gnome en faisant partie.
« Puisque nous pouvons envoyer des séquences d’échappement à travers le mur, si un utilisateur utilise un terminal qui prend en charge cette séquence d’échappement, un attaquant peut changer le presse-papiers des victimes en texte arbitraire », détaille Ferrante.
Le chercheur fournit dans le rapport de vulnérabilité le code de démonstration pour installer le piège et exécuter l’attaque et explique également comment cela fonctionne pour les deux scénarios d’exploitation.
Il est à noter que l’exploitation de WallEscape dépend d’un accès local (physique ou distant via SSH), ce qui limite sa gravité.
Le risque provient d’utilisateurs non privilégiés ayant accès au même système que la victime dans des paramètres multi-utilisateurs tels que le serveur d’une organisation.
Il est conseillé aux utilisateurs de passer à linux-utils v2.40 pour corriger la vulnérabilité. En règle générale, la mise à jour est mise à disposition via le canal de mise à jour standard de la distribution Linux sur le gestionnaire de paquets, mais il peut y avoir un certain retard.
Les administrateurs système peuvent atténuer immédiatement CVE-2024-28085 en supprimant les autorisations setgid de la commande ‘wall’ ou en désactivant la fonctionnalité de diffusion de messages à l’aide de la commande ‘mesg’ pour définir son indicateur sur ‘n’.