Skip to main content

La brecha Ghostcat afecta a todas las versiones de Tomcat

Escrito por
ghostcat feature

26 de febrero de 2020

0 minutos de lectura

Apache Tomcat es una implementación de código abierto de las tecnologías Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket. Tomcat es uno de los entornos de servidor web HTTP para Java más populares y se lanzó en 1998.

Ghostcat es una vulnerabilidad de gravedad alta en Tomcat, descubierta el 3 de enero por los investigadores de seguridad de Chaitin Tech. El 20 de febrero, la Base de Datos Nacional de Vulnerabilidades de China (CNVD) publicó una alerta de seguridad sobre este problema con el número CNVD-2020-10487.

La vulnerabilidad se encontró en el protocolo Apache JServ (AJP). El problema es que este protocolo binario permite que un atacante lea o incluya cualquier archivo en los directorios de aplicaciones web de Tomcat.

Conector AJP

El conector AJP se encarga de la comunicación entre Tomcat y el mundo exterior. De forma predeterminada, el conector AJP está habilitado en Apache Tomcat en el puerto 8009 en las versiones 6 a 9. Como CVE-2020-1938 es una vulnerabilidad de lectura e inclusión de archivos en el conector AJP de Tomcat, todas las versiones que no incluyen el parche son vulnerables.

La vulnerabilidad permite que un atacante lea el contenido de los archivos de la aplicación web. Si la aplicación web permite subir archivos, el atacante también puede subir cualquier archivo al servidor, incluidas páginas Java Server Pages (JSP) maliciosas que permiten ejecutar código de forma remota en el servidor.

Logotipo de GhostCat con símbolos naranjas y verdes en forma de ojos de gato sobre letras blancas y naranjas en negrita

Solución

Apache Tomcat ya publicó versiones con parches para Tomcat 7, 8 y 9:

Los investigadores de Chaitin recomiendan que, si aplicas el parche, también agregues un secreto adecuado a la configuración del conector en el archivo /conf/server.xml.

<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" 
address="YOUR_TOMCAT_IP_ADDRESS" 
secret="YOUR_TOMCAT_AJP_SECRET" />

Según los investigadores de Chaitin, si no puedes aplicar el parche, hay otras formas de mitigar este problema.

Si no usas el conector AJP, puedes comentar o eliminar de forma segura su declaración en el archivo /conf/server.xml.

<!--<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" />-->

Si usas el conector AJP y no puedes actualizar a la versión con el parche, agrega un campo requiredSecret con un secreto seguro y difícil de adivinar.

<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" 
address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_TOMCAT_AJP_SECRET" />

Spring Boot

La última versión del informe del ecosistema JVM muestra que Spring Boot es el framework del lado del servidor más usado en el ecosistema. Spring Boot usa un servidor web integrado y, de forma predeterminada, utiliza la versión integrada de Tomcat. Es posible que spring-boot-starter-web haya incorporado a tu sistema una versión vulnerable del paquete de Apache Tomcat integrado.

Editado el 2 de marzo de 2020

Es importante saber que, de forma predeterminada, Spring Boot no crea un conector AJP al instalarse. Esto significa que, con la configuración predeterminada, un atacante no puede aprovechar esta vulnerabilidad. Sin embargo, puedes configurar Spring Boot de otra manera. Según tu configuración, verifica si eres vulnerable y toma las medidas adecuadas.

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.