Falha no sudo atinge Linux Mint e elementaryOS

Acaba de ser descoberta uma falha no utilitário sudo que atinge principalmente o Linux Mint e o elementaryOS. Contudo, ao realizar testes na versão do Zorin 15.1, encontrei a mesma falha na distro, conforme será explicado mais adiante. O comando é usado para organizar e conceder direitos de administração por meio de um único programa. Também é usado para a execução de comandos em nome de outros usuários. A falha é definida como CVE-2019-18634. O sudo permite aumentar privilégios no sistema para o usuário root.

O problema foi detectado na liberação do sudo versão 1.7.1 para a versão 1.8.29, que pode ser explorada apenas quando a opção “pwfeedback” é usada no arquivo /etc/sudoers. Este é desativado por padrão nas versões mais recentes sudo, porém, é ativado em algumas distribuições, como Linux Mint e Elementary OS.

A verdade é que tanto o sudo quanto o Linux Mint vêm em uma relação complicada há algum tempo. Em outubro do ano passado, a Canonical atualizou o comando sudo justamente por conta de falhas de segurança.

Vulnerabilidade no sudo atinge Linux Mint e elementaryOS

Vulnerabilidade no sudo atinge Linux Mint e elementaryOS

A opção “pwfeedback” permite a exibição do caractere “*” após cada caractere digitado ao inserir a senha.

Devido a um erro na implementação da função getln () definida no arquivo tgetpass.c, em uma sequência de entrada padrão (stdin), uma senha muito grande pode não caber no buffer designado e reescrever outros dados. O problema ocorre quando você executa o código sudo com privilégios de root.

Outro fator que contribui é a falta de desligamento automático do modo pwfeedback quando os dados são recebidos não do terminal, mas através do fluxo de entrada. Esse defeito permite criar condições para um erro de gravação, por exemplo, em sistemas com canais unidirecionais sem nome.

Como o invasor pode controlar completamente a substituição de dados na pilha , não é difícil criar uma exploração que permita aumentar seus privilégios para o usuário root.

O problema pode ser explorado por qualquer usuário, independentemente dos direitos de uso do sudo e da presença de configurações específicas do usuário nos sudoers.

Um usuário com privilégios sudo pode verificar se ” pwfeedback ” está ativado pela execução:

sudo -l

Se “pwfeedback” aparecer na saída “Correspondendo às entradas padrão”, a configuração dos sudoers será afetada. No exemplo a seguir, a configuração dos sudoers é vulnerável:

sudo -l

Matching Defaults entries for “USER” on linux-build:

insults, pwfeedback, mail_badpass, mailerpath=/usr/sbin/sendmail

Já no meu caso, usando Zorin OS 15.1, apareceu o seguinte:

env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin,
pwfeedback

Ou seja, o pwfeedback está lá. Também testado no POP!_OS, o problema não foi detectado.

O usuário USER pode executar os seguintes comandos no linux-build:

(ALL: ALL) ALL

Na falha, é explicado que o erro pode ser explorado sem a necessidade de permissões sudo, requer apenas que o pwfeedback seja ativado. O erro pode ser reproduzido passando uma entrada grande para o sudo através de um canal ao solicitar uma senha.

Por exemplo:

perl -e ‘print((“A” x 100 . “x{00}”) x 50)’ | sudo -S id

Password: Segmentation fault

Há duas falhas que contribuem para esta vulnerabilidade:

  • A opção “pwfeedback” não é ignorada, como deveria ser, ao ler algo diferente de um dispositivo terminal. Devido à falta de um terminal, a versão salva do caractere de exclusão de linha permanece em seu valor inicial de 0.

  • O código que limpa a linha do asterisco não redefine corretamente a posição do buffer se houver um erro de gravação, mas redefine o comprimento restante do buffer. Como resultado, a função getln () pode escrever além do final do buffer.

Finalmente, é relatado que o problema foi resolvido na versão 1.8.31 do sudo, publicada algumas horas atrás. Embora nas distribuições a vulnerabilidade permaneça inalterada, os usuários das distribuições afetadas devem detectar que a configuração do pwfeedback está no arquivo /etc/sudoersexecutar a atualização para a nova versão do sudo.

Voce pode facilmente impedir isso trocando o

Defaults pwfeedback

para:

Defaults !pwfeedback

Isso mesmo, basta um ponto de exclamação. Depois disso o pwfeedback desaparece. 

É mencionado que, para bloquear o problema, o mais importante é verificar se certificar que a falha /pwfeedback não está em /etc/sudoers e, se necessário, deve ser desativada.

Fonte: https://www.openwall.com

Relacionado Posts