Com mais de uma década de existência, um antigo bug do wall pode permitir que um invasor roube senhas ou altere a área de transferência.
Uma vulnerabilidade no comando wall do pacote util-linux que faz parte do sistema operacional Linux pode permitir que um invasor sem privilégios roube senhas ou altere a área de transferência da vítima.
Antigo bug do wall pode permitir que um invasor roube senhas
Sim. Um antigo bug do wall pode permitir que um invasor roube senhas. Rastreado como CVE-2024-28085, o problema de segurança foi apelidado de WallEscape e esteve presente em todas as versões do pacote nos últimos 11 anos, até o 2.40 lançado recentemente.
Embora a vulnerabilidade seja um exemplo interessante de como um invasor pode enganar um usuário para que ele forneça sua senha de administrador, a exploração provavelmente está limitada a determinados cenários.
Um invasor precisa ter acesso a um servidor Linux que já tenha vários usuários conectados ao mesmo tempo por meio do terminal, como uma faculdade onde os alunos possam se conectar para realizar uma tarefa.
O pesquisador de segurança Skyler Ferrante descobriu o WallEscape, que é descrito como um comando de “neutralização inadequada de sequências de escape na parede”.
Explorando WallEscape
WallEscape impacta o comando ‘wall’, que normalmente é usado em sistemas Linux para transmitir mensagens para os terminais de todos os usuários logados no mesmo sistema, como um servidor.
Como as sequências de escape são filtradas incorretamente ao processar a entrada por meio de argumentos de linha de comando, um usuário sem privilégios pode explorar a vulnerabilidade usando caracteres de controle de escape para criar um prompt SUDO falso nos terminais de outros usuários e induzi-los a digitar sua senha de administrador.
A questão da segurança pode ser explorada sob certas condições. Ferrante explica que a exploração é possível se o utilitário “mesg” estiver ativo e o comando wall tiver permissões setgid.
O pesquisador observa que ambas as condições estão presentes no Ubuntu 22.04 LTS (Jammy Jellyfish) e no Debian 12.5 (Bookworm), mas não no CentOS.
O código de exploração de prova de conceito do WallEscape foi publicado para demonstrar como um invasor pode aproveitar o problema.
Juntamente com os detalhes técnicos, Ferrante também inclui cenários de exploração que podem levar a resultados distintos.
Um exemplo descreve as etapas para criar um prompt sudo falso para o terminal Gnome para induzir o usuário a digitar sua senha.
Ferrante detalha que isso é possível criando um prompt SUDO falso para o terminal Gnome para induzir o usuário a digitar informações confidenciais como um argumento de linha de comando.
Isso requer alguns cuidados que são possíveis ao usar o comando wall para passar ao alvo um script que altera sua entrada no terminal (cor de primeiro plano, oculta digitação, tempo de suspensão) para que o prompt de senha falsa passe como uma solicitação legítima.
Para encontrar a senha, um invasor teria que verificar o arquivo /proc/$pid/cmdline em busca dos argumentos do comando, que são visíveis para usuários sem privilégios em várias distribuições Linux.
Outro ataque seria alterar a área de transferência de um usuário alvo por meio de sequências de escape. O pesquisador destaca que esse método não funciona com todos os emuladores de terminal, estando o Gnome entre eles.
“Como podemos enviar sequências de escape através da parede, se um usuário estiver usando um terminal que suporte essa sequência de escape, um invasor pode alterar a área de transferência da vítima para texto arbitrário”, detalha Ferrante.
O pesquisador fornece no relatório de vulnerabilidade o código de demonstração para definir a armadilha e executar o ataque e também explica como funciona para ambos os cenários de exploração.
Vale ressaltar que a exploração do WallEscape depende de acesso local (físico ou remoto via SSH), o que limita sua gravidade.
O risco vem de usuários sem privilégios com acesso ao mesmo sistema que a vítima em configurações multiusuário, como o servidor de uma organização.
Os usuários são aconselhados a atualizar para linux-utils v2.40 para corrigir a vulnerabilidade. Normalmente, a atualização é disponibilizada através do canal de atualização padrão da distribuição Linux no gerenciador de pacotes, mas pode haver algum atraso.
Os administradores de sistema podem mitigar o CVE-2024-28085 imediatamente removendo as permissões setgid do comando ‘wall’ ou desativando a funcionalidade de transmissão de mensagens usando o comando ‘mesg’ para definir seu sinalizador como ‘n’.