¿Qué es la inyección de entidades externas XML (XXE)?

¿Qué es la inyección de entidades externas XML (XXE)?

Escrito por: Monica Burgess
Publicado: 3/10/2025

mujer trabajando en una laptop


La inyección de entidades externas XML (XXE) es una vulnerabilidad de ciberseguridad que permite a los atacantes explotar analizadores sintácticos de XML para acceder a datos sensibles o manipularlos. Estos ataques ocurren cuando se procesa una entrada XML no confiable que contiene referencias a entidades externas.

Si eso suena un poco complicado, no te preocupes, vamos a explicarlo paso a paso. En esencia, XML es un formato que se usa para almacenar y transferir datos. Cuando un servidor o una aplicación procesa XML de forma incorrecta, puede convertirse en una puerta trasera para que actores maliciosos se infiltren, roben datos o causen estragos.

¿Cómo funciona XXE?

Imagina que organizas una comida compartida y le pides a cada persona que traiga un plato. Pero alguien se cuela, fingiendo ser un invitado, solo para llevarse toda la comida y romper tu refrigerador al salir. XXE es como este colado astuto en la fiesta.

Cuando alguien envía un archivo XML a una aplicación, esta tiene que abrirlo y procesarlo. Si el analizador sintáctico de XML está mal configurado, podría permitir que ese archivo incluya comandos o referencias a archivos externos, incluso archivos que el servidor no debía compartir.

Por ejemplo, un atacante podría crear una solicitud XML como esta:

``

foo[

xxeSYSTEM"file:///etc/passwd">]>

&xxe;

``


Cuando el procesador de XML ve la parte &xxe;, dice: "Claro, voy a buscar ese archivo", y así, sin más, el atacante obtiene acceso a archivos internos sensibles del sistema.

¿Por qué es peligroso XXE?

Un ataque XXE puede causar todo tipo de problemas, como:

  • Robo de datos: los atacantes pueden obtener información sensible almacenada en el servidor.

  • Denegación de servicio (DoS): al sobrecargar el sistema con cargas útiles XML masivas, los atacantes pueden bloquearlo.

  • Compromiso del servidor: si los atacantes obtienen acceso a recursos restringidos, podrían vulnerar todo el sistema.

Escenario práctico

Imagina esto: una empresa de salud usa un formulario en línea para que los pacientes suban datos médicos. Un cibercriminal sube un archivo XML malicioso que apunta a archivos del servidor que contienen los registros privados de otros pacientes. Si ese analizador sintáctico de XML no está asegurado, el atacante ahora tiene acceso no autorizado a información sensible.

Da miedo, ¿verdad? Por eso no se pueden ignorar las vulnerabilidades XXE.

¿Cómo puedes prevenir la inyección de entidades externas XML (XXE)?

¿Cómo puedes prevenir la inyección de entidades externas XML (XXE)?

Por suerte, evitar la inyección de entidades externas XML no es tan complicado. Aquí tienes algunos pasos para proteger tus sistemas:

  • Deshabilita las entidades externas Configura tus analizadores sintácticos y bibliotecas XML para que no procesen entidades externas. La mayoría de los analizadores sintácticos modernos, como los de .NET, Python y Java, te permiten desactivar esta función.

  • Usa un formato más seguro Evita usar XML cuando no sea necesario. Alternativas como JSON no admiten entidades externas, lo que las hace menos riesgosas.

  • Valida las entradas La validación de entradas evita que datos XML sospechosos entren a tu sistema. Rechaza cualquier dato que parezca incluso un poco sospechoso.

  • Mantén los analizadores sintácticos actualizados Un analizador sintáctico XML desactualizado es como dejar la puerta principal sin seguro. Instala siempre las actualizaciones y los parches.

  • Realiza auditorías de seguridad Escanea tus aplicaciones con regularidad en busca de vulnerabilidades de inyección de entidades externas XML, usando herramientas como análisis de código estático o pruebas de penetración.

Reflexiones finales

La inyección de entidades externas XML puede sonar como un problema poco común, pero es un riesgo real que podría provocar filtraciones de datos o algo peor si se deja sin control. Si sigues los pasos anteriores, puedes mantener tus sistemas protegidos y tus datos resguardados.

No dejes la puerta abierta para invitados no deseados. Ajusta tu configuración, revisa bien tus defensas y mantén a esos actores maliciosos fuera.

Preguntas frecuentes

Una aplicación procesa un archivo XML proporcionado por un hacker. El archivo XML hace referencia a un archivo externo (como credenciales del sistema). Si está mal protegida, la aplicación podría exponer datos sensibles como contraseñas.

Deshabilita el procesamiento de entidades externas en la configuración de tu analizador sintáctico de XML. Usar bibliotecas modernas y seguras para manejar XML también reduce significativamente los riesgos.

Por lo general, ocurren debido a herramientas de procesamiento de XML desactualizadas o configuraciones mal hechas en las aplicaciones, lo que las deja expuestas a referencias de entidades maliciosas.

Los atacantes podrían robar datos sensibles, comprometer la integridad del sistema o incluso tomar el control total de la aplicación afectada.

Detección: las vulnerabilidades de inyección de entidades externas XML (XXE) se encuentran tanto mediante pruebas de penetración manuales como mediante análisis automatizado.

Las herramientas de pruebas dinámicas de seguridad de las aplicaciones (DAST) envían payloads XML manipulados a los endpoints de la aplicación y revisan si hay callbacks fuera de banda o divulgación directa en la respuesta.

Las herramientas de pruebas estáticas de seguridad de aplicaciones (SAST) analizan el código fuente en busca de configuraciones del analizador sintáctico XML que habiliten el procesamiento de entidades externas.

La detección de XXE fuera de banda mediante callbacks de DNS (con herramientas como Burp Collaborator o interactsh) detecta los casos en los que la aplicación no refleja los datos en las respuestas; el atacante detecta el procesamiento exitoso de entidades mediante callbacks de DNS o HTTP hacia un servidor externo que controla.

Remediación: la solución es sencilla en principio: deshabilitar el procesamiento de entidades externas en el analizador sintáctico XML. En la práctica, la solución depende del lenguaje y la biblioteca: en Java (JAXP), configura `XMLConstants.FEATURESECUREPROCESSING` como true; en PHP, usa `libxmldisableentityloader(true)` (obsoleto desde PHP 8.0, ya que cambió el valor predeterminado); en Python (lxml), usa `resolveentities=False`. Cuando XML no es un requisito del negocio, cambiar a JSON elimina por completo la vulnerabilidad, ya que JSON no tiene un equivalente de expansión de DTD o entidades.

Para los equipos de seguridad que crean programas de capacitación para desarrolladores, XXE es un excelente caso de estudio: es una clase de vulnerabilidad que aparece por completo debido a una función XML heredada y habilitada de forma predeterminada que casi ninguna aplicación moderna necesita. Deshabilitarla es un cambio de configuración de una sola línea y sin costo funcional.

Recursos adicionales

Más información sobre ¿Qué es la gestión de la postura de seguridad de las aplicaciones (ASPM)?
¿Qué es la gestión de la postura de seguridad de las aplicaciones (ASPM)?
Ciberseguridad 101

Descubre cómo la ASPM da visibilidad de seguridad continua a lo largo del ciclo de vida del desarrollo de software, ayudando a las organizaciones a priorizar riesgos y agilizar la remediación.

Más información sobre ¿Qué es Google Dorking? Cómo los hackers usan los motores de búsqueda para el reconocimiento
¿Qué es Google Dorking? Cómo los hackers usan los motores de búsqueda para el reconocimiento
Ciberseguridad 101

Aprende qué es Google Dorking, cómo los hackers usan operadores de búsqueda avanzados para encontrar información sensible, y los pasos para proteger tu negocio de este riesgo de ciberseguridad.

Más información sobre Qué es un LAN ID y su importancia en la ciberseguridad
Qué es un LAN ID y su importancia en la ciberseguridad
Ciberseguridad 101

Descubre qué es un LAN ID, su propósito en la autenticación de red y cómo fortalece la ciberseguridad en redes locales.

Protege lo que importa

Protege endpoints, correo electrónico y empleados con el poder de nuestro SOC 24/7. Prueba Huntress gratis y despliega en minutos para empezar a combatir las amenazas.
Prueba Huntress gratis