Vulnerabilitats a swhkd, un gestor de dreceres de Wayland

S'han identificat una sèrie de vulnerabilitats a swhkd (Simple Wayland HotKey Daemon) causades per un treball incorrecte amb fitxers temporals, paràmetres de línia d'ordres i sòcols Unix. El programa està escrit en Rust i gestiona la pressió de tecles d'accés ràpid en entorns basats en el protocol Wayland (un anàleg compatible amb fitxers de configuració del procés sxhkd utilitzat en entorns basats en X11).

El paquet inclou un procés swhks sense privilegis que realitza accions de tecles d'accés ràpid i un procés swhkd de fons que s'executa com a root i interactua amb els dispositius d'entrada al nivell de l'API uinput. S'utilitza un sòcol Unix per organitzar la interacció entre swhks i swhkd. Utilitzant les regles de Polkit, qualsevol usuari local pot executar el procés /usr/bin/swhkd com a root i passar-li paràmetres arbitraris.

Vulnerabilitats identificades:

  • CVE-2022-27815: desar un PID de procés en un fitxer amb un nom previsible i en un directori que altres usuaris puguin escriure (/tmp/swhkd.pid). Qualsevol usuari pot crear un fitxer /tmp/swhkd.pid i posar-hi el pid d'un procés existent, cosa que farà que swhkd no pugui iniciar-se. Si no hi ha protecció contra la creació d'enllaços simbòlics a /tmp, la vulnerabilitat es pot utilitzar per crear o sobreescriure fitxers en qualsevol directori del sistema (el PID s'escriu al fitxer) o determinar el contingut de qualsevol fitxer del sistema (swhkd imprimeix el contingut sencer del fitxer PID a stdout). Cal destacar que a la correcció publicada el fitxer PID no es va moure al directori /run, sinó al directori /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), on tampoc pertany.
  • CVE-2022-27814: manipulant l'opció de línia d'ordres "-c" que s'utilitza per especificar un fitxer de configuració, és possible determinar l'existència de qualsevol fitxer al sistema. Per exemple, per comprovar /root/.somefile podeu executar "pkexec /usr/bin/swhkd -d -c /root/.somefile" i si falta el fitxer, l'error "/root/.somefile no existeix". ” es mostrarà. Com en el cas de la primera vulnerabilitat, solucionar el problema és desconcertant: solucionar el problema es redueix al fet que la utilitat externa "cat" ("Command::new ("/bin/cat")).arg(path) ara es llança per llegir el fitxer de configuració.output()').
  • CVE-2022-27819: el problema també està relacionat amb l'ús de l'opció "-c", que fa que es carregui i s'analitzi tot el fitxer de configuració sense comprovar la mida i el tipus del fitxer. Per exemple, per provocar una denegació de servei en quedar-se sense memòria lliure i crear una E/S falsa, podeu especificar un dispositiu de bloc a l'inici ("pkexec /usr/bin/swhkd -d -c /dev/sda") o un dispositiu de caràcters que produeix un flux infinit de dades. El problema es va resoldre restablint els privilegis abans d'obrir el fitxer, però la correcció no es va completar, ja que només es restableix l'ID d'usuari (UID), però l'ID de grup (GID) segueix sent el mateix.
  • CVE-2022-27818: es crea un sòcol Unix mitjançant el fitxer /tmp/swhkd.sock creat en un directori que es pot escriure, la qual cosa comporta problemes similars a la primera vulnerabilitat (qualsevol usuari pot crear /tmp/swhkd.sock i generar o interceptar). esdeveniments de premsa de tecles).
  • CVE-2022-27817: s'accepten esdeveniments d'entrada des de tots els dispositius i en totes les sessions, és a dir. un usuari d'una altra sessió de Wayland o des de la consola pot interceptar esdeveniments quan altres usuaris premen les tecles d'accés directe.
  • CVE-2022-27816 El procés swhks, com swhkd, utilitza el fitxer PID /tmp/swhks.pid al directori /tmp que es pot escriure. El problema és similar a la primera vulnerabilitat, però no és tan perillós perquè swhks s'executa sota un usuari sense privilegis.

Font: opennet.ru

Afegeix comentari