¿Qué son los ataques XXE? TIC Defense te dice cómo prevenirlos
Los ataques de inyección de entidades externas en XML, comúnmente llamados como ataques XXE, constituyen una de las vulnerabilidades que prevalecen más en aplicaciones web, APIs y microservicios. Aunque no tienen la misma notoriedad que los ataques de inyección SQL o XSS, las vulnerabilidades XXE están bien documentadas en el ranking OWASP Top 10.
La causa principal de que esta vulnerabilidad se convierta en ataque, se encuentra en una configuración inadecuada de los endpoints del servidor, los cuales permiten la entrada de XML por parte de clientes no confiables. En especial, cuando el cliente tiene la capacidad de proporcionar una Definición de Tipo de Documento o DRD personalizada, los atacantes pueden explotar esta flexibilidad para enviar cargas XML manipuladas.
Estos ataques permiten extraer información, realizar falsificaciones de peticiones del lado del servidor SSRF o llevar a cabo ataques de denegación de servicio DoS. A menudo, las vulnerabilidades se presentan como dependencias ocultas en el código de terceros, utilizado en el desarrollo de la aplicación.
Igualmente, las vulnerabilidades de tipo XXE impactan a los servicios que usan XML como formato de intercambio de datos en lugar del clásico HTML, legible por humanos. Estas fallas ocurren cuando un servicio que procesa XML acepta una definición externa del mensaje XML. Esto permite una gran flexibilidad entre emisor y receptor, para acordar nuevos formatos de mensajes en tiempo real, mediante la DTD externa. Dicho mecanismo está diseñado para ser empleado solo en entornos donde ambas partes confían entre sí.
No obstante, si se permite que un cliente no confiable proporcione su propia DTD personalizada, los atacantes pueden aprovechar esa flexibilidad y desarrollar peticiones maliciosas que comprometan los controles de seguridad del servidor.
Esto puede desencadenar violaciones de seguridad graves, tales como problemas de confidencialidad, como accesos no autorizados al sistema de archivos del servidor. Además, pueden aparecer problemas de integridad, mediante la ejecución de código malicioso inyectado y problemas de disponibilidad, como la generación de ataques DoS, incluyendo variantes.
La creciente popularidad del XML como formato de comunicación ha provocado un incremento en el impacto de estas vulnerabilidades. Una búsqueda simple del término XXE en la base de datos Common Vulnerabilities and Exposures o CVE, puede arrojar más de 500 entradas relacionadas con este tipo de amenaza.
Del mismo modo, uno de los mayores desafíos es que los desarrolladores no siempre son conscientes de que sus aplicaciones incluyen funciones para procesar XML. En múltiples casos, las vulnerabilidades XXE se encuentran ocultas en dependencias externas de código de terceros, como marcos de desarrollo web o bibliotecas internas.
Dichas dependencias pueden encontrarse profundamente anidadas en la jerarquía del código, lo que complica su identificación y mitigación manual. Por ello, la prevención de los ataques XXE requiere de la configuración adecuada de los analizadores XML para que no acepten DTD personalizadas.
En la mayoría de los casos, las aplicaciones no necesitan utilizar una DTD personalizada, por lo que la pérdida de funcionalidad al deshabilitar esta opción es mínima. No obstante, la dificultad se presenta en que cada analizador XML, en cada lenguaje de programación, tiene una forma particular de establecer esta configuración.
Si un proyecto incluye múltiples analizadores, todos deben estar configurados de forma manual y adecuada para prevenir cualquier inconveniente con intrusiones no autorizadas.