Mastodon Mastodon Mastodon Mastodon

Inyección XXE [XXE]

Actualizado: · CyberSecureFox Editorial Team

La inyección XXE (entidad externa XML) es una vulnerabilidad en la que un analizador XML procesa entidades del atacante que apuntan a archivos locales o URL remotas, lo que filtra datos o hace que el servidor envíe peticiones.

Cómo funciona la inyección XXE

XML permite que una definición de tipo de documento (DTD) declare entidades: marcadores que el analizador sustituye por contenido. Una entidad externa toma ese contenido de una URI. Si un analizador acepta DTD procedentes de entradas no fiables, el atacante puede enviar algo como:

<!DOCTYPE x [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><x>&xxe;</x>

El servidor lee entonces el archivo y puede devolverlo en la respuesta. La debilidad está catalogada como CWE-611. Según el analizador y la configuración, XXE puede provocar:

  • la lectura de archivos de configuración, código fuente y credenciales, de forma parecida al recorrido de directorios;
  • falsificación de solicitudes del lado del servidor contra servicios internos y puntos de metadatos en la nube;
  • exfiltración «a ciegas» mediante peticiones DNS o HTTP fuera de banda;
  • denegación de servicio por expansión recursiva de entidades (el ataque «billion laughs») y, en casos raros, ejecución de código.

Por qué es importante

XML se esconde en muchos lugares: servicios web SOAP, mensajes SAML de inicio de sesión único, canales RSS, imágenes SVG y documentos ofimáticos como DOCX y XLSX, que son archivos ZIP con ficheros XML. Los analizadores antiguos de Java, .NET y PHP procesaban las entidades externas por defecto. XXE tuvo categoría propia (A4) en el OWASP Top 10 de 2017 y hoy forma parte de Security Misconfiguration.

Cómo prevenirla

  • Desactivar el procesamiento de DTD y la resolución de entidades externas en todos los analizadores XML.
  • Usar bibliotecas reforzadas como defusedxml de Python y mantener los analizadores actualizados.
  • Preferir formatos más sencillos como JSON cuando XML no sea necesario.
  • Validar los archivos subidos y restringir las conexiones salientes de los servidores.
Sinónimos:
entidad externa XML, XML external entity, ataque XXE, XXE injection