Vulnerabilidade de raiz sudo afetando Linux Mint e Elementary OS

Na utilidade sudo, usado para organizar a execução de comandos em nome de outros usuários, identificado vulnerabilidade (CVE-2019-18634), que permite aumentar seus privilégios no sistema para o usuário root. O problema só aparece a partir do lançamento do sudo 1.7.1 ao usar a opção “pwfeedback” no arquivo /etc/sudoers, que está desabilitada por padrão, mas habilitada em algumas distribuições como Linux Mint e Elementary OS. Problema corrigido no lançamento sudo 1.8.31, publicado há algumas horas. A vulnerabilidade permanece não corrigida nos kits de distribuição.

A opção “pwfeedback” permite a exibição do caracter “*” após cada caracter inserido ao inserir uma senha. Por causa de Erros Na implementação da função getln(), definida no arquivo tgetpass.c, uma string de senha muito grande passada através do fluxo de entrada padrão (stdin) sob certas condições pode não caber no buffer alocado e sobrescrever outros dados na pilha. O estouro ocorre ao executar o código sudo como root.

A essência do problema é que ao usar o caractere especial ^U (limpeza de linha) durante a entrada e se a operação de gravação falhar, o código responsável por limpar os caracteres “*” de saída redefine os dados no tamanho do buffer disponível, mas não retornar o ponteiro para a posição atual do valor inicial no buffer. Outro factor que contribui para a exploração é a falta de desactivação automática do modo “pwfeedback” quando os dados chegam não do terminal, mas através do fluxo de entrada (esta falha permite criar condições para que ocorra um erro de gravação, por exemplo, em sistemas com unidirecional canais sem nome ocorre um erro ao tentar escrever no final de um canal de leitura).

Como um invasor tem controle total sobre a substituição de dados na pilha, não é difícil criar uma exploração que lhe permita escalar seus privilégios para root. O problema pode ser explorado por qualquer usuário, independentemente das permissões do sudo ou das configurações específicas do usuário nos sudoers. Para bloquear o problema, você deve certificar-se de que não há configuração “pwfeedback” em /etc/sudoers e, se necessário, desativá-la (“Defaults !pwfeedback”). Para verificar se há algum problema, você pode executar o código:

$ perl -e 'imprimir(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Senha: falha de segmentação

Fonte: opennet.ru

Adicionar um comentário