Reports
BAJA[OTROS]#3581815

Open redirect en lovable.dev: una barra invertida en el parámetro redirect lleva a cualquier dominio externo

El parámetro redirect de lovable.dev esperaba una ruta relativa, pero un valor como /\google.com sacaba al usuario a un dominio externo. Con enlaces del dominio legítimo, esto servía para campañas de phishing.

Resumen
Resumen en castellano de un reporte público, no una traducción literal. El código y los comandos se mantienen como en el original.

Resumen

Tras iniciar sesión en lovable.dev, la aplicación lanza una petición a /auth/post-login con un parámetro redirect que indica adónde devolver al usuario. El valor normal es una ruta interna:

https://lovable.dev/auth/post-login?redirect=%2F%3Fshould-refresh-credentials%3D1&_rsc=1b5jt

La aplicación espera una ruta relativa, pero no lo garantiza. Si el valor empieza por una barra seguida de una barra invertida, la redirección termina fuera del sitio:

- https://lovable.dev/auth/post-login?redirect=%2F%3Fshould-refresh-credentials%3D1&_rsc=1b5jt
+ https://lovable.dev/auth/post-login?redirect=/\google.com

Con ese cambio, el usuario acaba en https://google.com, aunque el enlace que ha abierto pertenece a lovable.dev.

El investigador señala que el mismo fallo existe en una segunda ruta, /purchase-success, aquí con la barra invertida codificada como %5C:

https://lovable.dev/purchase-success?redirect=/%5Cgoogle.com

El programa marcó el reporte como resuelto. Se envió el 2 de marzo de 2026 y se divulgó el 5 de marzo de 2026.

Pasos de reproducción

  1. Inicia sesión con una cuenta.
  2. Visita esta dirección:
https://lovable.dev/auth/post-login?redirect=/\google.com
  1. El navegador te redirige a google.com.

Impacto

Un atacante puede fabricar enlaces en el dominio lovable.dev que redirigen al sitio externo que elija. Ese aspecto legítimo los hace útiles en campañas de phishing y otros ataques de ingeniería social.

Qué aprender de este caso

  • Al probar un parámetro de redirección que solo admite rutas relativas, no te quedes en https:// o //: prueba también /\dominio.com, en crudo y codificado como /%5Cdominio.com. Aquí ese prefijo bastó para salir a un dominio externo.
  • Si encuentras un open redirect, revisa otras páginas que reciban el mismo parámetro. En este caso, redirect aparecía tanto en /auth/post-login como en /purchase-success.
  • Para evitarlo, no compruebes solo que el valor empieza por /. Interpreta la URL igual que lo haría el navegador, con la barra invertida incluida, y confirma que el origen resultante sigue siendo el propio sitio antes de redirigir. Si los destinos posibles son pocos, mejor aún una lista cerrada en lugar de aceptar una ruta libre.