En el servidor de correo Exim
En la configuración predeterminada, el ataque puede ser realizado sin complicaciones innecesarias por un usuario local, ya que se aplica la ACL “verificar = destinatario”, que realiza comprobaciones adicionales para direcciones externas. Puede ocurrir un ataque remoto cuando se cambian las configuraciones, como actuar como un MX secundario para otro dominio, eliminar la ACL "verify=recipient" o ciertos cambios en local_part_suffix). Un ataque remoto también es posible si el atacante puede mantener abierta la conexión al servidor durante 7 días (por ejemplo, enviando un byte por minuto para evitar un tiempo de espera). Al mismo tiempo, es posible que existan vectores de ataque más simples para la explotación remota del problema.
La vulnerabilidad se debe a una verificación incorrecta de la dirección del destinatario en la función delivery_message() definida en el archivo /src/deliver.c. Al manipular el formato de la dirección, un atacante puede lograr la sustitución de sus datos en los argumentos de un comando llamado a través de la función execv() con derechos de root. La operación no requiere el uso de técnicas complejas utilizadas para desbordamientos de búfer o corrupción de memoria; la simple sustitución de caracteres es suficiente.
El problema está relacionado con el uso de la construcción para la conversión de direcciones:
entregar_localpart = expandir_cadena(
string_sprintf("${local_part:%s}", nueva->dirección));
entregar_dominio = expandir_cadena(
string_sprintf("${dominio:%s}", nueva->dirección));
La función expand_string() es un combinador demasiado complicado, que incluye el reconocimiento del comando "${run{command arguments}", lo que conduce al lanzamiento de un controlador externo. Por lo tanto, para atacar dentro de una sesión SMTP, un usuario local solo necesita enviar un comando como 'RCPT TO “username+${run{...}}@localhost”', donde localhost es uno de los hosts de la lista local_domains, y nombre de usuario es el nombre de un usuario local existente.
Si el servidor funciona como retransmisión de correo, basta con enviar de forma remota el comando 'RCPT TO "${run{...}}@relaydomain.com"', donde retransmisióndomain.com es uno de los hosts enumerados en retransmisión_a_dominios sección de configuración. Dado que Exim no utiliza de forma predeterminada el modo de eliminación de privilegios (deliver_drop_privilege = false), los comandos pasados a través de "${run{...}}" se ejecutarán como root.
Es de destacar que la vulnerabilidad fue
Actualmente, una solución para versiones anteriores que se siguen utilizando en distribuciones solo está disponible como
Fuente: opennet.ru