Apache Tomcat o también conocido como Tomcat es un contenedor de servlets, utilizado para compilar y ejecutar aplicaciones web realizadas en Java. Implementa y brinda soporte tanto a servlets como a páginas JSP (Java Server Pages). Para más información sobre Apache Tomcat puede visitar el enlace: http://tomcat.apache.org/
¿Qué pasó?
Recientemente, Apache Software Foundation ha informado la corrección de tres vulnerabilidades en Tomcat, las cuales han sido identificadas y catalogadas como: CVE-2020-1938 de riesgo Alto, CVE-2020-1935 y CVE-2019-17569 de riesgo Bajo.
El CVE-2020-1938 se da debido a una validación incorrecta en el conector AJP de Apache Tomcat, el cual por defecto se encuentra escuchando en el puerto 8009 y podría permitir a un atacante remoto no autenticado enviar una solicitud AJP especialmente diseñada, la cual conduciría a la lectura de archivos almacenados en el contenedor (Archivos de configuración, webapps, código fuente, etc.), o si el contenedor permite la carga de archivos, el atacante podría cargar un archivo JSP malicioso, lograr la ejecución remota de código y así comprometer el recurso afectado. Una prueba de concepto (PoC) de esta vulnerabilidad ha sido publicada aquí.
Mientras que los CVE-2020-1935 y CVE-2019-17569 corresponden a una vulnerabilidad conocida como HTTP Request Smuggling , la cual puede ser explotada manipulando el encabezado Content-Length y el encabezado Transfer-Encoding en una sola solicitud HTTP con el fin de por ejemplo: leer archivos del servidor. Esta falla se da porque no se trata de manera correcta las solicitudes que el servidor de Front-End envía al Back-End en ciertos escenarios.
Las versiones que se ven afectadas por los CVE-2020-1938 y CVE-2020-1935, son:
- Apache Tomcat 6.
- Apache Tomcat desde 7.0.0 hasta 7.0.99.
- Apache Tomcat desde 8.0.0 hasta 8.5.50.
- Apache Tomcat desde 9.0.0 hasta 9.0.30.
Mientas que las versiones afectadas por el CVE-2019-17569 van desde:
- Apache Tomcat 6.
- Apache Tomcat 7.0.98 hasta 7.0.99.
- Apache Tomcat 8.5.48 hasta 8.5.50.
- Apache Tomcat 9.0.28 hasta 9.0.30.
Recomendaciones:
- Para los CVE-2020-1938, CVE-2020-1935 y CVE-2019-17569, se deben aplicar los parches que abordan esta vulnerabilidad, de acuerdo la versión utilizada:
- Para el CVE-2020-1938, si por algún motivo no es posible aplicar los parches de seguridad, como solución provisoria se podría:
- Desactivar el conector AJP, para ello simplemente se debe comentar la línea correspondiente al mismo desde el archivo /conf/server.xml
- Si el conector AJP está siendo utilizado, configurar el atributo «requieredSecret» el cual es similar a una contraseña.
Referencias:
- http://tomcat.apache.org/security-9.html#Fixed_in_Apache_Tomcat_9.0.31
- http://tomcat.apache.org/security-8.html#Fixed_in_Apache_Tomcat_8.5.51
- http://tomcat.apache.org/security-7.html#Fixed_in_Apache_Tomcat_7.0.100
- https://bugzilla.redhat.com/show_bug.cgi?id=1806398
- https://meterpreter.org/cve-2020-1938-apache-tomcat-ajp-connector-remote-code-execution-vulnerability-alert/