SCW 아이콘
영웅 배경, 구분선 없음
블로그

Los codificadores conquistan la seguridad: serie Share & Learn - Inyecciones de XML

야프 카란 싱
게시일 : 2019년 6월 20일
마지막 업데이트: 2026년 3월 6일

Los ataques de inyección de XML son pequeños exploits desagradables inventados por piratas informáticos para ayudarlos a comprometer los sistemas que alojan bases de datos XML. Esto incluye el tipo de cosas que se nos vienen a la mente cuando pensamos en las bases de datos tradicionales: almacenes detallados de información sobre cualquier tema, desde medicamentos hasta películas. Algunos almacenes de datos XML también se utilizan para comprobar si hay usuarios autorizados, por lo que si se les inyecta código XML nuevo, se pueden crear nuevos usuarios que el sistema anfitrión aceptará a partir de ese momento.

Para que un atacante pueda implementar una inyección de XML, es necesario que haya una aplicación que dependa de una base de datos XML, o al menos acceda a ella. Siempre que esto ocurra y las entradas del usuario no se examinen correctamente, se puede agregar un nuevo código XML al almacén de datos. Dependiendo de la habilidad del atacante, añadir un nuevo código XML puede causar mucho daño o incluso proporcionar acceso a toda la base de datos.

A medida que siga leyendo, es posible que descubra que la inyección de XML está estrechamente relacionada con los ataques de inyección de SQL que hemos cubierto anteriormente. Esto se debe a que, aunque se dirigen a diferentes tipos de bases de datos, son extremadamente similares. Y, afortunadamente, las soluciones también son similares. Aprender a derrotar un tipo de ataque te pondrá muy por delante del juego a la hora de prevenir el otro.

En este episodio, aprenderemos:

  • Cómo funcionan las inyecciones de XML
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos por completo.

¿Cómo activan los atacantes las inyecciones de XML?

Las inyecciones de XML se realizan correctamente siempre que un usuario no autorizado puede escribir código XML e insertarlo en una base de datos XML existente. Esto solo requiere dos cosas para funcionar: una aplicación que dependa de una base de datos XML o se conecte a ella y una ruta de datos no segura para que el atacante lance su ataque.

Las inyecciones de XML casi siempre tienen éxito si la entrada del usuario no se sanea o restringe de otro modo antes de enviarla a un servidor para su procesamiento. Esto puede permitir a los atacantes escribir su propio código, o inyectarlo, al final de su cadena de consulta normal. Si tiene éxito, esto engaña al servidor para que ejecute el código XML, lo que le permite añadir o eliminar registros, o incluso revelar una base de datos completa.

Los piratas informáticos implementan un ataque de inyección de XML añadiendo código XML a una consulta normal. Puede ser cualquier cosa, desde un campo de búsqueda hasta una página de inicio de sesión. Incluso puede incluir elementos como cookies o encabezados.

Por ejemplo, en un formulario de registro, un usuario puede agregar el siguiente código después del campo de nombre de usuario o contraseña:


<user></user>
<role>administrador</role>
<username>John_Smith Jump 783!</username> <password> Tango @12</password>

En este ejemplo, se crearía un nuevo usuario llamado John_Smith con acceso de administrador. Al menos el nuevo usuario emplea buenas reglas de densidad de contraseñas. Lástima que en realidad sean un atacante.

Los hackers no tienen por qué hacer siempre un jonrón como ese para tener éxito con las inyecciones de XML. Al manipular sus consultas y registrar los distintos mensajes de error que devuelve el servidor, es posible que puedan trazar la estructura de la base de datos XML. Y esa información se puede utilizar para mejorar otros tipos de ataques.

¿Por qué son tan peligrosas las inyecciones de XML?

El nivel de peligro que implica un ataque de inyección de XML depende de la información que se almacene en la base de datos XML objetivo o de cómo se utilice esa información. Por ejemplo, en el caso de que se utilice una base de datos XML para autenticar a los usuarios, una inyección de XML puede dar acceso al sistema a un atacante. Incluso podría permitirles convertirse en administradores de la red objetivo, lo que, por supuesto, es una situación extremadamente peligrosa.

En el caso de las inyecciones de XML aplicadas a bases de datos más tradicionales, existe el peligro de que roben esa información, de que se añadan datos incorrectos al almacén o de que se sobrescriban datos en buen estado. El código XML no es muy difícil de aprender y algunos de los comandos pueden ser extremadamente eficaces, ya que sobrescriben campos de información completos o incluso muestran el contenido de un almacén de datos.

Por lo general, nadie crea una base de datos a menos que la información almacenada en ella tenga valor. Los piratas informáticos lo saben y por eso suelen atacarlos. Si esos datos incluyen datos como información personal de empleados o clientes, ponerlos en peligro puede provocar la pérdida de reputación, consecuencias financieras, fuertes multas o incluso demandas.

Detener los ataques de inyección de XML

Las inyecciones de XML son bastante comunes debido al bajo grado de dificultad para llevarlas a cabo y a la prevalencia de las bases de datos XML. Sin embargo, estos ataques existen desde hace mucho tiempo. Como tal, hay varias soluciones irrefutables que evitarán que se ejecuten alguna vez.

Uno de los mejores métodos para detener los ataques es diseñar una aplicación que solo utilice consultas XML precompiladas. Esto limita la funcionalidad de las consultas a un subconjunto autorizado de actividades. Todo lo que venga con argumentos o comandos adicionales que no coincidan con las funciones de consulta precompiladas simplemente no se ejecutará. Si no quieres ser tan restrictivo, también puedes usar la parametrización. Esto restringe la entrada del usuario a tipos específicos de consultas y datos; por ejemplo, solo usa números enteros. Todo lo que quede fuera de esos parámetros se considera inválido y hace que la consulta falle.

También es una buena idea combinar consultas precompiladas o parametrizadas con mensajes de error personalizados. En lugar de devolver los mensajes de error descriptivos predeterminados de una consulta fallida, las aplicaciones deberían interceptar esas respuestas y sustituirlas por un mensaje más genérico. Lo ideal sería decirle al usuario por qué falló la consulta, pero no darle ninguna información sobre la base de datos en sí. Si restringe esos mensajes personalizados a unas pocas opciones, los piratas informáticos no podrán recopilar ningún reconocimiento útil de las consultas fallidas.

Las inyecciones de XML tuvieron un gran éxito cuando se desarrollaron por primera vez. Pero teniendo en cuenta cuánto tiempo pasó, hoy podemos construir fácilmente defensas que ya no se pueden romper.

Más información sobre las inyecciones de XML

Para leer más, puede echar un vistazo al OWASP artículo sobre Inyecciones de XML. También puede poner a prueba sus 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.


리소스 보기
리소스 보기

Los ataques de inyección de XML son pequeños exploits desagradables inventados por piratas informáticos para ayudarlos a comprometer los sistemas que alojan bases de datos XML. Esto incluye el tipo de cosas que se nos vienen a la mente cuando pensamos en las bases de datos tradicionales: almacenes detallados de información sobre cualquier tema, desde medicamentos hasta películas.

더 알고 싶으신가요?

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약하기
공유하기:
링크드인 브랜드사회적x 로고
저자
야프 카란 싱
게시일: 2019년 6월 20일

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

공유하기:
링크드인 브랜드사회적x 로고

Los ataques de inyección de XML son pequeños exploits desagradables inventados por piratas informáticos para ayudarlos a comprometer los sistemas que alojan bases de datos XML. Esto incluye el tipo de cosas que se nos vienen a la mente cuando pensamos en las bases de datos tradicionales: almacenes detallados de información sobre cualquier tema, desde medicamentos hasta películas. Algunos almacenes de datos XML también se utilizan para comprobar si hay usuarios autorizados, por lo que si se les inyecta código XML nuevo, se pueden crear nuevos usuarios que el sistema anfitrión aceptará a partir de ese momento.

Para que un atacante pueda implementar una inyección de XML, es necesario que haya una aplicación que dependa de una base de datos XML, o al menos acceda a ella. Siempre que esto ocurra y las entradas del usuario no se examinen correctamente, se puede agregar un nuevo código XML al almacén de datos. Dependiendo de la habilidad del atacante, añadir un nuevo código XML puede causar mucho daño o incluso proporcionar acceso a toda la base de datos.

A medida que siga leyendo, es posible que descubra que la inyección de XML está estrechamente relacionada con los ataques de inyección de SQL que hemos cubierto anteriormente. Esto se debe a que, aunque se dirigen a diferentes tipos de bases de datos, son extremadamente similares. Y, afortunadamente, las soluciones también son similares. Aprender a derrotar un tipo de ataque te pondrá muy por delante del juego a la hora de prevenir el otro.

En este episodio, aprenderemos:

  • Cómo funcionan las inyecciones de XML
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos por completo.

¿Cómo activan los atacantes las inyecciones de XML?

Las inyecciones de XML se realizan correctamente siempre que un usuario no autorizado puede escribir código XML e insertarlo en una base de datos XML existente. Esto solo requiere dos cosas para funcionar: una aplicación que dependa de una base de datos XML o se conecte a ella y una ruta de datos no segura para que el atacante lance su ataque.

Las inyecciones de XML casi siempre tienen éxito si la entrada del usuario no se sanea o restringe de otro modo antes de enviarla a un servidor para su procesamiento. Esto puede permitir a los atacantes escribir su propio código, o inyectarlo, al final de su cadena de consulta normal. Si tiene éxito, esto engaña al servidor para que ejecute el código XML, lo que le permite añadir o eliminar registros, o incluso revelar una base de datos completa.

Los piratas informáticos implementan un ataque de inyección de XML añadiendo código XML a una consulta normal. Puede ser cualquier cosa, desde un campo de búsqueda hasta una página de inicio de sesión. Incluso puede incluir elementos como cookies o encabezados.

Por ejemplo, en un formulario de registro, un usuario puede agregar el siguiente código después del campo de nombre de usuario o contraseña:


<user></user>
<role>administrador</role>
<username>John_Smith Jump 783!</username> <password> Tango @12</password>

En este ejemplo, se crearía un nuevo usuario llamado John_Smith con acceso de administrador. Al menos el nuevo usuario emplea buenas reglas de densidad de contraseñas. Lástima que en realidad sean un atacante.

Los hackers no tienen por qué hacer siempre un jonrón como ese para tener éxito con las inyecciones de XML. Al manipular sus consultas y registrar los distintos mensajes de error que devuelve el servidor, es posible que puedan trazar la estructura de la base de datos XML. Y esa información se puede utilizar para mejorar otros tipos de ataques.

¿Por qué son tan peligrosas las inyecciones de XML?

El nivel de peligro que implica un ataque de inyección de XML depende de la información que se almacene en la base de datos XML objetivo o de cómo se utilice esa información. Por ejemplo, en el caso de que se utilice una base de datos XML para autenticar a los usuarios, una inyección de XML puede dar acceso al sistema a un atacante. Incluso podría permitirles convertirse en administradores de la red objetivo, lo que, por supuesto, es una situación extremadamente peligrosa.

En el caso de las inyecciones de XML aplicadas a bases de datos más tradicionales, existe el peligro de que roben esa información, de que se añadan datos incorrectos al almacén o de que se sobrescriban datos en buen estado. El código XML no es muy difícil de aprender y algunos de los comandos pueden ser extremadamente eficaces, ya que sobrescriben campos de información completos o incluso muestran el contenido de un almacén de datos.

Por lo general, nadie crea una base de datos a menos que la información almacenada en ella tenga valor. Los piratas informáticos lo saben y por eso suelen atacarlos. Si esos datos incluyen datos como información personal de empleados o clientes, ponerlos en peligro puede provocar la pérdida de reputación, consecuencias financieras, fuertes multas o incluso demandas.

Detener los ataques de inyección de XML

Las inyecciones de XML son bastante comunes debido al bajo grado de dificultad para llevarlas a cabo y a la prevalencia de las bases de datos XML. Sin embargo, estos ataques existen desde hace mucho tiempo. Como tal, hay varias soluciones irrefutables que evitarán que se ejecuten alguna vez.

Uno de los mejores métodos para detener los ataques es diseñar una aplicación que solo utilice consultas XML precompiladas. Esto limita la funcionalidad de las consultas a un subconjunto autorizado de actividades. Todo lo que venga con argumentos o comandos adicionales que no coincidan con las funciones de consulta precompiladas simplemente no se ejecutará. Si no quieres ser tan restrictivo, también puedes usar la parametrización. Esto restringe la entrada del usuario a tipos específicos de consultas y datos; por ejemplo, solo usa números enteros. Todo lo que quede fuera de esos parámetros se considera inválido y hace que la consulta falle.

También es una buena idea combinar consultas precompiladas o parametrizadas con mensajes de error personalizados. En lugar de devolver los mensajes de error descriptivos predeterminados de una consulta fallida, las aplicaciones deberían interceptar esas respuestas y sustituirlas por un mensaje más genérico. Lo ideal sería decirle al usuario por qué falló la consulta, pero no darle ninguna información sobre la base de datos en sí. Si restringe esos mensajes personalizados a unas pocas opciones, los piratas informáticos no podrán recopilar ningún reconocimiento útil de las consultas fallidas.

Las inyecciones de XML tuvieron un gran éxito cuando se desarrollaron por primera vez. Pero teniendo en cuenta cuánto tiempo pasó, hoy podemos construir fácilmente defensas que ya no se pueden romper.

Más información sobre las inyecciones de XML

Para leer más, puede echar un vistazo al OWASP artículo sobre Inyecciones de XML. También puede poner a prueba sus 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.


리소스 보기
리소스 보기

다음 양식을 작성하여 보고서를 다운로드하십시오.

귀하의 허락을 받아 당사 제품 또는 안전한 암호화 관련 주제에 대한 정보를 보내드리고자 합니다. 귀하의 개인정보는 항상 최대한 신중하게 처리하며, 마케팅 목적으로 타사에 판매하지 않을 것을 약속드립니다.

보내기
scw 성공 아이콘
scw 오류 아이콘
양식을 보내려면 '분석' 쿠키를 활성화하세요. 완료 후에는 언제든지 다시 비활성화해도 됩니다.

Los ataques de inyección de XML son pequeños exploits desagradables inventados por piratas informáticos para ayudarlos a comprometer los sistemas que alojan bases de datos XML. Esto incluye el tipo de cosas que se nos vienen a la mente cuando pensamos en las bases de datos tradicionales: almacenes detallados de información sobre cualquier tema, desde medicamentos hasta películas. Algunos almacenes de datos XML también se utilizan para comprobar si hay usuarios autorizados, por lo que si se les inyecta código XML nuevo, se pueden crear nuevos usuarios que el sistema anfitrión aceptará a partir de ese momento.

Para que un atacante pueda implementar una inyección de XML, es necesario que haya una aplicación que dependa de una base de datos XML, o al menos acceda a ella. Siempre que esto ocurra y las entradas del usuario no se examinen correctamente, se puede agregar un nuevo código XML al almacén de datos. Dependiendo de la habilidad del atacante, añadir un nuevo código XML puede causar mucho daño o incluso proporcionar acceso a toda la base de datos.

A medida que siga leyendo, es posible que descubra que la inyección de XML está estrechamente relacionada con los ataques de inyección de SQL que hemos cubierto anteriormente. Esto se debe a que, aunque se dirigen a diferentes tipos de bases de datos, son extremadamente similares. Y, afortunadamente, las soluciones también son similares. Aprender a derrotar un tipo de ataque te pondrá muy por delante del juego a la hora de prevenir el otro.

En este episodio, aprenderemos:

  • Cómo funcionan las inyecciones de XML
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos por completo.

¿Cómo activan los atacantes las inyecciones de XML?

Las inyecciones de XML se realizan correctamente siempre que un usuario no autorizado puede escribir código XML e insertarlo en una base de datos XML existente. Esto solo requiere dos cosas para funcionar: una aplicación que dependa de una base de datos XML o se conecte a ella y una ruta de datos no segura para que el atacante lance su ataque.

Las inyecciones de XML casi siempre tienen éxito si la entrada del usuario no se sanea o restringe de otro modo antes de enviarla a un servidor para su procesamiento. Esto puede permitir a los atacantes escribir su propio código, o inyectarlo, al final de su cadena de consulta normal. Si tiene éxito, esto engaña al servidor para que ejecute el código XML, lo que le permite añadir o eliminar registros, o incluso revelar una base de datos completa.

Los piratas informáticos implementan un ataque de inyección de XML añadiendo código XML a una consulta normal. Puede ser cualquier cosa, desde un campo de búsqueda hasta una página de inicio de sesión. Incluso puede incluir elementos como cookies o encabezados.

Por ejemplo, en un formulario de registro, un usuario puede agregar el siguiente código después del campo de nombre de usuario o contraseña:


<user></user>
<role>administrador</role>
<username>John_Smith Jump 783!</username> <password> Tango @12</password>

En este ejemplo, se crearía un nuevo usuario llamado John_Smith con acceso de administrador. Al menos el nuevo usuario emplea buenas reglas de densidad de contraseñas. Lástima que en realidad sean un atacante.

Los hackers no tienen por qué hacer siempre un jonrón como ese para tener éxito con las inyecciones de XML. Al manipular sus consultas y registrar los distintos mensajes de error que devuelve el servidor, es posible que puedan trazar la estructura de la base de datos XML. Y esa información se puede utilizar para mejorar otros tipos de ataques.

¿Por qué son tan peligrosas las inyecciones de XML?

El nivel de peligro que implica un ataque de inyección de XML depende de la información que se almacene en la base de datos XML objetivo o de cómo se utilice esa información. Por ejemplo, en el caso de que se utilice una base de datos XML para autenticar a los usuarios, una inyección de XML puede dar acceso al sistema a un atacante. Incluso podría permitirles convertirse en administradores de la red objetivo, lo que, por supuesto, es una situación extremadamente peligrosa.

En el caso de las inyecciones de XML aplicadas a bases de datos más tradicionales, existe el peligro de que roben esa información, de que se añadan datos incorrectos al almacén o de que se sobrescriban datos en buen estado. El código XML no es muy difícil de aprender y algunos de los comandos pueden ser extremadamente eficaces, ya que sobrescriben campos de información completos o incluso muestran el contenido de un almacén de datos.

Por lo general, nadie crea una base de datos a menos que la información almacenada en ella tenga valor. Los piratas informáticos lo saben y por eso suelen atacarlos. Si esos datos incluyen datos como información personal de empleados o clientes, ponerlos en peligro puede provocar la pérdida de reputación, consecuencias financieras, fuertes multas o incluso demandas.

Detener los ataques de inyección de XML

Las inyecciones de XML son bastante comunes debido al bajo grado de dificultad para llevarlas a cabo y a la prevalencia de las bases de datos XML. Sin embargo, estos ataques existen desde hace mucho tiempo. Como tal, hay varias soluciones irrefutables que evitarán que se ejecuten alguna vez.

Uno de los mejores métodos para detener los ataques es diseñar una aplicación que solo utilice consultas XML precompiladas. Esto limita la funcionalidad de las consultas a un subconjunto autorizado de actividades. Todo lo que venga con argumentos o comandos adicionales que no coincidan con las funciones de consulta precompiladas simplemente no se ejecutará. Si no quieres ser tan restrictivo, también puedes usar la parametrización. Esto restringe la entrada del usuario a tipos específicos de consultas y datos; por ejemplo, solo usa números enteros. Todo lo que quede fuera de esos parámetros se considera inválido y hace que la consulta falle.

También es una buena idea combinar consultas precompiladas o parametrizadas con mensajes de error personalizados. En lugar de devolver los mensajes de error descriptivos predeterminados de una consulta fallida, las aplicaciones deberían interceptar esas respuestas y sustituirlas por un mensaje más genérico. Lo ideal sería decirle al usuario por qué falló la consulta, pero no darle ninguna información sobre la base de datos en sí. Si restringe esos mensajes personalizados a unas pocas opciones, los piratas informáticos no podrán recopilar ningún reconocimiento útil de las consultas fallidas.

Las inyecciones de XML tuvieron un gran éxito cuando se desarrollaron por primera vez. Pero teniendo en cuenta cuánto tiempo pasó, hoy podemos construir fácilmente defensas que ya no se pueden romper.

Más información sobre las inyecciones de XML

Para leer más, puede echar un vistazo al OWASP artículo sobre Inyecciones de XML. También puede poner a prueba sus 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.


웹 세미나 보기
시작하다
더 알아보세요

아래 링크를 클릭하고 이 자료의 PDF를 다운로드하세요.

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

보고서 보기데모 예약하기
리소스 보기
공유하기:
링크드인 브랜드사회적x 로고
더 알고 싶으신가요?

공유하기:
링크드인 브랜드사회적x 로고
저자
야프 카란 싱
게시일: 2019년 6월 20일

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

공유하기:
링크드인 브랜드사회적x 로고

Los ataques de inyección de XML son pequeños exploits desagradables inventados por piratas informáticos para ayudarlos a comprometer los sistemas que alojan bases de datos XML. Esto incluye el tipo de cosas que se nos vienen a la mente cuando pensamos en las bases de datos tradicionales: almacenes detallados de información sobre cualquier tema, desde medicamentos hasta películas. Algunos almacenes de datos XML también se utilizan para comprobar si hay usuarios autorizados, por lo que si se les inyecta código XML nuevo, se pueden crear nuevos usuarios que el sistema anfitrión aceptará a partir de ese momento.

Para que un atacante pueda implementar una inyección de XML, es necesario que haya una aplicación que dependa de una base de datos XML, o al menos acceda a ella. Siempre que esto ocurra y las entradas del usuario no se examinen correctamente, se puede agregar un nuevo código XML al almacén de datos. Dependiendo de la habilidad del atacante, añadir un nuevo código XML puede causar mucho daño o incluso proporcionar acceso a toda la base de datos.

A medida que siga leyendo, es posible que descubra que la inyección de XML está estrechamente relacionada con los ataques de inyección de SQL que hemos cubierto anteriormente. Esto se debe a que, aunque se dirigen a diferentes tipos de bases de datos, son extremadamente similares. Y, afortunadamente, las soluciones también son similares. Aprender a derrotar un tipo de ataque te pondrá muy por delante del juego a la hora de prevenir el otro.

En este episodio, aprenderemos:

  • Cómo funcionan las inyecciones de XML
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos por completo.

¿Cómo activan los atacantes las inyecciones de XML?

Las inyecciones de XML se realizan correctamente siempre que un usuario no autorizado puede escribir código XML e insertarlo en una base de datos XML existente. Esto solo requiere dos cosas para funcionar: una aplicación que dependa de una base de datos XML o se conecte a ella y una ruta de datos no segura para que el atacante lance su ataque.

Las inyecciones de XML casi siempre tienen éxito si la entrada del usuario no se sanea o restringe de otro modo antes de enviarla a un servidor para su procesamiento. Esto puede permitir a los atacantes escribir su propio código, o inyectarlo, al final de su cadena de consulta normal. Si tiene éxito, esto engaña al servidor para que ejecute el código XML, lo que le permite añadir o eliminar registros, o incluso revelar una base de datos completa.

Los piratas informáticos implementan un ataque de inyección de XML añadiendo código XML a una consulta normal. Puede ser cualquier cosa, desde un campo de búsqueda hasta una página de inicio de sesión. Incluso puede incluir elementos como cookies o encabezados.

Por ejemplo, en un formulario de registro, un usuario puede agregar el siguiente código después del campo de nombre de usuario o contraseña:


<user></user>
<role>administrador</role>
<username>John_Smith Jump 783!</username> <password> Tango @12</password>

En este ejemplo, se crearía un nuevo usuario llamado John_Smith con acceso de administrador. Al menos el nuevo usuario emplea buenas reglas de densidad de contraseñas. Lástima que en realidad sean un atacante.

Los hackers no tienen por qué hacer siempre un jonrón como ese para tener éxito con las inyecciones de XML. Al manipular sus consultas y registrar los distintos mensajes de error que devuelve el servidor, es posible que puedan trazar la estructura de la base de datos XML. Y esa información se puede utilizar para mejorar otros tipos de ataques.

¿Por qué son tan peligrosas las inyecciones de XML?

El nivel de peligro que implica un ataque de inyección de XML depende de la información que se almacene en la base de datos XML objetivo o de cómo se utilice esa información. Por ejemplo, en el caso de que se utilice una base de datos XML para autenticar a los usuarios, una inyección de XML puede dar acceso al sistema a un atacante. Incluso podría permitirles convertirse en administradores de la red objetivo, lo que, por supuesto, es una situación extremadamente peligrosa.

En el caso de las inyecciones de XML aplicadas a bases de datos más tradicionales, existe el peligro de que roben esa información, de que se añadan datos incorrectos al almacén o de que se sobrescriban datos en buen estado. El código XML no es muy difícil de aprender y algunos de los comandos pueden ser extremadamente eficaces, ya que sobrescriben campos de información completos o incluso muestran el contenido de un almacén de datos.

Por lo general, nadie crea una base de datos a menos que la información almacenada en ella tenga valor. Los piratas informáticos lo saben y por eso suelen atacarlos. Si esos datos incluyen datos como información personal de empleados o clientes, ponerlos en peligro puede provocar la pérdida de reputación, consecuencias financieras, fuertes multas o incluso demandas.

Detener los ataques de inyección de XML

Las inyecciones de XML son bastante comunes debido al bajo grado de dificultad para llevarlas a cabo y a la prevalencia de las bases de datos XML. Sin embargo, estos ataques existen desde hace mucho tiempo. Como tal, hay varias soluciones irrefutables que evitarán que se ejecuten alguna vez.

Uno de los mejores métodos para detener los ataques es diseñar una aplicación que solo utilice consultas XML precompiladas. Esto limita la funcionalidad de las consultas a un subconjunto autorizado de actividades. Todo lo que venga con argumentos o comandos adicionales que no coincidan con las funciones de consulta precompiladas simplemente no se ejecutará. Si no quieres ser tan restrictivo, también puedes usar la parametrización. Esto restringe la entrada del usuario a tipos específicos de consultas y datos; por ejemplo, solo usa números enteros. Todo lo que quede fuera de esos parámetros se considera inválido y hace que la consulta falle.

También es una buena idea combinar consultas precompiladas o parametrizadas con mensajes de error personalizados. En lugar de devolver los mensajes de error descriptivos predeterminados de una consulta fallida, las aplicaciones deberían interceptar esas respuestas y sustituirlas por un mensaje más genérico. Lo ideal sería decirle al usuario por qué falló la consulta, pero no darle ninguna información sobre la base de datos en sí. Si restringe esos mensajes personalizados a unas pocas opciones, los piratas informáticos no podrán recopilar ningún reconocimiento útil de las consultas fallidas.

Las inyecciones de XML tuvieron un gran éxito cuando se desarrollaron por primera vez. Pero teniendo en cuenta cuánto tiempo pasó, hoy podemos construir fácilmente defensas que ya no se pueden romper.

Más información sobre las inyecciones de XML

Para leer más, puede echar un vistazo al OWASP artículo sobre Inyecciones de XML. También puede poner a prueba sus 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.


목차

PDF 다운로드
리소스 보기
더 알고 싶으신가요?

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약하기다운로드
공유하기:
링크드인 브랜드사회적x 로고
자원 센터

시작하기 위한 자료

더 많은 게시물
자원 센터

시작하기 위한 자료

더 많은 게시물