No servidor de correio Exim
Na configuração padrão, o ataque pode ser realizado sem complicações desnecessárias por um usuário local, uma vez que é aplicada a ACL "verify = destinatário", que realiza verificações adicionais de endereços externos. Um ataque remoto pode ocorrer quando as configurações são alteradas, como atuar como um MX secundário para outro domínio, remover a ACL "verify=recipient" ou certas alterações no local_part_suffix). Um ataque remoto também é possível se o invasor conseguir manter a conexão com o servidor aberta por 7 dias (por exemplo, enviando um byte por minuto para contornar um tempo limite). Ao mesmo tempo, é possível que existam vetores de ataque mais simples para exploração remota do problema.
A vulnerabilidade é causada pela verificação incorreta do endereço do destinatário na função delivery_message() definida no arquivo /src/deliver.c. Ao manipular a formatação do endereço, um invasor pode conseguir a substituição de seus dados nos argumentos de um comando chamado através da função execv() com direitos de root. A operação não requer o uso de técnicas complexas usadas para estouros de buffer ou corrupção de memória; a simples substituição de caracteres é suficiente.
O problema está relacionado ao uso da construção para conversão de endereço:
entregar_localpart = expand_string(
string_sprintf("${local_part:%s}", novo->endereço));
entregar_domínio = expand_string(
string_sprintf("${domínio:%s}", novo->endereço));
A função expand_string() é um combinador muito complicado, incluindo o reconhecimento do comando “${run{command argument}”, que leva ao lançamento de um manipulador externo. Assim, para atacar dentro de uma sessão SMTP, um usuário local só precisa enviar um comando como 'RCPT TO “username+${run{...}}@localhost”', onde localhost é um dos hosts da lista local_domains, e nome de usuário é o nome de um usuário local existente.
Se o servidor funcionar como retransmissor de correio, basta enviar remotamente o comando 'RCPT TO "${run{...}}@relaydomain.com"', onde relaydomain.com é um dos hosts listados no arquivo relay_to_domains seção de configurações. Como o Exim não tem como padrão o modo de eliminação de privilégios (deliver_drop_privilege = false), os comandos passados via "${run{...}}" serão executados como root.
Vale ressaltar que a vulnerabilidade foi
Uma correção para versões anteriores que continuam a ser usadas em distribuições está atualmente disponível apenas como
Fonte: opennet.ru