Error de ejecución de código remoto crítico corregido en el servidor SMTP de OpenBSD


Una vulnerabilidad crítica en el servidor de correo electrónico libre OpenSMTPD presente en muchos sistemas basados en Unix puede explotarse para ejecutar comandos de shell con privilegios de root.

El componente es una implementación libre del protocolo SMTP del lado del servidor para intercambiar tráfico relacionado con el correo electrónico con sistemas compatibles.

Es parte del proyecto OpenBSD y tiene una versión portátil que es compatible con otros sistemas operativos: FreeBSD, NetBSD, macOS, Linux (Alpine, Arch, Debian, Fedora, CentOS).

Bug explotable tanto local como remotamente


El error de seguridad, ahora rastreado como CVE-2020-7247, es una escalada de privilegios locales y ejecución remota de código. Está en la función 'smtp_mailaddr ()' que valida las direcciones del remitente y el destinatario.

Fue introducido en el código OpenSMTPD en mayo de 2018 y ha sido explotable desde entonces. Los atacantes pueden aprovecharlo de forma local o remota para ejecutar comandos arbitrarios con privilegios de root en un sistema vulnerable:


  • localmente, en la configuración predeterminada de OpenSMTPD (que escucha en la interfaz de bucle invertido y solo acepta correo de localhost)
  • local y remotamente, en la configuración predeterminada "sin comentarios" de OpenSMTPD (que escucha en todas las interfaces y acepta correo externo)


Esto es posible al pasar un comando en el campo 'CORREO DESDE' que especifica la dirección de correo electrónico del remitente.

En un informe técnico  publicado hoy, Qualys explica que "smtp_mailaddr ()" se comporta erróneamente cuando la parte local de una dirección no es válida (por ejemplo, tiene caracteres no aceptados) y el nombre de dominio está vacío.

Utilizar caracteres que no estén en la lista blanca (MAILADDR_ALLOWED) ni que hayan escapado (MAILADDR_ESCAPE), como ";" y "" (espacio), un atacante puede agregar una cadena al shell que ejecuta el comando MDA (agente de entrega de correo).

pasar ' sleep 66 ' como root en la configuración predeterminada OpenSMTPD

Exploit inspirado en el gusano Morris


Debido a algunas limitaciones, los investigadores de vulnerabilidad de Qualys crearon el código de explotación de prueba de concepto (PoC) utilizando una técnica del gusano Morris, el primero distribuido por Internet.

Una de las restricciones era un límite de 64 caracteres para los comandos de shell a través de la parte local de la dirección del remitente; el otro fue que los caracteres " $ " y " | " no se escaparon sino que se convirtieron a " : "

Animesh Jain, Gerente de Producto para Firmas de Vulnerabilidad en Qualys, le dijo a BleepingComputer que estos problemas se eliminaron al ejecutar el cuerpo del correo como un script de shell en Sendmail, que también fue lo que hizo el gusano Morris cuando comenzó a propagarse en noviembre de 1988.

Los desarrolladores de OpenSMTPD se apresuraron a entregar un parche después de reconocer y validar  los hallazgos reportados por los investigadores de Qualys.

En OpenBSD, los parches binarios están disponibles ejecutando el comando 'syspatch' y posteriormente reiniciar el servicio de OpenSMTPD:

$ doas syspatch

Para otros sistemas, una actualización de OpenSMTPD 6.6.2p1 hará el trabajo. Se recomienda actualizar el componente lo antes posible ya que el error tiene una gravedad crítica.

Publicar un comentario

0 Comentarios