mediumCWE-601A01:2021

Redireccion Abierta

Redirigir usuarios a URLs de parametros de query sin validar permite a los atacantes crear links de phishing que parecen venir de tu dominio de confianza.

Cómo Funciona

Las redirecciones abiertas ocurren cuando una aplicacion toma una URL del input del usuario (parametro de query, campo de formulario o header) y redirige al usuario sin validacion. Los atacantes explotan esto para phishing: construyen un link como https://tuapp.com/login?redirect=https://evil.com/fake-login. La victima ve el dominio de confianza en la URL y hace click. Despues de iniciar sesion en el sitio legitimo, son redirigidos a la pagina de phishing del atacante que imita el sitio original y pide informacion adicional. Los flujos de OAuth son especialmente vulnerables — una redireccion abierta en la URL de callback de OAuth puede filtrar codigos de autorizacion a servidores controlados por el atacante.

Código Vulnerable
app.get('/login', (req, res) => {
  // After authentication...
  const redirectUrl = req.query.redirect || '/';
  res.redirect(redirectUrl);
  // Attacker: /login?redirect=https://evil.com
});
Código Seguro
app.get('/login', (req, res) => {
  const redirectUrl = req.query.redirect || '/';
  const url = new URL(redirectUrl, `${req.protocol}://${req.get('host')}`);
  // Only allow redirects to our own domain
  if (url.origin !== `${req.protocol}://${req.get('host')}`) {
    return res.redirect('/');
  }
  res.redirect(url.pathname + url.search);
});

Ejemplo Real

En 2023, una vulnerabilidad de redireccion abierta en el flujo de login de Microsoft fue usada en una campana de phishing a gran escala. Los atacantes enviaron correos con links a URLs legitimas de Microsoft que redirigian a paginas de recoleccion de credenciales. Como la URL inicial era microsoft.com, los filtros de seguridad de correo no marcaron los mensajes.

Cómo Prevenirlo

  • Valida las URLs de redireccion contra una lista de dominios permitidos
  • Solo permite redirecciones de rutas relativas y elimina el protocolo y host
  • Usa parsing de URL para verificar que el origen coincida con el dominio de tu aplicacion
  • Nunca pases URLs completas como parametros de redireccion — usa valores solo de ruta

Tecnologías Afectadas

Node.jsReactNext.jsPythonGoJavaPHP

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas