Empresa Qualys mais uma vulnerabilidade crítica remota (CVE-2020-8794) no servidor de e-mail , desenvolvido pelo projeto OpenBSD. Assim como a vulnerabilidade descoberta no final de janeiro , este novo problema permite a execução remota de comandos shell no servidor com privilégios de usuário root. A vulnerabilidade Lançamento do Chrome OS 78 com suporte para desktops virtuais .
é causada por um erro no código que realiza a entrega de e-mails para servidores de e-mail remotos (não no código que processa conexões de entrada). O ataque pode ocorrer tanto do lado do cliente quanto do lado do servidor. Do lado do cliente, o ataque é possível na configuração padrão do OpenSMTPD, onde o OpenSMTPD aceita solicitações apenas na interface de rede interna (localhost) e envia mensagens de e-mail para servidores externos. Para explorar a vulnerabilidade, é suficiente que, no processo de entrega do e-mail, o OpenSMTPD estabeleça uma sessão com um servidor de e-mail sob controle do atacante, ou que o atacante consiga se intrometer na conexão do cliente (MITM ou redirecionamento durante ataques via DNS ou BGP).
Para atacar do lado do servidor, é necessário que o OpenSMTPD esteja configurado para aceitar solicitações de rede externas de outros servidores de e-mail ou forneça serviços de terceiros que permitam enviar solicitações para um e-mail arbitrário (por exemplo, formulários de confirmação de endereço em sites). Por exemplo, um invasor pode se conectar ao servidor OpenSMTPD e enviar um e-mail incorreto (para um usuário inexistente), o que resultará no envio de uma mensagem de erro (bounce) para o servidor do atacante. O invasor pode explorar a vulnerabilidade no momento em que o OpenSMTPD se conectar para entregar uma notificação ao servidor do atacante. Os comandos shell injetados durante o ataque são colocados em um arquivo que é executado com privilégios de root quando o OpenSMTPD é reiniciado, portanto, o atacante deve aguardar o reinício do OpenSMTPD ou causar a queda do OpenSMTPD.
O problema está presente na função mta_io() no código responsável pela análise da resposta multi-linha retornada pelo servidor remoto após a conexão (por exemplo, "250-ENHANCEDSTATUSCODES" e "250 HELP"). No OpenSMTPD, é esperado que a primeira linha contenha um número de três dígitos e um texto, separados pelo caractere '-', enquanto a segunda linha deve conter um número de três dígitos e um texto, separados por um espaço. Se na segunda linha não houver um espaço e texto após o número de três dígitos, o ponteiro utilizado para determinar o texto é definido para o byte que segue o caractere '\0', e uma tentativa é feita para copiar no buffer de dados a partir do final da linha.
A pedido do projeto OpenBSD, a divulgação de detalhes sobre a exploração da vulnerabilidade foi adiada até 26 de fevereiro, para permitir que os usuários atualizem seus sistemas. O problema está presente na base de código desde dezembro de 2015, mas a exploração de execução de código com privilégios de root é possível desde maio de 2018. Os pesquisadores desenvolveram um protótipo funcional do exploit, que foi testado com sucesso em builds do OpenSMTPD para OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) e Fedora 31.
No OpenSMTPD também existe outra vulnerabilidade (CVE-2020-8793), que permite a um usuário local ler a primeira linha de qualquer arquivo no sistema. Por exemplo, é possível ler a primeira linha /etc/master.passwd, onde está o hash da senha do usuário root. A vulnerabilidade também permite que se leia todo o conteúdo de um arquivo pertencente a outro usuário, se esse arquivo estiver no mesmo sistema de arquivos que o diretório /var/spool/smtpd/. O problema não é explorável na maioria das distribuições Linux onde o valor de /proc/sys/fs/protected_hardlinks é definido como 1.
O problema decorre da remoção incompleta , mencionada durante uma auditoria realizada pela Qualys em 2015. Um atacante pode conseguir executar seu código com os direitos do grupo "_smtpq", configurando a variável "PATH=." e colocando um script chamado makemap no diretório atual (a ferramenta smtpctl executa makemap sem especificar claramente o caminho). Uma vez que tenha acesso ao grupo "_smtpq", o atacante pode então causar uma condição de corrida (criar um grande arquivo no diretório offline e enviar o sinal SIGSTOP) e, antes da conclusão do processamento, substituir o arquivo no diretório offline por um link simbólico duro que aponte para o arquivo alvo cujo conteúdo precisa ser lido.
Notavelmente, no Fedora 31, a vulnerabilidade permite obter imediatamente privilégios do grupo root, uma vez que o processo smtpctl está equipado com a bandeira setgid root, em vez de setgid smtpq. Obtendo acesso ao grupo root, é possível sobrescrever o conteúdo de /var/lib/sss/mc/passwd e obter acesso total de root ao sistema.
Fonte: opennet.ru
