Redirección abierta (Open redirect)
Una redirección abierta es un fallo por el que una aplicación manda al visitante a una URL sacada de un parámetro sin comprobarla contra una lista de destinos permitidos. Por sí sola no filtra nada, y por eso se descarta muchas veces; su valor para un atacante viene de aquello con lo que se encadena.
El parámetro suele estar ahí por un buen motivo: devolver al usuario a la página en la que estaba después de iniciar sesión, de cambiar de idioma o de pasar por una pantalla intermedia. El fallo es aceptar una URL absoluta, o una relativa que el navegador resuelve como absoluta, y seguirla sin validar. Los filtros que comprueban si el valor empieza por el dominio del propio sitio los derrota por rutina un valor que simplemente lo contiene.
Hay dos cadenas que suben la severidad. La primera es OAuth 2.0: si la redirección vive en un host registrado como callback válido, se puede encaminar un código de autorización a través de ella y sacarlo hacia el atacante, lo que convierte un asunto cosmético en una toma de control de la cuenta. La segunda es el phishing, donde el enlace que recibe el objetivo empieza de verdad por el dominio de su empresa y su propia pasarela de correo lo puntúa en consecuencia.
En un informe lo escribimos contra la cadena, no contra el parámetro, y cuando no existe ninguna cadena lo decimos en vez de inflarlo. La evidencia es la petición y la cabecera Location resultante, más el callback o el filtro concreto que se derrota. El arreglo es una lista de destinos permitidos, o un identificador opaco que se traduce a una URL guardada, y esto se cubre en las pruebas de aplicación web donde los parámetros de redirección se siguen de punta a punta.