Vulnerabilidades no swhkd, gerenciador de teclas de atalho para Wayland

No swhkd (Simple Wayland HotKey Daemon) foi identificada uma série de vulnerabilidades causadas pelo tratamento incorreto de arquivos temporários, parâmetros de linha de comando e sockets unix. O programa é escrito em Rust e processa a captura de teclas de atalho em ambientes baseados no protocolo Wayland (semelhante em nível de arquivos de configuração ao processo sxhkd usado em ambientes baseados em X11).

O pacote inclui um processo não privilegiado swhks, que executa ações para teclas de atalho, e um processo em segundo plano swhkd, executado com permissões de root e interagindo com dispositivos de entrada através da API uinput. Para organizar a interação entre swhks e swhkd, é utilizado um socket Unix. Através de regras Polkit, qualquer usuário local é permitido iniciar o processo /usr/bin/swhkd com permissões de root e passar parâmetros arbitrários.

Vulnerabilidades identificadas:

  • CVE-2022-27815 — salvamento do PID do processo em um arquivo com um nome previsível e em um diretório que pode ser gravado por outros usuários (/tmp/swhkd.pid). Qualquer usuário pode criar o arquivo /tmp/swhkd.pid e inserir o pid de um processo existente, o que impedirá a inicialização do swhkd. Na ausência de proteção contra a criação de links simbólicos em /tmp, a vulnerabilidade pode ser explorada para criar ou sobrescrever arquivos em qualquer diretório do sistema (o PID é salvado no arquivo) ou para determinar o conteúdo de qualquer arquivo no sistema (o swhkd exibe no stdout todo o conteúdo do arquivo PID). Curiosamente, na correção lançada, o arquivo PID foi movido do diretório /run para o diretório /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), onde também não deveria estar.
  • CVE-2022-27814 — manipulando o parâmetro de linha de comando "-c", usado para especificar o arquivo de configuração, é possível determinar a existência de qualquer arquivo no sistema. Por exemplo, para verificar /root/.somefile, pode-se executar "pkexec /usr/bin/swhkd -d -c /root/.somefile" e se o arquivo não existir será exibida a mensagem de erro "/root/.somefile doesn’t exist". Assim como no caso da primeira vulnerabilidade, a correção do problema é confusa — a resolução do problema é que agora uma ferramenta externa "cat" é utilizada para ler o arquivo de configuração (‘Command::new(“/bin/cat”).arg(path).output()’).
  • CVE-2022-27819 — o problema também está relacionado ao uso da opção "-c", que faz com que o arquivo de configuração seja carregado e analisado completamente sem verificação de tamanho e tipo de arquivo. Por exemplo, para causar um ataque de negação de serviço devido ao esgotamento de memória livre e à criação de entrada/saída parasitária, pode-se especificar, ao iniciar, um dispositivo de bloco ("pkexec /usr/bin/swhkd -d -c /dev/sda") ou um dispositivo de caractere que gera um fluxo infinito de dados. O problema foi resolvido com a revogação de privilégios antes da abertura do arquivo, mas a correção não foi completa, pois apenas o identificador de usuário (UID) é redefinido, enquanto o identificador de grupo (GID) permanece inalterado.
  • CVE-2022-27818 — para criar um socket Unix, é usado o arquivo /tmp/swhkd.sock, que é criado em um diretório público com permissão de gravação, levando a problemas semelhantes à primeira vulnerabilidade (qualquer usuário pode criar /tmp/swhkd.sock e gerar ou capturar eventos de pressionamento de teclas).
  • CVE-2022-27817 — eventos de entrada são aceitos de todos os dispositivos e em todas as sessões, ou seja, um usuário de outra sessão Wayland ou do console pode capturar eventos de pressionamento de teclas de outros usuários.
  • CVE-2022-27816 — o processo swhks, assim como o swhkd, usa o arquivo PID /tmp/swhks.pid em um diretório público com permissão de gravação /tmp. O problema é semelhante à primeira vulnerabilidade, mas não tão perigoso, pois o swhks é executado sob um usuário não privilegiado.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster