Uma vulnerabilidade no comando wall do pacote util-linux, que faz parte do sistema operacional Linux, poderia permitir que um atacante sem privilégios roubasse senhas ou alterasse a área de transferência da vítima.
Identificada como
CVE-2024-28085
, a falha de segurança foi apelidada de WallEscape e está presente em todas as versões do pacote nos últimos 11 anos, até a versão 2.40 lançada ontem.
Embora a vulnerabilidade seja um exemplo interessante de como um atacante pode enganar um usuário para obter sua senha de administrador, sua exploração provavelmente é limitada a certos cenários.
Um atacante 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 podem se conectar para uma tarefa.
O pesquisador de segurança Skyler Ferrante descobriu o WallEscape, que é descrito como uma "neutralização inadequada de sequências de escape no comando wall".
O WallEscape afeta o comando ‘wall’, que é tipicamente usado em sistemas Linux para transmitir mensagens aos terminais de todos os usuários logados no mesmo sistema, como um servidor.
Como sequências de escape são filtradas inadequadamente ao processar a entrada através de argumentos de linha de comando, um usuário sem privilégios poderia explorar a vulnerabilidade usando caracteres de controle de escape para criar um falso prompt do SUDO nos terminais de outros usuários e enganá-los a digitar sua senha de administrador.
A questão de segurança pode ser explorada sob certas condições.
Ferrante explica que a exploração é possível se a utilidade "mesg" estiver ativa 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.
Código de exploit de conceito para o WallEscape foi publicado para demonstrar como um atacante poderia tirar vantagem do 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 falso prompt do sudo para o terminal Gnome para enganar o usuário a digitar sua senha.
Ferrante detalha que isso é possível criando um falso prompt do SUDO para o terminal Gnome para enganar o usuário a digitar a informação sensível como um argumento de linha de comando.
Isso requer algumas precauções que são possíveis usando o comando wall para passar ao alvo um script que altera sua entrada no terminal (cor de primeiro plano, oculta digitação, tempo de espera) para que o falso prompt de senha pareça uma solicitação legítima.
Para encontrar a senha, um atacante então teria que verificar o arquivo /proc/$pid/cmdline para os 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 este método não funciona com todos os emuladores de terminal, sendo o Gnome um deles.
"Já que podemos enviar sequências de escape pelo wall, se um usuário estiver usando um terminal que suporta essa sequência de escape, um atacante pode alterar a área de transferência da vítima para um texto arbitrário," detalha Ferrante.
O pesquisador fornece no relatório de vulnerabilidade o código de demonstração para configurar a armadilha e realizar o ataque, e também explica como funciona para ambos os cenários de exploração.
É importante notar que a exploração do WallEscape depende do 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 ambientes multiusuário, como o servidor de uma organização.
Usuários são aconselhados a atualizar para a versão 2.40 do linux-utils para corrigir a vulnerabilidade.
Normalmente, a atualização é disponibilizada através do canal de atualização padrão da distribuição Linux no gestor de pacotes, mas pode haver algum atraso.
Administradores de sistema podem mitigar a
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 sua flag como ‘n’.
Publicidade
Em 14 de janeiro a Solyd irá revolucionar a forma como pentest e hacking deve ser ensinado. Se inscreva para ser o primeiro a saber das novidades. Saiba mais...