Blog

Los codificadores conquistan la seguridad: serie Share & Learn - XXE Injection

August 1, 2019

El ataque XML External Entity Injection, a veces abreviado simplemente como inyección XXE, es relativamente nuevo en comparación con algunas de las vulnerabilidades clásicas que siguen circulando años después de su inicio. Sin embargo, en la actualidad es extremadamente popular entre las comunidades de hackers, y lo es aún más a medida que acumula éxitos.

De hecho, OWASP ahora incluye la inyección XXE como una de las diez principales vulnerabilidades que los sitios deben vigilar y de las que deben defenderse activamente. Pero no te preocupes, la inyección XXE no es más potente que otros exploits que se utilizan en los ciberataques. Es solo que es un poco más nuevo y un poco menos entendido. Se puede prevenir y, de hecho, detener por completo.

En este episodio aprenderemos:

  • Cómo usan los atacantes las inyecciones XXE
  • Por qué la inyección XXE es peligrosa
  • Técnicas que pueden prevenir esta vulnerabilidad.

¿Cómo activan los atacantes una inyección XXE?

La vulnerabilidad de inyección XXE puede producirse cuando un usuario malintencionado tiene la posibilidad de enviar código XML. Utilizan esta capacidad para crear una referencia a una entidad externa. La referencia externa y el código están diseñados para eludir un analizador XML con la configuración predeterminada o uno con una configuración poco definida.

El atacante aprovecha el hecho de que el estándar XML define el concepto de entidad como una unidad de almacenamiento de algún tipo, pero ese almacenamiento puede ser externo o interno. Si se usa correctamente, puede permitir que los procesadores XML accedan a recursos remotos. La mayoría de las veces, los atacantes utilizan esta capacidad para investigar la estructura interna de un sitio web, lanzar un ataque de denegación de servicio mediante la activación de grandes procesos del sistema que intentan acceder a recursos remotos o incluso volcar datos de un servidor local a uno remoto que ellos controlan, lo que la convierte en una buena técnica para filtrar datos importantes, como contraseñas o información personal, contenidos en la base de datos XML.

El código real implicado en el ataque suele ser bastante simplista y se limita a explotar la funcionalidad de la entidad. Por ejemplo, esto podría permitir a un pirata informático acceder al archivo de contraseñas maestras:

<!

¿Por qué es peligrosa la inyección XXE?

Hay algunas razones por las que los ataques con inyección de XXE son tan peligrosos y también frecuentes. Por un lado, es una vulnerabilidad menos conocida en este momento. Y los beneficios que un atacante puede obtener al explotarla son considerables. Por un lado, puede permitir a los atacantes persistentes mapear lentamente todas las rutas de una red interna o incluso escanear los puertos. Aunque esto puede llevar bastante tiempo, es casi imposible que las defensas activas de la red objetivo descubran la actividad de un pirata informático, ya que lo único que hacen es enviar código XML a un servidor que está siendo borrado por un analizador XML de confianza.

Una vez mapeados, los atacantes pueden usar las mismas técnicas de inyección XXE para capturar los archivos que necesiten, ya sea robando información directamente o comprometiendo las credenciales de usuario válidas y usándolas para ataques secundarios. Por último, los atacantes que solo quieren hacer ruido y ser malintencionados pueden hacer cosas como lanzar ataques de denegación de servicio y ordenar a la aplicación que intente acceder a recursos distantes diseñados para atascar el sistema.

Eliminación de la vulnerabilidad de la inyección XXE

Debido al rápido aumento de los ataques de inyección XXE, muchos analizadores XML están empezando a deshabilitar las entidades externas, a veces denominadas DTD, por completo de forma predeterminada. Para ellos, la clave es simplemente no habilitar esa funcionalidad.

Pero incluso los analizadores que permiten DTD pueden tener esa funcionalidad deshabilitada. En general, se necesitará una sentencia como la siguiente para bloquearlo por completo, pero consulte la documentación de su marco local para obtener el código exacto que necesita.

Factory.setFeature (» http://apache.org/xml/features/disallow-doctype-decl «, verdadero);

Siguiendo los principios de seguridad, todas las entradas de los usuarios deben desinfectarse y validarse mediante filtros para toda la aplicación. No olvides incluir los parámetros GET y POST, los encabezados HTTP y las cookies. También puedes crear una lista blanca de comandos y DTD específicos que quieras que procese el analizador, y no permitir todo lo demás.

Si bien las listas blancas y el filtrado funcionan, debido al creciente número de ataques de inyección XXE, se sigue recomendando deshabilitar por completo la compatibilidad con DTD si la funcionalidad no es necesaria.

Más información sobre las inyecciones XXE

Para leer más, puede echar un vistazo a lo que dice OWASP sobre Ataques por inyección XXE. También puedes poner a prueba tus nuevos conocimientos defensivos con el demo gratuita de la plataforma Secure Code Warrior, que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para obtener más información sobre cómo derrotar esta vulnerabilidad y la galería de otras amenazas de los delincuentes, visita la Blog de Secure Code Warrior.

Share on social
Lema

Govern AI-driven development before it ships

Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.

book a demo
book a demo
Lema

Explore more blogs

Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

One Culture of Security: How Sage built their security champions program with agile secure code learning

Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Post-Quantum Cryptography: Quantum Computers Will Break Today’s Encryption – Are You Ready?

Post-quantum cryptography (PQC) is critical for protecting data from quantum computing threats. Learn how “harvest now, decrypt later” exposes risk and how developers can prepare for quantum-safe security.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Enabler 2: Senior Leadership Sponsorship

Explore Enabler 2: Senior Leadership Sponsorship. Learn why active buy-in from the CIO, CTO, and CISO is vital to drive developer adoption and program credibility.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI

While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

Book a demo