Vulnerabilidades en OpenSMTPD que permiten acceso root remoto y local

Empresa Qualys revelado otra vulnerabilidad crítica remota (CVE-2020-8794) en el servidor de correo Abrir SMTPD, desarrollado por el proyecto OpenBSD. Como el identificado a finales de enero vulnerabilidad, un nuevo problema hace posible ejecutar de forma remota comandos de shell arbitrarios en un servidor con derechos de usuario root. Vulnerabilidad eliminado en cuestión OpenSMTPD 6.6.4p1.

El problema se debe a un error en el código que entrega el correo al servidor de correo remoto (no en el código que maneja las conexiones entrantes). El ataque es posible tanto del lado del cliente como del lado del servidor. En el lado del cliente, el ataque es posible en la configuración predeterminada de OpenSMTPD, en la que OpenSMTPD acepta solicitudes solo en la interfaz de red interna (localhost) y envía mensajes de correo a servidores externos. Para aprovechar la vulnerabilidad, basta con que, durante la entrega de una carta, OpenSMTPD establezca una sesión con un servidor de correo controlado por el atacante, o que el atacante pueda introducirse en la conexión del cliente (MITM o redirección en caso de ataques vía DNS o BGP). ).

Para un ataque del lado del servidor, OpenSMTPD debe configurarse para recibir solicitudes de red externa de otros servidores de correo o brindar servicios de terceros que le permitan enviar una solicitud a un correo electrónico arbitrario (por ejemplo, formularios de confirmación de dirección en sitios web). Por ejemplo, un atacante puede conectarse al servidor OpenSMTPD y enviar una carta incorrecta (a un usuario inexistente), lo que provocará una respuesta que enviará una carta con un código de error (rebote) al servidor del atacante. Un atacante puede aprovechar la vulnerabilidad cuando OpenSMTPD se conecta para enviar una notificación al servidor del atacante. Los comandos de shell inyectados durante el ataque se colocan en un archivo que se ejecuta con derechos de root cuando se reinicia OpenSMTPD, por lo que el atacante debe esperar a que OpenSMTPD se reinicie o inicie un bloqueo de OpenSMTPD para completar el ataque.

El problema está presente en la función mta_io() en el código para analizar la respuesta multilínea devuelta por el servidor remoto después de que se establece una conexión (por ejemplo, "250-ENHANCEDSTATUSCODES" y "250 HELP"). OpenSMTPD calcula que la primera línea incluye un número de tres dígitos y texto separado por un carácter "-", y la segunda línea contiene un número de tres dígitos y texto separado por un espacio. Si un número de tres dígitos no va seguido de un espacio y texto en la segunda línea, el puntero utilizado para definir el texto se establece en el byte que sigue al carácter '\0' y se intenta copiar los datos que siguen al final. de la línea en el buffer.

A petición del proyecto OpenBSD, la publicación de detalles sobre la explotación de la vulnerabilidad se retrasó hasta el 26 de febrero para permitir a los usuarios actualizar sus sistemas. El problema ha estado presente en el código base desde diciembre de 2015, pero la explotación antes de la ejecución del código con privilegios de root es posible desde mayo de 2018. Los investigadores prepararon un prototipo funcional del exploit, que se probó con éxito en compilaciones de OpenSMTPD para OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (prueba) y Fedora 31.

En OpenSMTPD también identificado Otra vulnerabilidad (CVE-2020-8793) que permite a un usuario local leer la primera línea de cualquier archivo del sistema. Por ejemplo, puede leer la primera línea de /etc/master.passwd, que contiene el hash de la contraseña del usuario root. La vulnerabilidad también le permite leer el contenido completo de un archivo propiedad de otro usuario si este archivo está ubicado en el mismo sistema de archivos que el directorio /var/spool/smtpd/. El problema no se puede explotar en muchas distribuciones de Linux donde el valor de /proc/sys/fs/protected_hardlinks está establecido en 1.

El problema es consecuencia de una eliminación incompleta. проблем, expresó durante la auditoría realizada por Qualys en 2015. Un atacante puede lograr la ejecución de su código con los derechos del grupo "_smtpq" configurando la variable "PATH=." y colocar un script llamado makemap en el directorio actual (la utilidad smtpctl ejecuta makemap sin especificar explícitamente la ruta). Al obtener acceso al grupo "_smtpq", el atacante puede provocar una condición de carrera (crear un archivo grande en el directorio fuera de línea y enviar una señal SIGSTOP) y, antes de que se complete el procesamiento, reemplazar el archivo en el directorio fuera de línea con un disco duro. enlace simbólico que apunta al archivo de destino cuyo contenido debe leerse.

Es de destacar que en Fedora 31 la vulnerabilidad le permite obtener inmediatamente los privilegios del grupo raíz, ya que el proceso smtpctl está equipado con el indicador raíz setgid, en lugar del indicador setgid smtpq. Al obtener acceso al grupo raíz, puede sobrescribir el contenido de /var/lib/sss/mc/passwd y obtener acceso completo al sistema.

Fuente: opennet.ru

Añadir un comentario