Una vulnerabilidad de seguridad crítica en Apache Tomcat (CVE-2025-24813) ha expuesto los servidores a riesgos de ejecución remota de código (RCE), divulgación de información y corrupción de datos.
La falla, originada en el manejo inadecuado de solicitudes HTTP PUT parciales, afecta a las versiones de Tomcat 11.0.0-M1 a 11.0.2, 10.1.0-M1 a 10.1.34 y 9.0.0.M1 a 9.0.98.
La Apache Software Foundation ha publicado parches (Tomcat 11.0.3, 10.1.35 y 9.0.98) e instó a realizar actualizaciones inmediatas para mitigar los riesgos de explotación.
Vulnerabilidad de Apache Tomcat
La vulnerabilidad surge de la implementación de solicitudes PUT parciales por parte de Tomcat, que permiten a los clientes cargar archivos en segmentos.
El código original (parcheado en la confirmación 0a668e0c) generó nombres de archivos temporales reemplazando los separadores de ruta (por ejemplo, /) con puntos internos (.), creando vulnerabilidades de equivalencia de ruta. Los atacantes podrían aprovechar esto para:
- Eludir los controles de seguridad: al crear nombres de archivos como ../../SENSITIVE/FILE.JSP, los actores malintencionados podrían escribir archivos fuera de los directorios previstos.
- Inyectar contenido malicioso: sobrescriba los archivos de configuración o JSP, habilitando RCE si el servidor procesa estos archivos.
- Exponer datos confidenciales: acceda a archivos restringidos a través de la ruta transversal si los permisos de escritura del servlet predeterminado están habilitados (deshabilitados de forma predeterminada)
Para RCE, las atacantes requieren:
- Servlet predeterminado habilitado para escritura (configuración no predeterminada)
- Soporte PUT parcial (habilitado de forma predeterminada)
- Persistencia de sesión basada en archivos (ubicación de almacenamiento predeterminada)
- Una biblioteca vulnerable a la deserialización en la pila de aplicaciones
La gravedad de la falla radica en su potencial de escalada de privilegios y movimiento lateral. Por ejemplo:
Corrupción de datos: los atacantes podrían alterar los archivos de sesión (SESSIONS.ser) almacenados en $CATALINA_BASE/work, alterando las sesiones de los usuarios.
RCE a través de cargas JSP: cargar un JSP malicioso en la raíz web (por ejemplo, webapps/ROOT) permite la ejecución de código arbitrario.
Fuga de información: las solicitudes PUT parciales podrían revelar estructuras de directorios o archivos de configuración como server.xml.
En particular, esta vulnerabilidad agrava problemas anteriores como CVE-2024-56337 (mitigación incompleta para CVE-2024-50379), destacando riesgos sistémicos en la lógica de manejo de archivos de Tomcat.
Mitigaciones
Los administradores deben:
- Implemente Tomcat 11.0.3, 10.1.35 o 9.0.98 para aplicar la solución.
- Si la actualización no es posible, establezca enablePartialPut=”false” en la configuración de DefaultServlet.
- Asegúrese de que el parámetro de solo lectura del servlet predeterminado siga siendo verdadero (predeterminado) para bloquear escrituras no autorizadas.
- Elimine o actualice bibliotecas susceptibles a ataques de deserialización (por ejemplo, módulos de serialización XStream o JDK obsoletos).
Para entornos Java, las medidas adicionales incluyen:
- Java 17: establezca -Dsun.io.useCanonCaches=false para evitar conflictos en el sistema de archivos que no distinguen entre mayúsculas y minúsculas.
- Java 21+: no se requieren más acciones, ya que se eliminó el sistema de caché problemático.
Los investigadores de seguridad enfatizan la urgencia de aplicar parches.
Mark Thomas, del equipo de seguridad de Apache Tomcat, señaló: «Esta vulnerabilidad subraya los riesgos de combinar servlets habilitados para escritura con sistemas de archivos que no distinguen entre mayúsculas y minúsculas».
Dado que es probable que surjan pronto vulnerabilidades, retrasar los parches corre el riesgo de sufrir violaciones catastróficas. Como advierte el aviso de Apache, «el estado habilitado por defecto de la función PUT parcial amplifica la exposición».
Las organizaciones deben priorizar las actualizaciones, auditar las configuraciones y adoptar estrategias de defensa en profundidad para salvaguardar los ecosistemas web de Java.