Qué es esta vulnerabilidad

Esta vulnerabilidad permite a atacantes bypasear completamente la autenticación de dos factores TOTP en Vikunja cuando se utiliza login OIDC con email fallback habilitado. El problema radica en que el manejador de callback OIDC en pkg/modules/auth/openid/openid.go:185 emite directamente un token JWT completo después de la búsqueda de usuario sin verificar si el usuario tiene TOTP habilitado.

El código vulnerable ejecuta return auth.NewUserAuthTokenResponse(u, c, false) inmediatamente después del lookup del usuario, sin ninguna referencia a TOTP en todo el directorio pkg/modules/auth/openid/. Esto contrasta drásticamente con el manejador de login local en pkg/routes/api/v1/login.go:79-102, que implementa correctamente la verificación TOTP antes de emitir tokens.

Impacto y riesgo

Cuando un administrador habilita OIDC con EmailFallback, cualquier usuario que haya configurado TOTP en su cuenta local puede ver esa protección completamente bypaseada. Un atacante que pueda autenticarse en el proveedor OIDC con una dirección de email coincidente obtiene acceso completo sin ningún desafío de segundo factor.

Esta vulnerabilidad socava fundamentalmente la garantía de seguridad del enrollment TOTP y puede encadenarse con otras vulnerabilidades OIDC para crear vectores de ataque más sofisticados. El atacante obtiene los mismos privilegios que el usuario legítimo, incluyendo acceso a todos sus proyectos, tareas y datos sensibles almacenados en Vikunja.

A quién afecta

La vulnerabilidad afecta específicamente a instalaciones de Vikunja v2.2.2 y potencialmente versiones anteriores que tengan configurado OIDC con la opción emailfallback: true. El problema se manifiesta cuando existe un usuario local con TOTP habilitado y un proveedor OIDC configurado que permita el mapeo por email.

Las organizaciones que han implementado TOTP como medida de seguridad adicional y simultáneamente utilizan proveedores OIDC como Dex, Auth0, o similares con email fallback están particularmente en riesgo. El alcance del problema se extiende a cualquier entorno donde los usuarios puedan tener cuentas tanto locales como federadas con el mismo email.

Esta vulnerabilidad es especialmente crítica en el contexto actual donde las organizaciones buscan balancear la conveniencia del single sign-on con la seguridad robusta de la autenticación multifactor. La falla en Vikunja demuestra cómo implementaciones incompletas de flujos de autenticación federada pueden inadvertidamente crear vectores de bypass que anulan controles de seguridad establecidos.