La empresa Qualys otra vulnerabilidad crítica remota (CVE-2020-8794) en el servidor de correo , desarrollado por el proyecto OpenBSD. Al igual que la que se descubrió a finales de enero , el nuevo problema permite ejecutar comandos shell arbitrarios de forma remota en un servidor con privilegios de usuario root. La vulnerabilidad en la versión .
El problema es causado por un error en el código que realiza la entrega de correo a un servidor de correo remoto (no en el código que maneja las conexiones entrantes). El ataque puede ocurrir tanto del lado del cliente como del lado del servidor. Del lado del cliente, el ataque es posible en la configuración predeterminada de OpenSMTPD, donde OpenSMTPD acepta solicitudes solo en la interfaz de red interna (localhost) y envía correos electrónicos a servidores externos. Para explotar la vulnerabilidad, es suficiente que OpenSMTPD establezca una sesión con un servidor de correo controlado por el atacante durante la entrega de un mensaje o que el atacante pueda interceptar la conexión del cliente (MITM o redirección durante ataques a través de DNS o BGP).
Para un ataque del lado del servidor, es necesario que OpenSMTPD esté configurado para aceptar solicitudes de red externas de otros servidores de correo o para atender servicios de terceros que permitan enviar una solicitud a un correo electrónico arbitrario (por ejemplo, formularios de confirmación de direcciones en sitios web). Por ejemplo, un atacante puede conectarse al servidor OpenSMTPD y enviar un mensaje incorrecto (a un usuario inexistente), lo que provocará el envío de una respuesta con un código de error (bounce) al servidor del atacante. El atacante puede explotar la vulnerabilidad en el momento en que OpenSMTPD se conecte para entregar una notificación al servidor del atacante. Los comandos shell inyectados durante el ataque se colocan en un archivo que se ejecuta con privilegios de root al reiniciar OpenSMTPD, por lo que el atacante debe esperar el reinicio de OpenSMTPD o iniciar un fallo en OpenSMTPD.
El problema se encuentra en la función mta_io() en el código que analiza la respuesta multivaluada devuelta por el servidor remoto después de establecer la conexión (por ejemplo, «250-ENHANCEDSTATUSCODES» y «250 HELP»). En OpenSMTPD, se espera que la primera línea contenga un número de tres dígitos y un texto, separados por el carácter «-«, mientras que la segunda línea debe contener un número de tres dígitos y un texto, separados por un espacio. Si después del número de tres dígitos en la segunda línea no sigue un espacio y texto, el puntero utilizado para determinar el texto se establece en el byte siguiente al carácter ‘\0’ y se intenta copiar en el búfer de datos que sigue al final de la línea.
A petición del proyecto OpenBSD, la publicación de detalles sobre la explotación de la vulnerabilidad se ha pospuesto hasta el 26 de febrero para dar a los usuarios la oportunidad de actualizar sus sistemas. El problema está presente en la base de código desde diciembre de 2015, pero la explotación para ejecutar código con privilegios de root es posible desde mayo de 2018. Los investigadores han preparado un prototipo de exploit funcional que se ha probado con éxito en las compilaciones de OpenSMTPD para OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) y Fedora 31.
En OpenSMTPD también hay otra vulnerabilidad (CVE-2020-8793) que permite a un usuario local leer la primera línea de cualquier archivo en el sistema. Por ejemplo, se 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 permite leer todo el contenido de un archivo que pertenece a otro usuario si ese archivo se encuentra en la misma FS que el directorio /var/spool/smtpd/. Este problema no es explotable en muchas distribuciones de Linux donde el valor de /proc/sys/fs/protected_hardlinks está establecido en 1.
El problema es consecuencia de la eliminación incompleta de , señalada durante la auditoría realizada por Qualys en 2015. Un atacante puede lograr la ejecución de su código con los privilegios del grupo «_smtpq» estableciendo la variable «PATH=.» y colocando en el directorio actual un script llamado makemap (la herramienta smtpctl ejecuta makemap sin especificar claramente la ruta). Al obtener acceso al grupo «_smtpq», el atacante puede luego desencadenar una carrera (crear un archivo grande en el directorio offline y enviar la señal SIGSTOP) y, antes de que termine el procesamiento, sustituir el archivo en el directorio offline por un enlace simbólico duro que apunte al archivo objetivo cuyo contenido se debe leer.
Es notable que en Fedora 31, la vulnerabilidad permite obtener inmediatamente privilegios del grupo root, ya que el proceso smtpctl está marcado con el flag setgid root, en lugar de setgid smtpq. Al acceder al grupo root, se puede sobrescribir el contenido de /var/lib/sss/mc/passwd y obtener acceso total como root en el sistema.
Fuente: opennet.ru
