Revelados detalles de vulnerabilidad crítica en Exim

publicado liberación correctiva Exim 4.92.2 con la eliminación de críticos vulnerabilidades (CVE-2019-15846), que en la configuración predeterminada puede provocar la ejecución remota de código por parte de un atacante con privilegios de root. El problema solo aparece cuando la compatibilidad con TLS está habilitada y se explota pasando un certificado de cliente especialmente diseñado o un valor modificado a SNI. Vulnerabilidad identificado por Qualys.

problema presente en el controlador para escapar de caracteres especiales en la cadena (string_interpret_escape() de string.c) y se debe a que el carácter '\' al final de la cadena se interpreta antes del carácter nulo ('\0') y se escapa de él. Al escapar, la secuencia '\' y el siguiente código nulo de fin de línea se tratan como un solo carácter y el puntero se desplaza a los datos fuera de la línea, que se tratan como una continuación de la línea.

El código que llama a string_interpret_escape() asigna un búfer para el drenaje según el tamaño real, y el puntero expuesto termina en un área fuera de los límites del búfer. En consecuencia, al intentar procesar una cadena de entrada, surge una situación cuando se leen datos de un área fuera de los límites del búfer asignado, y un intento de escribir una cadena sin escape puede llevar a escribir más allá de los límites del búfer.

En la configuración predeterminada, la vulnerabilidad se puede explotar enviando datos especialmente diseñados a SNI al establecer una conexión segura con el servidor. El problema también se puede aprovechar modificando los valores de peerdn en las configuraciones configuradas para la autenticación de certificados del cliente o al importar certificados. El ataque a través de SNI y peerdn es posible a partir del lanzamiento Exim 4.80, en el que se utilizó la función string_unprinting() para anular la impresión de los contenidos peerdn y SNI.

Se ha preparado un prototipo de exploit para un ataque vía SNI, ejecutándose en arquitecturas i386 y amd64 en sistemas Linux con Glibc. El exploit utiliza la superposición de datos en el área del montón, lo que sobrescribe la memoria en la que se almacena el nombre del archivo de registro. El nombre del archivo se reemplaza por "/../../../../../../../../etc/passwd". A continuación, se sobrescribe la variable con la dirección del remitente, que primero se guarda en el registro, lo que le permite agregar un nuevo usuario al sistema.

Actualizaciones de paquetes con correcciones de vulnerabilidades publicadas por distribuciones Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. Problema de RHEL y CentOS no susceptible, ya que Exim no está incluido en su repositorio de paquetes habitual (en EPEL обновление ya formadopero por ahora no colocado a un repositorio público). En el código Exim, el problema se soluciona con una sola línea. parche, que desactiva el efecto de escape de la barra invertida si está al final de la línea.

Como solución alternativa para bloquear la vulnerabilidad, puede desactivar la compatibilidad con TLS o agregar
Sección ACL “acl_smtp_mail”:

condición de denegación = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
condición de denegación = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Fuente: opennet.ru

Añadir un comentario