una vulnerabilidad explotable de forma remota en el servidor de correo qmail.

Investigadores de seguridad de la empresa Qualys demostraron la posibilidad la operación vulnerabilidades en el servidor de correo qmail, conocida desde 2005 (CVE-2005-1513), pero que había permanecido sin solución, ya que el autor de qmail afirmaba que era poco realista crear un exploit funcional que pudiera ser utilizado para atacar sistemas en configuración predeterminada. En Qualys lograron desarrollar un exploit que refutaba esta suposición y permitía iniciar la ejecución remota de código en el servidor mediante el envío de un mensaje especialmente diseñado.

El problema es causado por un desbordamiento de enteros en la función stralloc_readyplus(), que puede ocurrir al procesar un mensaje muy grande. Para explotar esta vulnerabilidad se requería un sistema de 64 bits con más de 4 GB de memoria virtual. En el análisis inicial de la vulnerabilidad en 2005, Daniel Bernstein afirmó que la suposición en el código de que el tamaño del arreglo asignado siempre encajaría en un valor de 32 bits se basaba en que nadie proporciona gigabytes de memoria a cada proceso. En los últimos 15 años, los sistemas de 64 bits en los servidores han desplazado a los de 32 bits, incrementando drásticamente la cantidad de memoria suministrada y la capacidad de las redes.

Los paquetes que acompañan a qmail tomaron en cuenta el comentario de Bernstein y, al iniciar el proceso qmail-smtpd, limitaban la memoria disponible (por ejemplo, en Debian 10 se establece un límite de 7 MB). Pero los ingenieros de Qualys descubrieron que esto no era suficiente y que, además de qmail-smtpd, se podía llevar a cabo un ataque remoto al proceso qmail-local, que en todos los paquetes verificados permanecía sin restricciones. Como prueba, se preparó un prototipo de exploit adecuado para atacar el paquete de qmail suministrado en Debian en configuración predeterminada.
Para organizar la ejecución remota de código durante el ataque, se requiere tener 4 GB de espacio libre en el disco y 8 GB de RAM en el servidor.
El exploit permite ejecutar cualquier comando shell con los privilegios de cualquier usuario en el sistema, excepto root y usuarios del sistema que no tengan su propio subdirectorio en el directorio "/home" (el proceso qmail-local se ejecuta con los derechos del usuario local al que se le está entregando).

El ataque se lleva a cabo
a través del envío de un mensaje de correo electrónico muy grande, que incluye varias líneas en el encabezado, con un tamaño de aproximadamente 4 GB y 576 MB. El procesamiento de tal línea en qmail-local resulta en un desbordamiento de enteros al intentar entregar el mensaje a un usuario local. El desbordamiento de enteros, a su vez, provoca un desbordamiento de búfer al copiar datos y la posibilidad de sobrescribir páginas de memoria con código libc. A través de manipulaciones con la disposición de los datos transmitidos, es posible sobrescribir la dirección de la función 'open()', reemplazándola por la dirección de la función 'system()'.

A continuación, en el proceso de invocación de qmesearch() en qmail-local se abre el archivo '.qmail-extension' a través de la función open(), lo que lleva a la ejecución efectiva de la función
system('*.qmail-extension'). Sin embargo, dado que parte del archivo 'extension' se forma en base a la dirección del destinatario (por ejemplo, 'localuser-extension@localdomain'), los atacantes pueden organizar la transferencia de un comando para ejecutar, especificando al usuario 'localuser-;command;@localdomain' como destinatario del mensaje.

Durante el análisis del código también se identificaron dos vulnerabilidades en el parche adicional qmail-verify, que forma parte del paquete para Debian. La primera vulnerabilidad (CVE-2020-3811) permite eludir la verificación de la dirección de correo electrónico, y la segunda (CVE-2020-3812) provoca una filtración de información local. En particular, la primera vulnerabilidad permite eludir la verificación de la validez de la dirección utilizada en el exploit para transmitir comandos (la verificación no se activa para las direcciones sin dominio, como 'localuser-;command;'). La segunda vulnerabilidad puede utilizarse para verificar la existencia de archivos y directorios en el sistema, incluidos aquellos accesibles solo para root (qmail-verify se ejecuta con privilegios de root), a través de una llamada directa al manejador local.

Para eludir el problema, Bernstein recomendó ejecutar los procesos de qmail estableciendo un límite común en la memoria disponible ('softlimit -m12345678'), y en este caso, el problema se bloquea. Como un método alternativo de protección, también se menciona la restricción del tamaño máximo del mensaje procesado a través del archivo 'control/databytes' (por defecto no se crea con la configuración predeterminada, qmail permanece vulnerable). Además, 'control/databytes' no protege contra ataques locales por parte de usuarios del sistema, ya que el límite solo se tiene en cuenta en qmail-smtpd.

El problema afecta al paquete netqmail, que se encuentra en los repositorios de Debian. Para este paquete se ha preparado un conjunto de parches que corrigen tanto las antiguas vulnerabilidades de 2005 (mediante la adición de límites rígidos de memoria en el código de la función alloc()) como los nuevos problemas en qmail-verify. Por separado preparado la versión actualizada del parche qmail-verify. Los desarrolladores la rama notqmail han preparado sus parches para bloquear antiguos problemas y también han comenzado a trabajar en la eliminación de todos los posibles desbordamientos de enteros en el código.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster