
Recentemente, no início do verão, surgiram convites em massa para atualizar o Exim para a versão 4.92 devido à vulnerabilidade CVE-2019-10149 (). E dias atrás, descobriu-se que o malware Sustes decidiu explorar essa vulnerabilidade.
Agora, todos os que atualizaram rapidamente podem novamente "se alegrar": em 21 de julho de 2019, o pesquisador Zerons descobriu uma vulnerabilidade crítica no Exim Mail Transfer agent (MTA) ao usar TLS para versões de 4.80 a 4.92.1 inclusive, permitindo que um código seja executado remotamente com privilégios elevados. ().
Vulnerabilidade
A vulnerabilidade está presente ao usar bibliotecas tanto GnuTLS quanto OpenSSL ao estabelecer uma conexão TLS segura.
Segundo o desenvolvedor Heiko Schlittermann, o arquivo de configuração no Exim por padrão não utiliza TLS, no entanto, muitas distribuições durante a instalação criam os certificados necessários e incluem a conexão segura. Além disso, versões mais novas do Exim configuram a opção tls_advertise_hosts=* e geram os certificados necessários.
depende da configuração. A maioria das distribuições habilita isso por padrão, mas o Exim precisa de um certificado + chave para funcionar como um servidor TLS. Provavelmente, as distribuições criam um Cert durante a configuração. Exims mais novos têm a opção tls_advertise_hosts configurada para "*" e criam um certificado autoassinado, se nenhum for fornecido.
A vulnerabilidade em si reside no processamento incorreto do SNI (Server Name Indication, tecnologia introduzida em 2003 no RFC 3546 para solicitar ao cliente o certificado correto para um nome de domínio, ) durante o handshake TLS. Para o invasor, basta enviar um SNI que termina com uma barra invertida ("") e um caractere nulo (" ").
Pesquisadores da empresa Qualys descobriram um bug na função string_printing(tls_in.sni), que consiste no escape incorreto da "". Como resultado, um retorno da barra invertida é gravado como não escapado no arquivo de cabeçalho de print spool. Em seguida, esse arquivo com privilégios elevados é lido pela função spool_read_header(), o que leva a um estouro de heap.
Vale ressaltar que, até o momento, os desenvolvedores do Exim criaram um PoC da vulnerabilidade com execução de comandos em um servidor vulnerável remoto, mas ele ainda não está disponível publicamente. Devido à facilidade de exploração do bug, é apenas uma questão de tempo, e um tempo relativamente curto.
Você pode consultar uma pesquisa mais detalhada da Qualys .

Uso do SNI em TLS
Número de servidores públicos potencialmente vulneráveis
De acordo com estatísticas de um grande provedor de hospedagem E-Soft Inc em 1º de setembro, em servidores alugados, a versão 4.92 é utilizada em mais de 70% dos hosts.
Versão
Número de Servidores
Porcentagem
4.92.1
6471
1.28%
4.92
376436
74.22%
4.91
58179
11.47%
4.9
5732
1.13%
4.89
10700
2.11%
4.87
14177
2.80%
4.84
9937
1.96%
Outras versões
25568
5.04%
Estatísticas da empresa E-Soft Inc
Se pesquisarmos em um mecanismo de busca , dos 5.250.000 na base de servidores:
- cerca de 3.500.000 utilizam Exim 4.92 (cerca de 1.380.000 com SSL/TLS);
- mais de 74.000 utilizam 4.92.1 (cerca de 25.000 com SSL/TLS).
Assim, existem aproximadamente 1,5 milhões.

Busca por servidores Exim no Shodan
Protección
- A opção mais simples, mas não recomendada, é não usar TLS, o que resultará no envio de e-mails em texto claro.
- Uma alternativa mais preferível para evitar a exploração da vulnerabilidade é atualizar para a versão .
- Se a atualização ou instalação de uma versão corrigida não for possível, é possível definir ACL na configuração do Exim para a opção acl_smtp_mail com as seguintes regras:
# to be prepended to your mail acl (the ACL referenced # by the acl_smtp_mail main config option) deny condition = ${if eq{}{${substr{-1}{1}{$tls_in_sni}}}} deny condition = ${if eq{}{${substr{-1}{1}{$tls_in_peerdn}}}}
Fonte: habr.com
