Vulnerabilidades en swhkd, un xestor de atallos para Wayland

Identificáronse unha serie de vulnerabilidades en swhkd (Simple Wayland HotKey Daemon) causadas por un traballo incorrecto con ficheiros temporais, parámetros de liña de comandos e sockets Unix. O programa está escrito en Rust e xestiona a pulsación de teclas rápidas en ambientes baseados no protocolo Wayland (un análogo compatible con ficheiros de configuración do proceso sxhkd usado en ambientes baseados en X11).

O paquete inclúe un proceso swhks sen privilexios que realiza accións de teclas rápidas e un proceso swhkd en segundo plano que se executa como root e interactúa cos dispositivos de entrada no nivel da API uinput. Un socket Unix úsase para organizar a interacción entre swhks e swhkd. Usando as regras de Polkit, calquera usuario local pode executar o proceso /usr/bin/swhkd como root e pasarlle parámetros arbitrarios.

Vulnerabilidades identificadas:

  • CVE-2022-27815: gardando un PID de proceso nun ficheiro cun nome previsible e nun directorio que poden escribir outros usuarios (/tmp/swhkd.pid). Calquera usuario pode crear un ficheiro /tmp/swhkd.pid e poñer nel o pid dun proceso existente, o que fará que swhkd non poida iniciarse. Se non hai protección contra a creación de ligazóns simbólicas en /tmp, a vulnerabilidade pódese usar para crear ou sobrescribir ficheiros en calquera directorio do sistema (o PID escríbese no ficheiro) ou determinar o contido de calquera ficheiro no sistema (swhkd imprime o contido completo do ficheiro PID a stdout). Cabe destacar que na corrección publicada o ficheiro PID non se moveu ao directorio /run, senón ao directorio /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), onde tampouco pertence.
  • CVE-2022-27814: manipulando a opción de liña de comandos "-c" utilizada para especificar un ficheiro de configuración, é posible determinar a existencia de calquera ficheiro no sistema. Por exemplo, para comprobar /root/.somefile pode executar "pkexec /usr/bin/swhkd -d -c /root/.somefile" e se falta o ficheiro, o erro "/root/.somefile non existe ” aparecerá. Como no caso da primeira vulnerabilidade, solucionar o problema é desconcertante: a resolución do problema redúcese ao feito de que a utilidade externa "cat" ("Command::new ("/bin/cat")).arg(path) lánzase agora para ler o ficheiro de configuración.output()').
  • CVE-2022-27819: o problema tamén está relacionado co uso da opción "-c", que fai que se cargue e analice todo o ficheiro de configuración sen comprobar o tamaño e o tipo do ficheiro. Por exemplo, para provocar unha denegación de servizo ao quedar sen memoria libre e crear E/S espurias, pode especificar un dispositivo de bloque ao iniciar ("pkexec /usr/bin/swhkd -d -c /dev/sda") ou un dispositivo de carácter que produce un fluxo infinito de datos. O problema resolveuse restablecendo os privilexios antes de abrir o ficheiro, pero a corrección non foi completa, xa que só se restablece o ID de usuario (UID), pero o ID de grupo (GID) segue sendo o mesmo.
  • CVE-2022-27818: créase un socket Unix usando o ficheiro /tmp/swhkd.sock creado nun directorio escribible, o que leva a problemas similares aos da primeira vulnerabilidade (calquera usuario pode crear /tmp/swhkd.sock e xerar ou interceptar). eventos de pulsación de tecla).
  • CVE-2022-27817: acéptanse eventos de entrada de todos os dispositivos e en todas as sesións, é dicir. un usuario doutra sesión de Wayland ou desde a consola pode interceptar eventos cando outros usuarios premen as teclas de acceso rápido.
  • CVE-2022-27816 O proceso swhks, como swhkd, usa o ficheiro PID /tmp/swhks.pid no directorio escribible /tmp. O problema é semellante ao da primeira vulnerabilidade, pero non é tan perigoso porque swhks está a executarse baixo un usuario sen privilexios.

Fonte: opennet.ru

Engadir un comentario