Portada » Home » Buenas prácticas de desarrollo seguro: A4 Entidades externas XML

Buenas prácticas de desarrollo seguro: A4 Entidades externas XML

Esta semana analizamos el cuarto punto del OWASP TOP 10: Entidades externas XML. Estas entidades pueden significar una amenaza, ya que se pueden utilizar para revelar archivos, escanear puertos de LAN, realizar ataques DoS, entre otros. 

El XML es un metalenguaje, similar a HTML, de ‘marcado de propósito general’, eso quiere decir que no está predefinido, por lo que las etiquetas las construyes tu. Documentos de texto, páginas web, bases de datos, son algunos campos de acción del sistema XML. Un atacante podría explotar procesadores de lenguaje XML si carga o modifica un documento XML con contenido hostil, explotando código vulnerable.

Por lo general los procesadores XML que están mal configurados, o que simplemente son antiguos, evalúan referencias a entidades externas en documentos XML:

Las entidades externas pueden utilizarse para revelar archivos internos mediante la URI, o archivos internos en servidores no actualizados, escanear puertos LAN, ejecutar código de forma remota y realizar ataques de denegación de servicio (DoS).

Muchos procesadores XML antiguos (vienen predeterminados así) permiten la especificación de una entidad externa, una URI que se referencia y evalúa durante el procesamiento XML. Las herramientas SAST pueden descubrir estos problemas inspeccionando las dependencias y la configuración, pero requieren algunos pasos extras que son manuales, pero que sirven para detectar y explotar estos problemas.

¿Qué puede hacer un atacante con esto?

Básicamente pueden extraer datos, ejecutar una solicitud remota desde el servidor, escanear sistemas internos, realizar un ataque de denegación de servicio, por nombrar algunos ataques.

Owasp entrega este ejemplo, donde se muestra un atacante intentando obtener datos de un servidor:

Documento Owasp Top 10

Por ende, es necesario que sepas que tu aplicación/sistema basado en XML puede ser vulnerable si: 

  • La aplicación acepta XML directamente, carga XML desde fuentes no confiables o inserta datos no confiables en documentos XML.
  • Cualquiera de los procesadores XML utilizados en la aplicación o los servicios web basados en SOAP, tienen habilitadas las definiciones de tipo de documento (DTDs).
  • La aplicación utiliza SAML para el procesamiento de identidades dentro de la seguridad federada o para propósitos de Single Sign-On (SSO). SAML utiliza XML para garantizar la identidad de los usuarios y puede ser vulnerable.
  • La aplicación utiliza SOAP en una versión previa a la 1.2 y, si las entidades XML son pasadas a la infraestructura SOAP, probablemente sea susceptible a ataques XXE.
  • Ser vulnerable a ataques XXE significa que probablemente la aplicación también es vulnerable a ataques de denegación de servicio, incluyendo el ataque Billion Laughs.

¿Cómo prevenir?

  • Utilice formatos de datos menos complejos como JSON y evite la serialización de datos confidenciales.
  • Actualice los procesadores y bibliotecas XML que utilice la aplicación. Utilice validadores de dependencias. Actualice SOAP a la versión 1.2 o superior.
  • Deshabilite las entidades externas de XML y procesamiento DTD en todos los analizadores sintácticos XML en su aplicación.
  • Implemente validación de entrada positiva en el servidor (“lista blanca”), filtrado y sanitización para prevenir el ingreso de datos dañinos dentro de documentos, cabeceras y nodos XML.
  • Verifique que la funcionalidad de carga de archivos XML o XSL valide el XML entrante, usando validación XSD o similar.
  • Las herramientas SAST pueden ayudar a detectar XXE en el código fuente, aunque la revisión manual de código es la mejor alternativa en aplicaciones grandes y complejas.
  • Si estos controles no son posibles, considere usar parcheo virtual, gateways de seguridad de API, o Firewalls de Aplicaciones Web (WAFs) para detectar, monitorear y bloquear ataques XXE.

 

More Reading

Post navigation