Alerta Crítica en Apache Struts 2: Vulnerabilidad de Inyección XXE Permite Robo de Datos

Published:

Se ha descubierto una vulnerabilidad crítica de inyección de entidades externas XML (XXE) en el popular framework de aplicaciones web Apache Struts 2. Esta falla, identificada como CVE-2025-68493, afecta a múltiples versiones del framework y puede permitir a atacantes remotos robar información sensible de los servidores o comprometerlos por completo.

La vulnerabilidad, calificada con una severidad «Importante» por el equipo de Apache, requiere acción inmediata por parte de desarrolladores y administradores de sistemas que utilicen esta tecnología.

🔍 ¿Qué es CVE-2025-68493 y Dónde se Encuentra?

La falla reside en el componente XWork de Apache Struts 2, que es responsable de analizar (parsear) la configuración en formato XML. Este componente no valida correctamente la entrada XML, dejando una puerta abierta para ataques de inyección XXE.

¿Qué es un ataque XXE?
Permite a un atacante inyectar referencias a entidades externas maliciosas dentro de un documento XML procesado por la aplicación. Si el analizador XML está mal configurado (como en este caso), puede ser engañado para que:

  1. Lea archivos internos del servidor (como configuraciones, credenciales de bases de datos, claves privadas).

  2. Realice solicitudes a recursos internos de la red (ataques SSRF – Server-Side Request Forgery).

  3. Consuma recursos hasta causar una denegación de servicio (DoS).

📋 Versiones Afectadas y Estado de Soporte

El impacto es amplio, afectando a series de versiones que abarcan desde las más antiguas hasta las actuales:

Rango de Versiones Afectadas Estado de Soporte Acción Requerida
Struts 2.0.0 – 2.3.37 Fin de Vida (EOL) Migración URGENTE. No recibirán parche oficial.
Struts 2.5.0 – 2.5.33 Fin de Vida (EOL) Migración URGENTE. No recibirán parche oficial.
Struts 6.0.0 – 6.1.0 Soporte Activo Actualizar a la versión 6.1.1 (ya parcheada).

💥 Impacto Potencial de la Explotación

Si un atacante explota con éxito esta vulnerabilidad, las consecuencias pueden ser graves:

Tipo de Impacto Descripción y Riesgo
Divulgación de Datos Los atacantes pueden extraer archivos de configuración, credenciales de bases de datos, secretos de aplicación y cualquier otro archivo al que el proceso del servidor tenga acceso.
Server-Side Request Forgery (SSRF) Pueden comprometer recursos internos de la red (otros servidores, APIs internas) que no son accesibles desde internet, ampliando el alcance del ataque.
Denial of Service (DoS) Mediante cargas útiles XML maliciosas, pueden consumir todos los recursos del servidor (CPU, memoria), interrumpiendo la disponibilidad de la aplicación.

🛡️ Plan de Mitigación y Corrección

1. SOLUCIÓN PERMANENTE: Aplicar el Parche (Recomendado)
Apache ha lanzado Struts 6.1.1 como la versión corregida. Esta actualización mantiene la compatibilidad hacia atrás, por lo que no debería romper aplicaciones existentes.

  • Acción: Todas las organizaciones que usen Struts 2 deben priorizar la actualización a Struts 6.1.1 de inmediato.

2. WORKAROUNDS TEMPORALES (Si NO puedes aplicar el parche de inmediato)
Para sistemas que no puedan actualizarse en el corto plazo, se pueden implementar las siguientes contramedidas temporales a nivel de configuración:

  • Configurar un SAXParserFactory personalizado:
    Establece la propiedad del sistema xwork.saxParserFactory en una clase de fábrica que deshabilite explícitamente el soporte para entidades externas. Esto requiere modificar la configuración de la aplicación.

  • Configuración a nivel de JVM (Máquina Virtual Java):
    Agrega los siguientes parámetros a la línea de comando de inicio de la JVM para deshabilitar el acceso a entidades externas de forma global:

    -Djavax.xml.accessExternalDTD="" 
    -Djavax.xml.accessExternalSchema=""
    -Djavax.xml.accessExternalStylesheet=""

⚠️ ADVERTENCIA: Estos workarounds son soluciones temporales. No reemplazan la necesidad de aplicar el parche oficial. Además, pueden afectar la funcionalidad legítima de la aplicación si esta depende de procesar DTDs o esquemas externos.

📝 Checklist de Acción Urgente para Equipos

  1. Inventario: Identifica todas las aplicaciones y servidores que utilicen Apache Struts 2 y determina sus versiones exactas.

  2. Priorización: Clasifícalas según el riesgo (¿están expuestas a internet? ¿manejan datos sensibles?).

  3. Parcheo: Comienza a actualizar a Struts 6.1.1 de forma inmediata, empezando por los sistemas más críticos.

  4. Workaround: Para sistemas que no puedan parcharse en horas/días, implementa los workarounds a nivel de JVM o aplicación como medida de contención inmediata.

  5. Monitoreo: Revisa los logs de aplicaciones y servidores en busca de intentos de inyección XML o accesos inusuales a archivos.

💎 Conclusión: Un Riesgo Inmediato y Generalizado

CVE-2025-68493 es una vulnerabilidad crítica que afecta a una base de instalaciones enorme de Apache Struts 2, un framework aún muy extendido en aplicaciones empresariales. La combinación de su facilidad de explotación (inyección XXE) y el alto impacto potencial (robo de datos, SSRF) la convierte en una amenaza de alta prioridad.

La ventana para actuar es corta. Los exploits públicos para vulnerabilidades en Struts suelen aparecer rápidamente después de su divulgación. La recomendación es clara y directa: inventariar, parchear y monitorear. No subestimes el riesgo por tratarse de versiones antiguas; son precisamente esas instalaciones heredadas las que a menudo son más vulnerables y valiosas para los atacantes.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles