Los codificadores conquistan la seguridad: Share & Learn Series - Redirecciones y reenvíos no validados

Publicado el 23 de mayo de 2019
por Jaap Karan Singh
ESTUDIO DE CASO

Los codificadores conquistan la seguridad: Share & Learn Series - Redirecciones y reenvíos no validados

Publicado el 23 de mayo de 2019
por Jaap Karan Singh
Ver recurso
Ver recurso

Codificar un sitio web o una aplicación con la capacidad de procesar redireccionamientos y reenvíos no validados puede ser extremadamente peligroso tanto para sus usuarios como para su organización. Este error común suele ser aprovechado por los hackers que buscan perpetrar estafas de phishing, o para obtener acceso a páginas e información que normalmente estaría restringida.

Siempre que una aplicación web está diseñada para reenviar a los usuarios a nuevas páginas, existe el peligro de que esas peticiones puedan ser manipuladas o secuestradas. Esto puede ocurrir si no hay un proceso de validación para evitar que los parámetros de reenvío apunten a destinos no deseados.

La buena noticia es que los redireccionamientos y reenvíos no validados son una de las vulnerabilidades más fáciles de eliminar de su entorno. Una vez eliminadas, puedes tomar unos sencillos pasos para asegurarte de que nunca se generen en el futuro.

En este episodio, aprenderemos:

  • Cómo aprovechan los hackers las vulnerabilidades de redirección y reenvío no validadas
  • Por qué permitir redireccionamientos y reenvíos no validados puede ser peligroso
  • Políticas y técnicas que pueden emplearse para encontrar y solucionar este problema.

¿Cómo aprovechan los atacantes los redireccionamientos y reenvíos no validados?

Los atacantes deben encontrar primero una aplicación web que esté configurada para reenviar a los usuarios a una página o páginas específicas. Si la página de destino está definida en el código, no hay vulnerabilidad. Por ejemplo, en Java, esta sería una forma segura y predefinida de enviar a un usuario a una nueva ubicación sin que tenga que realizar ninguna acción, como hacer clic en un hipervínculo.

response.sendRedirect("http://www.knownsafesite.com");

La vulnerabilidad se produce si el sitio está programado para aceptar la entrada del usuario para la redirección, o si el parámetro se deja abierto, tal vez para obtener la información de otra fuente. Por ejemplo, un desarrollador podría utilizar el parámetro "url'GET".

response.sendRedirect(request.getParameter("url"));

Aunque esto da más flexibilidad, también crea la vulnerabilidad de las redirecciones y reenvíos no validados. Los hackers pueden añadir información después de las barras de reenvío para activar una redirección a cualquier sitio que elijan, quizás como parte de un correo electrónico de phishing. Los usuarios ven el dominio de confianza en la primera parte de un enlace y no se dan cuenta de que el sitio web puede redirigirlos al sitio del hacker.

¿Por qué son tan peligrosos los redireccionamientos y reenvíos no validados?

El peligro que supone permitir redireccionamientos y reenvíos no validados puede ser importante. Para los usuarios, el mayor peligro es que pueden ser víctimas de ataques de phishing. Como ven la URL de nivel superior, es más probable que confíen en un correo electrónico u otra comunicación de phishing y hagan clic en un enlace. Y si la página a la que se les redirige se parece a la página real, el engaño puede ser bastante eficaz. Podrían compartir su nombre de usuario, contraseñas u otras credenciales y nunca sospechar que están siendo manipulados.

Eliminación de la amenaza que suponen los redireccionamientos y reenvíos no validados

Las redirecciones y reenvíos no validados comienzan a existir mientras se desarrolla una aplicación. Pueden ser eliminados después, pero la forma más fácil de eliminarlos es simplemente no permitir parámetros de usuario o cadenas abiertas como parte de cualquier función de redirección o reenvío en primer lugar. En su lugar, defina estrictamente las direcciones URL a las que serán redirigidos los usuarios, eliminando las variables y negando a los atacantes el margen de maniobra. Mejor aún, considere la posibilidad de no utilizar redireccionamientos y reenvíos en absoluto.

Si no hay absolutamente ninguna manera de evitar tener variables como parte de un proceso de redirección o reenvío, entonces debe haber un proceso de validación establecido para asegurar que la redirección va a uno de un conjunto de destinos válidos. Por último, utilice valores de mapeo en lugar de URLs reales. Los hackers tratarán de utilizar la información de la URL, y probablemente no serán capaces de adivinar el esquema de mapeo incluso si sospechan que se está utilizando uno.

Más información sobre redireccionamientos y reenvíos no validados

Para más información, puedes echar un vistazo a las páginas de referencia de OWASP sobre redireccionamientos y reenvíos no validados. 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 .

Ocúpese de una vez por todas de los redireccionamientos y reenvíos no validados. Aplique sus nuevos conocimientos y ponga a prueba sus habilidades en nuestra plataforma de formación gamificada: [Comience aquí]

Ver recurso
Ver recurso

Autor

Jaap Karan Singh

¿Quieres más?

Sumérjase en nuestras últimas ideas sobre codificación segura en el blog.

Nuestra amplia biblioteca de recursos tiene como objetivo potenciar el enfoque humano de la mejora de la codificación segura.

Ver blog
¿Quieres más?

Obtenga las últimas investigaciones sobre la seguridad impulsada por los desarrolladores

Nuestra amplia biblioteca de recursos está repleta de recursos útiles, desde libros blancos hasta seminarios web, que le ayudarán a iniciarse en la codificación segura orientada a los desarrolladores. Explórela ahora.

Centro de recursos

Los codificadores conquistan la seguridad: Share & Learn Series - Redirecciones y reenvíos no validados

Publicado el 23 de mayo de 2019
Por Jaap Karan Singh

Codificar un sitio web o una aplicación con la capacidad de procesar redireccionamientos y reenvíos no validados puede ser extremadamente peligroso tanto para sus usuarios como para su organización. Este error común suele ser aprovechado por los hackers que buscan perpetrar estafas de phishing, o para obtener acceso a páginas e información que normalmente estaría restringida.

Siempre que una aplicación web está diseñada para reenviar a los usuarios a nuevas páginas, existe el peligro de que esas peticiones puedan ser manipuladas o secuestradas. Esto puede ocurrir si no hay un proceso de validación para evitar que los parámetros de reenvío apunten a destinos no deseados.

La buena noticia es que los redireccionamientos y reenvíos no validados son una de las vulnerabilidades más fáciles de eliminar de su entorno. Una vez eliminadas, puedes tomar unos sencillos pasos para asegurarte de que nunca se generen en el futuro.

En este episodio, aprenderemos:

  • Cómo aprovechan los hackers las vulnerabilidades de redirección y reenvío no validadas
  • Por qué permitir redireccionamientos y reenvíos no validados puede ser peligroso
  • Políticas y técnicas que pueden emplearse para encontrar y solucionar este problema.

¿Cómo aprovechan los atacantes los redireccionamientos y reenvíos no validados?

Los atacantes deben encontrar primero una aplicación web que esté configurada para reenviar a los usuarios a una página o páginas específicas. Si la página de destino está definida en el código, no hay vulnerabilidad. Por ejemplo, en Java, esta sería una forma segura y predefinida de enviar a un usuario a una nueva ubicación sin que tenga que realizar ninguna acción, como hacer clic en un hipervínculo.

response.sendRedirect("http://www.knownsafesite.com");

La vulnerabilidad se produce si el sitio está programado para aceptar la entrada del usuario para la redirección, o si el parámetro se deja abierto, tal vez para obtener la información de otra fuente. Por ejemplo, un desarrollador podría utilizar el parámetro "url'GET".

response.sendRedirect(request.getParameter("url"));

Aunque esto da más flexibilidad, también crea la vulnerabilidad de las redirecciones y reenvíos no validados. Los hackers pueden añadir información después de las barras de reenvío para activar una redirección a cualquier sitio que elijan, quizás como parte de un correo electrónico de phishing. Los usuarios ven el dominio de confianza en la primera parte de un enlace y no se dan cuenta de que el sitio web puede redirigirlos al sitio del hacker.

¿Por qué son tan peligrosos los redireccionamientos y reenvíos no validados?

El peligro que supone permitir redireccionamientos y reenvíos no validados puede ser importante. Para los usuarios, el mayor peligro es que pueden ser víctimas de ataques de phishing. Como ven la URL de nivel superior, es más probable que confíen en un correo electrónico u otra comunicación de phishing y hagan clic en un enlace. Y si la página a la que se les redirige se parece a la página real, el engaño puede ser bastante eficaz. Podrían compartir su nombre de usuario, contraseñas u otras credenciales y nunca sospechar que están siendo manipulados.

Eliminación de la amenaza que suponen los redireccionamientos y reenvíos no validados

Las redirecciones y reenvíos no validados comienzan a existir mientras se desarrolla una aplicación. Pueden ser eliminados después, pero la forma más fácil de eliminarlos es simplemente no permitir parámetros de usuario o cadenas abiertas como parte de cualquier función de redirección o reenvío en primer lugar. En su lugar, defina estrictamente las direcciones URL a las que serán redirigidos los usuarios, eliminando las variables y negando a los atacantes el margen de maniobra. Mejor aún, considere la posibilidad de no utilizar redireccionamientos y reenvíos en absoluto.

Si no hay absolutamente ninguna manera de evitar tener variables como parte de un proceso de redirección o reenvío, entonces debe haber un proceso de validación establecido para asegurar que la redirección va a uno de un conjunto de destinos válidos. Por último, utilice valores de mapeo en lugar de URLs reales. Los hackers tratarán de utilizar la información de la URL, y probablemente no serán capaces de adivinar el esquema de mapeo incluso si sospechan que se está utilizando uno.

Más información sobre redireccionamientos y reenvíos no validados

Para más información, puedes echar un vistazo a las páginas de referencia de OWASP sobre redireccionamientos y reenvíos no validados. 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 .

Ocúpese de una vez por todas de los redireccionamientos y reenvíos no validados. Aplique sus nuevos conocimientos y ponga a prueba sus habilidades en nuestra plataforma de formación gamificada: [Comience aquí]

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.