Vulnérabilités dans swhkd, un gestionnaire de raccourcis pour Wayland

Une série de vulnérabilités ont été identifiées dans swhkd (Simple Wayland HotKey Daemon) causées par un travail incorrect avec les fichiers temporaires, les paramètres de ligne de commande et les sockets Unix. Le programme est écrit en Rust et gère les touches de raccourci dans des environnements basés sur le protocole Wayland (un analogue compatible avec les fichiers de configuration du processus sxhkd utilisé dans les environnements basés sur X11).

Le package comprend un processus swhks non privilégié qui effectue des actions de raccourci clavier et un processus swhkd en arrière-plan qui s'exécute en tant que root et interagit avec les périphériques d'entrée au niveau de l'API uinput. Un socket Unix est utilisé pour organiser l'interaction entre swhks et swhkd. À l'aide des règles Polkit, n'importe quel utilisateur local peut exécuter le processus /usr/bin/swhkd en tant que root et lui transmettre des paramètres arbitraires.

Vulnérabilités identifiées :

  • CVE-2022-27815 – Enregistrement d'un PID de processus dans un fichier avec un nom prévisible et dans un répertoire accessible en écriture par d'autres utilisateurs (/tmp/swhkd.pid). N'importe quel utilisateur peut créer un fichier /tmp/swhkd.pid et y insérer le pid d'un processus existant, ce qui empêchera swhkd de démarrer. S'il n'existe aucune protection contre la création de liens symboliques dans /tmp, la vulnérabilité peut être utilisée pour créer ou écraser des fichiers dans n'importe quel répertoire système (le PID est écrit dans le fichier) ou pour déterminer le contenu de n'importe quel fichier sur le système (swhkd imprime le contenu entier du fichier PID vers la sortie standard). Il est à noter que dans le correctif publié, le fichier PID n'a pas été déplacé vers le répertoire /run, mais vers le répertoire /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), auquel il n'appartient pas non plus.
  • CVE-2022-27814 – En manipulant l'option de ligne de commande « -c » utilisée pour spécifier un fichier de configuration, il est possible de déterminer l'existence de n'importe quel fichier sur le système. Par exemple, pour vérifier /root/.somefile, vous pouvez exécuter « pkexec /usr/bin/swhkd -d -c /root/.somefile » et si le fichier est manquant, l'erreur « /root/.somefile n'existe pas » s'affichera. Comme dans le cas de la première vulnérabilité, résoudre le problème est déroutant - la résolution du problème se résume au fait que l'utilitaire externe "cat" ("Command::new("/bin/cat")).arg(path) est maintenant lancé pour lire le fichier de configuration.output()').
  • CVE-2022-27819 – Le problème est également lié à l'utilisation de l'option « -c », qui entraîne le chargement et l'analyse de l'intégralité du fichier de configuration sans vérifier la taille et le type du fichier. Par exemple, pour provoquer un déni de service en manquant de mémoire libre et en créant des E/S parasites, vous pouvez spécifier un périphérique de blocage au démarrage ("pkexec /usr/bin/swhkd -d -c /dev/sda") ou un périphérique de caractères qui produit un flux infini de données. Le problème a été résolu en réinitialisant les privilèges avant d'ouvrir le fichier, mais le correctif n'était pas complet, puisque seul l'ID utilisateur (UID) est réinitialisé, mais l'ID de groupe (GID) reste le même.
  • CVE-2022-27818 – Un socket Unix est créé à l'aide du fichier /tmp/swhkd.sock créé dans un répertoire accessible en écriture, ce qui entraîne des problèmes similaires à ceux de la première vulnérabilité (n'importe quel utilisateur peut créer /tmp/swhkd.sock et générer ou intercepter événements de pression de touche).
  • CVE-2022-27817 - Les événements d'entrée sont acceptés depuis tous les appareils et dans toutes les sessions, c'est-à-dire un utilisateur d'une autre session Wayland ou de la console peut intercepter des événements lorsque des raccourcis clavier sont enfoncés par d'autres utilisateurs.
  • CVE-2022-27816 Le processus swhks, comme swhkd, utilise le fichier PID /tmp/swhks.pid dans le répertoire /tmp accessible en écriture. Le problème est similaire à la première vulnérabilité, mais n'est pas aussi dangereux car swhks s'exécute sous un utilisateur non privilégié.

Source: opennet.ru

Ajouter un commentaire