No servidor de correo Exim
Na configuración predeterminada, o ataque pódese levar a cabo sen complicacións innecesarias por parte dun usuario local, xa que se aplica a ACL "verify = recipient", que realiza comprobacións adicionais para enderezos externos. Pode producirse un ataque remoto cando se cambian a configuración, como actuar como MX secundario para outro dominio, eliminar a ACL "verify=recipient" ou certos cambios no local_part_suffix). Tamén é posible un ataque remoto se o atacante é capaz de manter aberta a conexión co servidor durante 7 días (por exemplo, enviando un byte por minuto para evitar un tempo de espera). Ao mesmo tempo, é posible que existan vectores de ataque máis sinxelos para a explotación remota do problema.
A vulnerabilidade é causada pola verificación incorrecta do enderezo do destinatario na función deliver_message() definida no ficheiro /src/deliver.c. Ao manipular o formato do enderezo, un atacante pode conseguir a substitución dos seus datos polos argumentos dun comando chamado a través da función execv() con dereitos de root. O funcionamento non require o uso de técnicas complexas utilizadas para desbordamentos de búfer ou corrupción da memoria; é suficiente a simple substitución de caracteres.
O problema está relacionado co uso do constructo para a conversión de enderezos:
delivery_localpart = expand_string(
string_sprintf("${parte_local:%s}", novo->enderezo));
entrega_dominio = expand_string(
string_sprintf("${dominio:%s}", novo->enderezo));
A función expand_string() é un combinador demasiado complicado, que inclúe o recoñecemento do comando "${run{command arguments}", que leva ao lanzamento dun controlador externo. Así, para atacar dentro dunha sesión SMTP, un usuario local só precisa enviar un comando como 'RCPT TO “nome de usuario+${executar{...}}@localhost”', onde localhost é un dos hosts da lista de dominios_locales, e nome de usuario é o nome dun usuario local existente.
Se o servidor funciona como retransmisión de correo, abonda con enviar de forma remota o comando 'RCPT TO "${run{...}}@relaydomain.com"', onde relaydomain.com é un dos hosts que aparecen na lista relay_to_domains. sección de configuración. Dado que Exim non elimina o modo de privilexios por defecto (deliver_drop_privilege = false), os comandos pasados a través de "${run{...}}" executaranse como root.
Cabe destacar que a vulnerabilidade foi
Actualmente só está dispoñible unha corrección para versións anteriores que seguen usándose nas distribucións
Fonte: opennet.ru