Reveláronse os detalles da vulnerabilidade crítica en Exim

publicado liberación correctiva Exim 4.92.2 coa eliminación de críticos vulnerabilidades (CVE-2019-15846), que na configuración predeterminada pode levar á execución remota de código por parte dun atacante con privilexios de root. O problema só aparece cando a compatibilidade con TLS está activada e explota-se pasando un certificado de cliente especialmente deseñado ou un valor modificado a SNI. Vulnerabilidade identificado por Qualys.

problema presente no manejador para escapar caracteres especiais na cadea (string_interpret_escape() de cadea.c) e prodúcese porque o carácter '\' ao final da cadea se interpreta antes do carácter nulo ('\0') e escapa del. Ao escapar, a secuencia '\' e o seguinte código nulo de fin de liña trátanse como un só carácter e o punteiro desprázase aos datos fóra da liña, que se trata como unha continuación da liña.

O código que chama a string_interpret_escape() asigna un búfer para o drenaxe en función do tamaño real e o punteiro exposto acaba nunha área fóra dos límites do búfer. En consecuencia, ao tentar procesar unha cadea de entrada, xorde unha situación ao ler datos dunha área fóra dos límites do búfer asignado e un intento de escribir unha cadea sen escape pode levar a escribir máis aló dos límites do búfer.

Na configuración predeterminada, a vulnerabilidade pódese explotar enviando datos especialmente deseñados a SNI cando se establece unha conexión segura co servidor. O problema tamén se pode explotar modificando os valores peerdn nas configuracións configuradas para a autenticación de certificados de clientes ou ao importar certificados. O ataque a través de SNI e peerdn é posible a partir do lanzamento Exim 4.80, na que se utilizou a función string_unprinting() para desimprimir os contidos peerdn e SNI.

Preparouse un prototipo de exploit para un ataque a través de SNI, que se executa en arquitecturas i386 e amd64 en sistemas Linux con Glibc. O exploit usa a superposición de datos na área do montón, polo que se sobrescribe a memoria na que se almacena o nome do ficheiro de rexistro. O nome do ficheiro substitúese por "/../../../../../../../../etc/passwd". A continuación, sobrescríbese a variable co enderezo do remitente, que primeiro se garda no rexistro, o que permite engadir un novo usuario ao sistema.

Actualizacións de paquetes con correccións de vulnerabilidades publicadas polas distribucións Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. Problema RHEL e CentOS non susceptibles, xa que Exim non está incluído no seu repositorio de paquetes normal (en QUENTO обновление xa formado, pero de momento non colocado a un repositorio público). No código Exim o problema é solucionado cunha liña única parche, que desactiva o efecto de escape da barra invertida se está ao final da liña.

Como solución alternativa para bloquear a vulnerabilidade, pode desactivar o soporte TLS ou engadir
Sección ACL "acl_smtp_mail":

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

Fonte: opennet.ru

Engadir un comentario