Bug de Décadas em 'wall' do Linux Permite Criação de Falsos Prompts SUDO e Roubo de Senhas
1 de Abril de 2024

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

Pentest do Zero ao Profissional

O mais completo curso de Pentest e Hacking existente no Brasil, ministrado por instrutores de referência no mercado. Oferece embasamento sólido em computação, redes, Linux e programação. Passe por todas as fases de um Pentest utilizando ambientes realísticos. Se prepare para o mercado através da certificação SYCP. Saiba mais...