Detalhes de vulnerabilidade crítica no Exim revelados

publicado liberação corretiva Exim4.92.2 com a eliminação de críticos vulnerabilidades (CVE-2019-15846), que na configuração padrão pode levar à execução remota de código por um invasor com privilégios de root. O problema só aparece quando o suporte TLS está habilitado e é explorado passando um certificado de cliente especialmente projetado ou um valor modificado para o SNI. Vulnerabilidade identificado pela Qualys.

problema presente no manipulador para escapar de caracteres especiais na string (string_interpret_escape() de string.c) e é causado pelo caractere '\' no final da string sendo interpretado antes do caractere nulo ('\0') e escapando dele. Ao escapar, a sequência '\' e o código nulo de final de linha seguinte são tratados como um único caractere e o ponteiro é deslocado para dados fora da linha, que são tratados como uma continuação da linha.

O código que chama string_interpret_escape() aloca um buffer para o dreno com base no tamanho real, e o ponteiro exposto termina em uma área fora dos limites do buffer. Conseqüentemente, ao tentar processar uma string de entrada, surge uma situação ao ler dados de uma área fora dos limites do buffer alocado, e uma tentativa de gravar uma string sem escape pode levar à gravação além dos limites do buffer.

Na configuração padrão, a vulnerabilidade pode ser explorada enviando dados especialmente projetados para o SNI ao estabelecer uma conexão segura com o servidor. O problema também pode ser explorado modificando valores peerdn em configurações configuradas para autenticação de certificado de cliente ou ao importar certificados. Ataque via SNI e peerdn é possível a partir do lançamento Exim4.80, em que a função string_unprinting() foi usada para remover a impressão do conteúdo peerdn e SNI.

Um protótipo de exploit foi preparado para um ataque via SNI, rodando nas arquiteturas i386 e amd64 em sistemas Linux com Glibc. A exploração usa sobreposição de dados na área de heap, resultando na substituição da memória na qual o nome do arquivo de log está armazenado. O nome do arquivo é substituído por "/../../../../../../../../etc/passwd". Em seguida, é sobrescrita a variável com o endereço do remetente, que primeiro é salvo no log, o que permite adicionar um novo usuário ao sistema.

Atualizações de pacotes com correções de vulnerabilidades lançadas por distribuições Debian, Ubuntu, Fedora, SUSE / openSUSE и FreeBSD. Problema RHEL e CentOS não suscetível, já que o Exim não está incluído em seu repositório de pacotes regular (em CALOROSO обновление formadoMas para agora não colocado para um repositório público). No código Exim, o problema é corrigido com uma linha correção, que desativa o efeito de escape da barra invertida se ela estiver no final da linha.

Como solução alternativa para bloquear a vulnerabilidade, você pode desativar o suporte TLS ou adicionar
Seção ACL “acl_smtp_mail”:

condição de negação = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
condição de negação = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Fonte: opennet.ru

Adicionar um comentário