mediumCWE-601A01:2021

Redirección Abierta del Lado del Cliente

JavaScript que redirige usuarios a URLs tomadas de parámetros de query o fragmentos URL sin validación, habilitando ataques de phishing usando tu dominio confiable como lanzadera.

Cómo Funciona

Los usuarios confían en links de dominios que reconocen. Una redirección abierta permite a un atacante crear una URL como `https://tuapp.com/login?next=https://evil.com/login-falso`. Tu app redirige a evil.com después del login, y la víctima — que vio tu dominio en la URL — confía en el destino. Es phishing usando tu reputación.

Código Vulnerable
// MAL: redirige a URL sin validar de parámetro de query
const { searchParams } = new URL(window.location.href);
const next = searchParams.get('next');
if (next) window.location.href = next; // el atacante controla el destino
Código Seguro
// BIEN: solo permite paths relativos o destinos del mismo origen
const { searchParams } = new URL(window.location.href);
const next = searchParams.get('next') ?? '/dashboard';
// Asegura que sea un path relativo, no una URL externa
const isRelativo = next.startsWith('/') && !next.startsWith('//');
window.location.href = isRelativo ? next : '/dashboard';

Ejemplo Real

Redirección abierta + OAuth es una cadena de ataque clásica: el atacante configura el 'redirect_uri' del callback OAuth para apuntar a tu URL de redirección abierta que apunta a su sitio. Tu app maneja el callback OAuth y luego redirige el access token al servidor del atacante. OWASP documenta esto extensamente.

Cómo Prevenirlo

  • Solo permite paths relativos (que empiecen con /) como destinos de redirección
  • Si se necesitan redirecciones externas, mantén una allowlist explícita de dominios confiables
  • Verifica que la URL destino tenga el mismo origen que tu app usando el constructor URL
  • Nunca uses parámetros URL sin validar como destinos de redirección después de callbacks OAuth

Tecnologías Afectadas

ReactNext.jsjavascript

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas