Coders Conquer Security: Share & Learn Series - Inyección XXE
El ataque XML External Entity Injection, a veces simplemente abreviado como inyección XXE, es relativamente nuevo en comparación con algunas de las vulnerabilidades clásicas que siguen dando vueltas años después de su creación. Pero es extremadamente popular entre las comunidades de hackers en este momento, y crece aún más a medida que acumula éxitos.
De hecho, OWASP incluye ahora la inyección XXE como una de las diez principales vulnerabilidades que los sitios deben vigilar y contra las que deben defenderse activamente. Pero no te preocupes, la inyección XXE no es más poderosa que otros exploits que se despliegan en los ciberataques. Simplemente es un poco más nuevo y un poco menos conocido. Se puede prevenir y, de hecho, detener por completo.
En este episodio aprenderemos:
- Cómo utilizan los atacantes las inyecciones XXE
- Por qué es peligrosa la inyección de XXE
- Técnicas que pueden evitar esta vulnerabilidad.
¿Cómo se desencadena una inyección de XXE por parte de los atacantes?
La vulnerabilidad de inyección XXE puede ocurrir cuando un usuario malicioso tiene la capacidad 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 pasar por un analizador XML con la configuración por defecto, o uno con una configuración débil.
El atacante explota 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. Utilizado correctamente, puede permitir a los procesadores XML acceder a recursos remotos. La mayoría de las veces, los atacantes utilizan esta capacidad para hacer cosas como sondear la estructura interna de un sitio web, lanzar un ataque de denegación de servicio activando grandes procesos del sistema que intentan acceder a recursos remotos, o incluso volcar datos de un host local a uno remoto que controlan " por lo que es una buena técnica para exfiltrar datos importantes como contraseñas o información personal contenida en la base de datos XML.
El código real involucrado en el ataque es a menudo bastante simplista, simplemente explotando la funcionalidad de la entidad. Por ejemplo, esto podría permitir a un hacker acceder al archivo de la contraseña maestra:
<!ENTITY hackwithxxe SYSTEM file:///etc/password>
¿Por qué es peligrosa la inyección de XXE?
Hay algunas razones por las que los ataques de inyección XXE son tan peligrosos, y también frecuentes. Por un lado, es una vulnerabilidad menos conocida en este momento. Y las ganancias que puede obtener un atacante al explotarla son considerables. Por un lado, puede permitir a los atacantes persistentes mapear lentamente todas las rutas en una red interna o incluso escanear puertos. Aunque esto puede llevar bastante tiempo, no hay casi ninguna posibilidad de que la actividad de un hacker sea descubierta por las defensas activas de la red objetivo porque simplemente están enviando código XML a un servidor que está siendo limpiado por el parser XML de confianza.
Una vez mapeado, los atacantes pueden utilizar las mismas técnicas de inyección de XXE para capturar los archivos que necesiten, ya sea robando directamente la información o comprometiendo las credenciales de usuario válidas y utilizándolas para ataques secundarios. Por último, los atacantes que sólo quieren hacer ruido y ser maliciosos pueden hacer cosas como desencadenar ataques de denegación de servicio, ordenando a la aplicación que intente acceder a recursos distantes diseñados para empantanar el sistema.
Eliminación de la vulnerabilidad de 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 llamadas DTD, completamente por defecto. Para ellos, la clave es simplemente no habilitar esa funcionalidad.
Pero incluso los parsers que permiten DTDs pueden tener esa funcionalidad desactivada. En general, una declaración como la siguiente va a ser necesaria para bloquearla completamente, pero compruebe la documentación de su framework local para obtener el código exacto necesario.
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
Siguiendo los principios de seguridad, toda la entrada del usuario debe ser saneada y validada utilizando filtros a nivel de aplicación. No olvides incluir los parámetros GET y POST, las cabeceras HTTP y las cookies. También puedes crear una lista blanca de DTDs y comandos específicos que quieres que el analizador procese, y no permitir todo lo demás.
Aunque las listas blancas y el filtrado funcionan, debido al creciente número de ataques de inyección de XXE, se sigue recomendando desactivar completamente el soporte de DTD si la funcionalidad no es necesaria.
Más información sobre XXE Injections
Para más información, puede consultar lo que dice la OWASP sobre los ataques de inyección XXE. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .
El ataque XML External Entity Injection, a veces simplemente abreviado como inyección XXE, es relativamente nuevo, pero es extremadamente popular entre las comunidades de hackers en este momento, y crece aún más a medida que acumula éxitos.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónEl ataque XML External Entity Injection, a veces simplemente abreviado como inyección XXE, es relativamente nuevo en comparación con algunas de las vulnerabilidades clásicas que siguen dando vueltas años después de su creación. Pero es extremadamente popular entre las comunidades de hackers en este momento, y crece aún más a medida que acumula éxitos.
De hecho, OWASP incluye ahora la inyección XXE como una de las diez principales vulnerabilidades que los sitios deben vigilar y contra las que deben defenderse activamente. Pero no te preocupes, la inyección XXE no es más poderosa que otros exploits que se despliegan en los ciberataques. Simplemente es un poco más nuevo y un poco menos conocido. Se puede prevenir y, de hecho, detener por completo.
En este episodio aprenderemos:
- Cómo utilizan los atacantes las inyecciones XXE
- Por qué es peligrosa la inyección de XXE
- Técnicas que pueden evitar esta vulnerabilidad.
¿Cómo se desencadena una inyección de XXE por parte de los atacantes?
La vulnerabilidad de inyección XXE puede ocurrir cuando un usuario malicioso tiene la capacidad 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 pasar por un analizador XML con la configuración por defecto, o uno con una configuración débil.
El atacante explota 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. Utilizado correctamente, puede permitir a los procesadores XML acceder a recursos remotos. La mayoría de las veces, los atacantes utilizan esta capacidad para hacer cosas como sondear la estructura interna de un sitio web, lanzar un ataque de denegación de servicio activando grandes procesos del sistema que intentan acceder a recursos remotos, o incluso volcar datos de un host local a uno remoto que controlan " por lo que es una buena técnica para exfiltrar datos importantes como contraseñas o información personal contenida en la base de datos XML.
El código real involucrado en el ataque es a menudo bastante simplista, simplemente explotando la funcionalidad de la entidad. Por ejemplo, esto podría permitir a un hacker acceder al archivo de la contraseña maestra:
<!ENTITY hackwithxxe SYSTEM file:///etc/password>
¿Por qué es peligrosa la inyección de XXE?
Hay algunas razones por las que los ataques de inyección XXE son tan peligrosos, y también frecuentes. Por un lado, es una vulnerabilidad menos conocida en este momento. Y las ganancias que puede obtener un atacante al explotarla son considerables. Por un lado, puede permitir a los atacantes persistentes mapear lentamente todas las rutas en una red interna o incluso escanear puertos. Aunque esto puede llevar bastante tiempo, no hay casi ninguna posibilidad de que la actividad de un hacker sea descubierta por las defensas activas de la red objetivo porque simplemente están enviando código XML a un servidor que está siendo limpiado por el parser XML de confianza.
Una vez mapeado, los atacantes pueden utilizar las mismas técnicas de inyección de XXE para capturar los archivos que necesiten, ya sea robando directamente la información o comprometiendo las credenciales de usuario válidas y utilizándolas para ataques secundarios. Por último, los atacantes que sólo quieren hacer ruido y ser maliciosos pueden hacer cosas como desencadenar ataques de denegación de servicio, ordenando a la aplicación que intente acceder a recursos distantes diseñados para empantanar el sistema.
Eliminación de la vulnerabilidad de 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 llamadas DTD, completamente por defecto. Para ellos, la clave es simplemente no habilitar esa funcionalidad.
Pero incluso los parsers que permiten DTDs pueden tener esa funcionalidad desactivada. En general, una declaración como la siguiente va a ser necesaria para bloquearla completamente, pero compruebe la documentación de su framework local para obtener el código exacto necesario.
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
Siguiendo los principios de seguridad, toda la entrada del usuario debe ser saneada y validada utilizando filtros a nivel de aplicación. No olvides incluir los parámetros GET y POST, las cabeceras HTTP y las cookies. También puedes crear una lista blanca de DTDs y comandos específicos que quieres que el analizador procese, y no permitir todo lo demás.
Aunque las listas blancas y el filtrado funcionan, debido al creciente número de ataques de inyección de XXE, se sigue recomendando desactivar completamente el soporte de DTD si la funcionalidad no es necesaria.
Más información sobre XXE Injections
Para más información, puede consultar lo que dice la OWASP sobre los ataques de inyección XXE. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .
El ataque XML External Entity Injection, a veces simplemente abreviado como inyección XXE, es relativamente nuevo en comparación con algunas de las vulnerabilidades clásicas que siguen dando vueltas años después de su creación. Pero es extremadamente popular entre las comunidades de hackers en este momento, y crece aún más a medida que acumula éxitos.
De hecho, OWASP incluye ahora la inyección XXE como una de las diez principales vulnerabilidades que los sitios deben vigilar y contra las que deben defenderse activamente. Pero no te preocupes, la inyección XXE no es más poderosa que otros exploits que se despliegan en los ciberataques. Simplemente es un poco más nuevo y un poco menos conocido. Se puede prevenir y, de hecho, detener por completo.
En este episodio aprenderemos:
- Cómo utilizan los atacantes las inyecciones XXE
- Por qué es peligrosa la inyección de XXE
- Técnicas que pueden evitar esta vulnerabilidad.
¿Cómo se desencadena una inyección de XXE por parte de los atacantes?
La vulnerabilidad de inyección XXE puede ocurrir cuando un usuario malicioso tiene la capacidad 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 pasar por un analizador XML con la configuración por defecto, o uno con una configuración débil.
El atacante explota 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. Utilizado correctamente, puede permitir a los procesadores XML acceder a recursos remotos. La mayoría de las veces, los atacantes utilizan esta capacidad para hacer cosas como sondear la estructura interna de un sitio web, lanzar un ataque de denegación de servicio activando grandes procesos del sistema que intentan acceder a recursos remotos, o incluso volcar datos de un host local a uno remoto que controlan " por lo que es una buena técnica para exfiltrar datos importantes como contraseñas o información personal contenida en la base de datos XML.
El código real involucrado en el ataque es a menudo bastante simplista, simplemente explotando la funcionalidad de la entidad. Por ejemplo, esto podría permitir a un hacker acceder al archivo de la contraseña maestra:
<!ENTITY hackwithxxe SYSTEM file:///etc/password>
¿Por qué es peligrosa la inyección de XXE?
Hay algunas razones por las que los ataques de inyección XXE son tan peligrosos, y también frecuentes. Por un lado, es una vulnerabilidad menos conocida en este momento. Y las ganancias que puede obtener un atacante al explotarla son considerables. Por un lado, puede permitir a los atacantes persistentes mapear lentamente todas las rutas en una red interna o incluso escanear puertos. Aunque esto puede llevar bastante tiempo, no hay casi ninguna posibilidad de que la actividad de un hacker sea descubierta por las defensas activas de la red objetivo porque simplemente están enviando código XML a un servidor que está siendo limpiado por el parser XML de confianza.
Una vez mapeado, los atacantes pueden utilizar las mismas técnicas de inyección de XXE para capturar los archivos que necesiten, ya sea robando directamente la información o comprometiendo las credenciales de usuario válidas y utilizándolas para ataques secundarios. Por último, los atacantes que sólo quieren hacer ruido y ser maliciosos pueden hacer cosas como desencadenar ataques de denegación de servicio, ordenando a la aplicación que intente acceder a recursos distantes diseñados para empantanar el sistema.
Eliminación de la vulnerabilidad de 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 llamadas DTD, completamente por defecto. Para ellos, la clave es simplemente no habilitar esa funcionalidad.
Pero incluso los parsers que permiten DTDs pueden tener esa funcionalidad desactivada. En general, una declaración como la siguiente va a ser necesaria para bloquearla completamente, pero compruebe la documentación de su framework local para obtener el código exacto necesario.
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
Siguiendo los principios de seguridad, toda la entrada del usuario debe ser saneada y validada utilizando filtros a nivel de aplicación. No olvides incluir los parámetros GET y POST, las cabeceras HTTP y las cookies. También puedes crear una lista blanca de DTDs y comandos específicos que quieres que el analizador procese, y no permitir todo lo demás.
Aunque las listas blancas y el filtrado funcionan, debido al creciente número de ataques de inyección de XXE, se sigue recomendando desactivar completamente el soporte de DTD si la funcionalidad no es necesaria.
Más información sobre XXE Injections
Para más información, puede consultar lo que dice la OWASP sobre los ataques de inyección XXE. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .
Haga clic en el siguiente enlace y descargue el PDF de este recurso.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Ver el informeReservar una demostraciónEl ataque XML External Entity Injection, a veces simplemente abreviado como inyección XXE, es relativamente nuevo en comparación con algunas de las vulnerabilidades clásicas que siguen dando vueltas años después de su creación. Pero es extremadamente popular entre las comunidades de hackers en este momento, y crece aún más a medida que acumula éxitos.
De hecho, OWASP incluye ahora la inyección XXE como una de las diez principales vulnerabilidades que los sitios deben vigilar y contra las que deben defenderse activamente. Pero no te preocupes, la inyección XXE no es más poderosa que otros exploits que se despliegan en los ciberataques. Simplemente es un poco más nuevo y un poco menos conocido. Se puede prevenir y, de hecho, detener por completo.
En este episodio aprenderemos:
- Cómo utilizan los atacantes las inyecciones XXE
- Por qué es peligrosa la inyección de XXE
- Técnicas que pueden evitar esta vulnerabilidad.
¿Cómo se desencadena una inyección de XXE por parte de los atacantes?
La vulnerabilidad de inyección XXE puede ocurrir cuando un usuario malicioso tiene la capacidad 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 pasar por un analizador XML con la configuración por defecto, o uno con una configuración débil.
El atacante explota 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. Utilizado correctamente, puede permitir a los procesadores XML acceder a recursos remotos. La mayoría de las veces, los atacantes utilizan esta capacidad para hacer cosas como sondear la estructura interna de un sitio web, lanzar un ataque de denegación de servicio activando grandes procesos del sistema que intentan acceder a recursos remotos, o incluso volcar datos de un host local a uno remoto que controlan " por lo que es una buena técnica para exfiltrar datos importantes como contraseñas o información personal contenida en la base de datos XML.
El código real involucrado en el ataque es a menudo bastante simplista, simplemente explotando la funcionalidad de la entidad. Por ejemplo, esto podría permitir a un hacker acceder al archivo de la contraseña maestra:
<!ENTITY hackwithxxe SYSTEM file:///etc/password>
¿Por qué es peligrosa la inyección de XXE?
Hay algunas razones por las que los ataques de inyección XXE son tan peligrosos, y también frecuentes. Por un lado, es una vulnerabilidad menos conocida en este momento. Y las ganancias que puede obtener un atacante al explotarla son considerables. Por un lado, puede permitir a los atacantes persistentes mapear lentamente todas las rutas en una red interna o incluso escanear puertos. Aunque esto puede llevar bastante tiempo, no hay casi ninguna posibilidad de que la actividad de un hacker sea descubierta por las defensas activas de la red objetivo porque simplemente están enviando código XML a un servidor que está siendo limpiado por el parser XML de confianza.
Una vez mapeado, los atacantes pueden utilizar las mismas técnicas de inyección de XXE para capturar los archivos que necesiten, ya sea robando directamente la información o comprometiendo las credenciales de usuario válidas y utilizándolas para ataques secundarios. Por último, los atacantes que sólo quieren hacer ruido y ser maliciosos pueden hacer cosas como desencadenar ataques de denegación de servicio, ordenando a la aplicación que intente acceder a recursos distantes diseñados para empantanar el sistema.
Eliminación de la vulnerabilidad de 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 llamadas DTD, completamente por defecto. Para ellos, la clave es simplemente no habilitar esa funcionalidad.
Pero incluso los parsers que permiten DTDs pueden tener esa funcionalidad desactivada. En general, una declaración como la siguiente va a ser necesaria para bloquearla completamente, pero compruebe la documentación de su framework local para obtener el código exacto necesario.
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
Siguiendo los principios de seguridad, toda la entrada del usuario debe ser saneada y validada utilizando filtros a nivel de aplicación. No olvides incluir los parámetros GET y POST, las cabeceras HTTP y las cookies. También puedes crear una lista blanca de DTDs y comandos específicos que quieres que el analizador procese, y no permitir todo lo demás.
Aunque las listas blancas y el filtrado funcionan, debido al creciente número de ataques de inyección de XXE, se sigue recomendando desactivar completamente el soporte de DTD si la funcionalidad no es necesaria.
Más información sobre XXE Injections
Para más información, puede consultar lo que dice la OWASP sobre los ataques de inyección XXE. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .
Índice
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónDescargarRecursos para empezar
Evaluación comparativa de las competencias en materia de seguridad: optimización del diseño seguro en la empresa
El movimiento Secure-by-Design es el futuro del desarrollo de software seguro. Conozca los elementos clave que las empresas deben tener en cuenta cuando piensan en una iniciativa Secure-by-Design.
DigitalOcean reduce su deuda de seguridad con Secure Code Warrior
El uso por parte de DigitalOcean de la formación Secure Code Warrior ha reducido significativamente la deuda de seguridad, permitiendo a los equipos centrarse más en la innovación y la productividad. La mejora de la seguridad ha reforzado la calidad de sus productos y su ventaja competitiva. De cara al futuro, SCW Trust Score les ayudará a seguir mejorando las prácticas de seguridad y a continuar impulsando la innovación.
Recursos para empezar
La puntuación de confianza revela el valor de las iniciativas de mejora de la seguridad mediante el diseño
Nuestra investigación ha demostrado que la formación en código seguro funciona. Trust Score, que utiliza un algoritmo basado en más de 20 millones de puntos de datos de aprendizaje procedentes del trabajo de más de 250 000 alumnos en más de 600 organizaciones, revela su eficacia a la hora de reducir las vulnerabilidades y cómo hacer que la iniciativa sea aún más eficaz.
Seguridad reactiva frente a seguridad preventiva: Prevenir es mejor que curar
La idea de introducir la seguridad preventiva en el código y los sistemas heredados al mismo tiempo que en las aplicaciones más recientes puede parecer desalentadora, pero un planteamiento basado en el diseño seguro, aplicado mediante la mejora de las competencias de los desarrolladores, puede aplicar las mejores prácticas de seguridad a esos sistemas. Es la mejor oportunidad que tienen muchas organizaciones de mejorar su seguridad.
Ventajas de la evaluación comparativa de las competencias de seguridad de los desarrolladores
La creciente atención que se presta al código seguro y a los principios del diseño seguro exige que los desarrolladores reciban formación en ciberseguridad desde el principio del proceso de desarrollo de software, con herramientas como Secure Code Warrior's Trust Score, que ayudan a medir y mejorar sus progresos.
Impulsando iniciativas de seguridad por diseño para empresas con éxito significativo
Nuestro último documento de investigación, Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise, es el resultado de un análisis profundo de iniciativas reales de Secure-by-Design a nivel empresarial y de la derivación de enfoques de mejores prácticas basados en hallazgos basados en datos.