剣 KENSAI
Crítica CVE-2025-24813 Marzo de 2026 · 8 min de lectura

CVE-2025-24813: RCE mediante PUT parcial en Apache Tomcat

Una vulnerabilidad crítica en Apache Tomcat permite la ejecución remota de código sin autenticación mediante solo dos solicitudes HTTP. El ataque aprovecha la función de PUT parcial de Tomcat para cargar un objeto Java serializado y, a continuación, desencadena la deserialización mediante una solicitud GET. CVSS 9.8. Afecta a Tomcat 9, 10 y 11 con la configuración predeterminada.


9.8
CRÍTICA
AtributoValor
ID de CVECVE-2025-24813
Vector CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-502: Deserialización de datos no confiables
Publicación10 de marzo de 2025
ExplotaciónActiva — PoC pública publicada en menos de 30 horas

¿Qué es CVE-2025-24813?

Apache Tomcat admite el «PUT parcial», una función HTTP que permite a los clientes cargar archivos grandes por segmentos mediante encabezados Content-Range. Tomcat almacena estas cargas parciales como archivos temporales en un directorio de trabajo. La vulnerabilidad surge de dos fallos en esta implementación:

  1. El nombre del archivo temporal se deriva de la ruta URL de carga, que está parcialmente controlada por el atacante
  2. Si el mecanismo de persistencia de sesiones de Java está habilitado (almacenando las sesiones en archivos), Tomcat puede deserializar cualquier archivo del directorio de trabajo que tenga la extensión .session

Un atacante puede combinar estos fallos para cargar un objeto Java serializado malicioso, camuflado como una carga parcial, y luego desencadenar su deserialización solicitando una URL que Tomcat interpreta como una consulta de sesión.

🚨 PoC pública en menos de 30 horas

Se publicó en GitHub un exploit funcional aproximadamente 30 horas después de divulgarse CVE-2025-24813. El ataque de dos solicitudes es extremadamente fácil de automatizar y se observaron campañas de explotación masiva en cuestión de días. Cualquier servidor Tomcat expuesto a Internet, sin parchear y con la configuración predeterminada debe considerarse comprometido.

Versiones afectadas

Versión de TomcatRango afectadoVersión corregida
Apache Tomcat 11.x11.0.0-M1 a 11.0.211.0.3+
Apache Tomcat 10.x10.1.0-M1 a 10.1.3410.1.35+
Apache Tomcat 9.x9.0.0.M1 a 9.0.989.0.99+

Requisitos previos para la RCE: Deben cumplirse ambas condiciones:

Nota sobre los requisitos previos: Algunas fuentes informaron inicialmente que los requisitos previos eran estrictos. Sin embargo, el análisis de entornos reales demostró que ciertas configuraciones habituales de Tomcat (incluidas algunas distribuciones de servidores de aplicaciones) cumplen ambas condiciones. Aplique el parche de todos modos: la puntuación CVSS refleja las condiciones del peor escenario.

El ataque de dos solicitudes

# Solicitud 1: cargar un objeto serializado malicioso mediante PUT parcial
PUT /.xxxxx HTTP/1.1
Host: target.com
Content-Type: application/octet-stream
Content-Range: bytes 0-1233/1234
Content-Length: 1234

[carga útil de una cadena de gadgets Java serializada — p. ej., Commons Collections]

# Tomcat lo almacena como archivo temporal en el directorio de trabajo
# Nombre de archivo derivado de la URL: .xxxxx → almacenado como carga parcial

# Solicitud 2: desencadenar la deserialización mediante una consulta de sesión
GET /.xxxxx HTTP/1.1
Host: target.com
Cookie: JSESSIONID=.xxxxx

# Tomcat busca el archivo de sesión que coincide con el ID de sesión
# Encuentra el archivo del atacante → lo deserializa → RCE

Por qué Tomcat es un objetivo de alto valor

Apache Tomcat es uno de los servidores de aplicaciones Java más utilizados del mundo y se emplea en:

Una RCE en Tomcat suele implicar acceso a credenciales de bases de datos, API internas y datos empresariales confidenciales almacenados por las aplicaciones que se ejecutan en él.

Detección

# Comprobar la versión de Tomcat
/opt/tomcat/bin/version.sh
# o comprobar el manifiesto de catalina.jar
unzip -p /opt/tomcat/lib/catalina.jar META-INF/MANIFEST.MF | grep Implementation-Version

# Buscar cargas PUT parciales sospechosas en los registros de acceso
grep 'PUT' /opt/tomcat/logs/localhost_access_log.* | grep -v '200\|201\|204'
grep 'PUT.*Content-Range' /opt/tomcat/logs/localhost_access_log.*

# Buscar archivos inusuales en el directorio de trabajo de Tomcat
find /opt/tomcat/work -name "*.session" -newer /opt/tomcat/conf/server.xml
find /opt/tomcat/work -type f -newer /opt/tomcat/conf/server.xml

# Comprobar si la escritura del servlet predeterminado está habilitada
grep -r "readonly" /opt/tomcat/conf/web.xml /opt/tomcat/webapps/

Mitigación

  1. Aplique el parche inmediatamente: Actualice a Tomcat 9.0.99+, 10.1.35+ u 11.0.3+
  2. Deshabilite la escritura del servlet predeterminado (si no es necesaria):
    <servlet>
      <servlet-name>default</servlet-name>
      <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
      <init-param>
        <param-name>readonly</param-name>
        <param-value>true</param-value>  <!-- Asegúrese de que esto sea true -->
      </init-param>
    </servlet>
  3. Deshabilite la persistencia de sesiones basada en archivos: Cambie a la persistencia de sesiones en memoria o en una base de datos
  4. Implemente reglas de WAF: Bloquee las solicitudes HTTP PUT con encabezados Content-Range si no son necesarias
  5. Utilice filtros de deserialización de Java: Configure los filtros de serialización de Java 9+ para restringir las clases que pueden deserializarse

Capacidad de detección de KENSAI

Encuentre sus servidores Tomcat expuestos antes que los atacantes

KENSAI identifica cada instancia de Apache Tomcat en su entorno y comprueba si está afectada por CVE-2025-24813 y otras vulnerabilidades críticas de servidores de aplicaciones Java.

Buscar vulnerabilidades de Tomcat →

Artículos relacionados

FortiClient EMS bajo ataque activo, la Comisión Europea sufre una vulneración CVE-2025-21418: vulnerabilidad de día cero de escalada de privilegios en Windows AFD.sys Redirigiendo...