Navegadores atormentados por la vulnerabilidad open redirect
Kyle Suero
Aviad Hahami
1 de abril de 2022
0 minutos de lecturaSi llegaste a esta publicación después de echarle un vistazo más detallado al tuit de Rick Roll que publicamos para el Día de los Inocentes… ¡bien hecho! Si no, visita el enlace que compartimos en Twitter para entender la broma.
«¡Nunca hagas clic en enlaces inesperados!». ¿Alguna vez escuchaste a alguien gritar esto? Prácticamente todas las personas en el ámbito de la tecnología desconfían de los enlaces aleatorios, y con razón. De vez en cuando, se producen grandes filtraciones que afectan a líderes de la industria como resultado de campañas dirigidas. Una de las formas más confiables de hacer phishing o robar las credenciales de alguien es aprovechar una vulnerabilidad de redirección abierta en un sitio web que parece seguro y redirigir a las víctimas a uno malicioso. Aunque solo mencionamos el robo de credenciales, también vale la pena señalar que las vulnerabilidades de redirección abierta pueden abrir la puerta a vulnerabilidades más sofisticadas.
¿Qué son las redirecciones abiertas y cómo funcionan?
La forma básica de una vulnerabilidad de redirección abierta es sencilla. Un atacante crea una URL para un sitio conocido, por ejemplo, www.snyk.io, pero luego agrega un parámetro, una cadena de consulta o un componente de ruta que, al enviarse al servidor, hace que este redirija la solicitud (y al cliente) a una URL o punto de conexión supuestamente previsto. Como este es un componente fundamental de cualquier solicitud HTTP, la vulnerabilidad aparece si el servidor no verifica la URL de destino de la redirección y simplemente redirige la solicitud sin comprobarla. En ese caso, un atacante puede elegir la URL a la que quiere redirigir a las víctimas y enviarles el enlace malicioso. Este tipo de ataque se manifiesta en una URL como [www.snyk.io?nextUR](http://www.snyk.io?nextURL=)L=//malicious.com. Si diseñamos y damos estilo a malicious.com para que se vea exactamente como www.snyk.io, a una víctima desprevenida le resultará muy difícil distinguir los dos sitios y probablemente el atacante la explotará.
Aunque el impacto de una redirección abierta pueda parecer un problema que no es grave desde el punto de vista técnico, sus consecuencias para la erosión de la confianza de los usuarios fieles son importantes. Al final del día, las víctimas son clientes de un producto y, si un producto pierde la confianza de sus clientes, acabará perdiendo popularidad (ya que los clientes se irán y no se sumarán otros nuevos). Así que, aunque técnicamente la vulnerabilidad no sea grave, sí lo es para el producto y su integridad, y puede afectar al producto en su totalidad.
Para echarle más leña al fuego a nuestra taza de «no pasa nada», se puede encadenar una vulnerabilidad de redirección abierta con otras vulnerabilidades web, como XSS, lo que aumenta considerablemente el impacto y puede representar una amenaza crítica. Por ejemplo, Twitter recibió un reporte sobre una redirección abierta que provocaba XSS en marzo de 2018. Al revisar el reporte, verás que el investigador descubrió que, al explotar la vulnerabilidad de redirección abierta, podía realizar un ataque XSS. Al combinar ambos, logró comprometer por completo los datos asociados al dominio de la víctima (como las cookies y el almacenamiento local). Twitter recompensó al investigador con $1,120 por este hallazgo.
De forma similar, la falsificación de solicitudes del lado del servidor (SSRF) es una vulnerabilidad que puede comprometer fácilmente un servidor. Como las vulnerabilidades de redirección abierta pueden ayudar a un atacante a eludir los mecanismos de filtrado, encadenar ambas es como disfrutar de una cerveza en un partido: ¡hacen una combinación perfecta! Si un servidor utiliza datos proporcionados por el usuario para realizar solicitudes, es un objetivo atractivo para un atacante. Una vez que el atacante entiende cómo un punto de conexión específico procesa los datos del usuario, solo necesita algo de creatividad y probar distintas opciones hasta encontrar una ruta viable para realizar un ataque SSRF. Cuando encuentra una redirección abierta, empieza a modificar el parámetro de URL en cuestión e intenta acceder a puntos de conexión internos críticos, servicios e incluso recursos maliciosos externos.
Evita las redirecciones abiertas en tus aplicaciones
¡Algunos de ustedes probablemente ya estén listos para buscar redirecciones abiertas! Para resolver estos problemas, considera lo siguiente: valida todas las entradas del usuario, especialmente si los datos controlados por el usuario se reflejarán en la URL. Habilita medidas de autenticación sólidas en los servicios que no las tengan activadas de forma predeterminada. Usa una lista de permitidos para restringir los posibles destinos de una redirección. Puedes leer más sobre cómo corregir estos problemas en esta hoja de consejos de OWASP.
En conclusión, te recomendamos que no pases por alto las vulnerabilidades de redirección abierta solo porque parezcan menos técnicas. Su impacto en los clientes y los daños que pueden causar son considerables. Dejar sin resolver estas vulnerabilidades es como dejar las puertas y ventanas abiertas con la esperanza de que nadie entre a tu casa sin permiso. ¡Simplemente no tiene sentido!
