
Recientemente, a principios del verano, surgieron llamados masivos para actualizar Exim a la versión 4.92 debido a la vulnerabilidad CVE-2019-10149 (). Y hace unos días se descubrió que el malware Sustes decidió aprovechar esta vulnerabilidad.
Ahora, todos los que se actualizaron de emergencia pueden nuevamente «alegrarse»: el 21 de julio de 2019, el investigador Zerons descubrió una vulnerabilidad crítica en Exim Mail Transfer agent (MTA) al usar TLS para versiones de 4.80 a 4.92.1 incluidas, que permite la ejecución de código con privilegios elevados ().
Vulnerabilidad
La vulnerabilidad está presente al utilizar bibliotecas tanto GnuTLS como OpenSSL al establecer una conexión TLS segura.
Según el desarrollador Heiko Schlittermann, el archivo de configuración en Exim por defecto no usa TLS, sin embargo, muchas distribuciones durante la instalación crean los certificados necesarios e incluyen la conexión segura. Además, las versiones más recientes de Exim establecen la opción tls_advertise_hosts=* y generan los certificados necesarios.
depende de la configuración. La mayoría de las distribuciones lo habilitan por defecto, pero Exim necesita un certificado+clave para funcionar como un servidor TLS. Probablemente las distribuciones crean un Cert durante la configuración. Las versiones más nuevas de Exim tienen la opción tls_advertise_hosts predeterminada en «*» y crean un certificado autofirmado si no se proporciona uno.
La propia vulnerabilidad radica en el manejo incorrecto de SNI (Server Name Indication, tecnología introducida en 2003 en el RFC 3546 para que un cliente solicite el certificado correcto para un nombre de dominio, ) durante el apretón de manos TLS. Un atacante simplemente necesita enviar SNI que termine con una barra invertida («») y un símbolo nulo (» «).
Investigadores de la empresa Qualys descubrieron un error en la función string_printing(tls_in.sni), que consiste en un escape incorrecto de «». Como resultado, se escribe la barra invertida en un formato no escapado en el archivo de encabezados de la cola de impresión. Luego, este archivo con privilegios elevados es leído por la función spool_read_header(), lo que conduce a un desbordamiento de heap.
Cabe señalar que en este momento los desarrolladores de Exim han creado un PoC de la vulnerabilidad que permite la ejecución de comandos en un servidor vulnerable remoto, pero aún no está disponible públicamente. Debido a la simplicidad de explotación del error, es solo cuestión de tiempo, y bastante corto.
Se puede consultar con un estudio más detallado de la empresa Qualys .

Uso de SNI en TLS
Número de servidores públicos potencialmente vulnerables
Según las estadísticas de un importante proveedor de hosting E-Soft Inc a 1 de septiembre, en los servidores alquilados, la versión 4.92 se usa en más del 70% de los hosts.
Versión
Número de Servidores
Porcentaje
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%
Otras versiones
25568
5.04%
Estadísticas de la empresa E-Soft Inc
Si se consulta el motor de búsqueda , de 5,250,000 en la base de datos de servidores:
- alrededor de 3,500,000 usan Exim 4.92 (alrededor de 1,380,000 usando SSL/TLS);
- más de 74,000 usan 4.92.1 (alrededor de 25,000 usando SSL/TLS).
Así, el número de servidores Exim públicamente conocidos y accesibles que son potencialmente vulnerables es de aproximadamente 1.5 millones.

Búsqueda de servidores Exim en Shodan
Protección
- La forma más simple, pero no recomendada, es no usar TLS, lo que llevará a enviar correos electrónicos en texto claro.
- Una opción preferible para evitar la explotación de la vulnerabilidad es actualizar a la versión .
- Si no es posible actualizar o instalar una versión parcheada, se puede establecer un ACL en la configuración de Exim para la opción acl_smtp_mail con las siguientes reglas:
# 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}}}}
Fuente: habr.com
