Ataque de inyección XXE: qué es y cómo prevenirlo

(Para Francesco Rugolo)
29/04/24

Cuando se habla de inyección XXE Nos referimos a una vulnerabilidad web muy extendida que permite a un pirata informático apoderarse de datos de nuestros servidores o realizar una llamada "escalada" del ataque que podría comprometer el servidor atacado y otras infraestructuras conectadas a él.

Primero que nada, veamos qué significa XXEi. Inyección de entidad externa XML. Sin embargo, para explicar cómo funciona debemos saber qué es XML, un acrónimo de Lenguaje de marcado extensible.

En definitiva, en informática, XML es un lenguaje utilizado para definir elementos y su significado dentro de un texto. XML es extensible, es decir, permite definir etiquetas personalizadas, etiquetas que organizan y definen lo que se encuentra en nuestro documento.

Dentro del documento XML, un objeto se puede representar a través de una "entidad" en lugar de utilizar el objeto en sí.

En el archivo DTD (definición de tipo de documento) se encuentran todas las especificaciones que definen los tipos de datos que puede contener nuestro documento XML, los valores que se le pueden asignar y más.

XML permite la creación de entidades o la posibilidad de importar entidades externas, y aquí estamos en la definición de entidades externas.

Le entidades externas son entidades no definidas por nuestra DTD pero completamente externas a ella y se especifican a través de una URL desde la que se cargan en la aplicación.

Ahora no es difícil comprender los riesgos que este procedimiento podría suponer para nuestros sistemas.

Los ataques más comunes que aprovechan esta vulnerabilidad tienen como objetivo robar datos y contraseñas de nuestras bases de datos pero el escenario más grave se produce cuando se utiliza esta vulnerabilidad para llevar a cabo un ataque de falsificación de solicitudes del lado del servidor o SSRF.

SSRF es un ataque en el que el pirata informático puede utilizar una aplicación que pertenece al servidor para iniciar solicitudes a cualquier dirección web y comprometer inicialmente el servidor atacado y posteriormente cualquier infraestructura conectada a él y potencialmente vulnerable.

El XXEi se dirige principalmente a aplicaciones que realizan la Analizando (es decir, un análisis de componentes) de XML que tienen una configuración débil, aplicaciones que aceptan XML de fuentes no confiables y aplicaciones que no desactivan el uso de entidades externas.

Para defenderse de la mayoría de los ataques existen toda una serie de y las mejores prácticas entre los cuales podemos mencionar:

- el procedimiento lista blanca a nivel de servidor, cuyo objetivo es bloquear cualquier entrada que no cumpla con nuestros estándares de seguridad;

- realizar una validación de los datos XML;

- bloquear la opción obvia pero a menudo no utilizada de los analizadores XML para aceptar entidades externas.

Con estas sencillas medidas es posible prevenir un gran porcentaje de ataques de tipo XXE.

Para encontrar vulnerabilidades de este tipo podemos en cualquier caso utilizar una herramienta muy útil y potente, llamada Suite Burp, un software capaz de mapear las vulnerabilidades de una aplicación web y analizar sus características.

En cualquier caso, siempre es útil recordar que la mayoría de ataques se deben a la presencia de vulnerabilidades en el software, atribuibles a errores cometidos por programadores que no siempre están adecuadamente preparados para un desarrollo seguro, por lo que cada vez escuchamos más a menudo sobre formación en DevOps y DevSecOps, conceptos muy ligados al desarrollo de software y la seguridad.

Sitografía:

https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Procesamiento

https://portswigger.net/burp/documentation

https://www.redhat.com/it/topics/devops

https://www.pluribus-one.it/it/servizi/formazione/offerta-formativa-2

https://owasp.org/www-project-devsecops-guideline

https://abu-talha.medium.com/xml-external-entity-xxe-attacks-understandi... (sitio desde donde se tomó la imagen)