Uma série de novas vulnerabilidades no telnetd, permitindo a obtenção de privilégios de root no sistema

Após a vulnerabilidade identificada no final de janeiro, que permitia o acesso como usuário root sem verificar a senha, foram descobertos vários métodos de elevação de privilégios no servidor telnetd do pacote GNU InetUtils, decorrentes da remoção incompleta da vulnerabilidade em 1999 (CVE-1999-0073).

As vulnerabilidades são causadas pela capacidade do telnetd de permitir que o cliente envie variáveis de ambiente para o servidor através da opção ENVIRON. Tais variáveis de ambiente são configuradas e processadas no contexto do processo telnetd e são passadas para os processos filhos que ele inicia, incluindo o processo /bin/login executado com privilégios de root. A vulnerabilidade CVE-1999-0073 permitia que o cliente telnet enviasse a variável de ambiente LD_LIBRARY_PATH, cuja configuração leva ao carregamento da biblioteca compartilhada especificada pelo usuário ao iniciar o processo login. Quando há possibilidade de carregar arquivos em um sistema que suporta conexões via protocolo telnet, o atacante pode carregar uma biblioteca especialmente formatada e forçar seu carregamento com privilégios de root.

No telnetd do pacote GNU InetUtils, a vulnerabilidade foi corrigida ao bloquear variáveis de ambiente perigosas através da filtragem com as máscaras 'LD_', 'LIBPATH', 'ENV', 'IFS' e '_RLD_'. No entanto, a variável de ambiente 'CREDENTIALS_DIRECTORY' permaneceu desbloqueada, sendo processada ao iniciar o /usr/bin/login. Com esta variável de ambiente, o usuário poderia alterar o diretório das configurações de credenciais e colocar no novo diretório o arquivo login.noauth com o valor 'yes', que ativa o login sem senha (semelhante à passagem da flag '-f' para o processo login). Esta configuração se aplica a todos os usuários, incluindo o root.

O ataque consiste em um usuário sem privilégios criando um subdiretório em seu diretório doméstico, carregando nele o arquivo login.noauth e tentando fazer login configurando a variável de ambiente 'CREDENTIALS_DIRECTORY=diretório criado' e passando a variável de ambiente 'USER=root' (o telnet possui um modo de conexão automática, onde o nome de usuário é obtido não da linha de comando, mas passado através da variável de ambiente USER). Exemplo de exploit.

Foi identificado mais um método de obtenção de acesso root através do telnetd, relacionado à manipulação das variáveis de ambiente OUTPUT_CHARSET e LANGUAGE, processadas pela biblioteca GNU gettext, e à variável de ambiente GCONV_PATH, utilizada na glibc. Ao definir as variáveis de ambiente OUTPUT_CHARSET e LANGUAGE, o atacante pode ativar a funcionalidade de conversão de codificação de caracteres no gettext, chamando a função iconv_open(). Por sua vez, ao executar a função iconv_open() ao carregar o arquivo de configuração gconv-modules, o caminho é calculado considerando a variável de ambiente GCONV_PATH. Através da substituição do arquivo gconv-modules, pode-se organizar o carregamento de uma biblioteca compartilhada própria durante a saída de uma string localizada pelo processo login.

Os identificadores CVE para as vulnerabilidades identificadas ainda não foram atribuídos. Como método de proteção, considera-se o uso de uma lista branca de valores permitidos ("TERM", "DISPLAY", "USER", "LOGNAME" e "POSIXLY_CORRECT"), bloqueando todas as outras variáveis de ambiente, semelhante ao que é feito com as variáveis de ambiente no OpenSSH. As vulnerabilidades foram confirmadas no pacote GNU InetUtils, na implementação servidor telnetd, que é fornecido no Debian, Ubuntu e distribuições derivadas. Até o momento, não há correções para o GNU InetUtils. O Rocky Linux 9 fornece uma versão modificada do telnetd que não apresenta a vulnerabilidade, na qual, em vez de filtrar as variáveis de ambiente perigosas, é feita uma verificação baseada em lista branca. A filtragem baseada em lista branca também é implementada no telnetd do FreeBSD. No OpenBSD, o telnetd foi removido do sistema em 2005.

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