¿Cómo Ocurre?
La autentificación del usuario es el núcleo del desarrollo de cualquier aplicación que contenga información sensible. Broken User Authentication (BUA) refleja un escenario donde un endpoint API permite a un atacante acceder a la base de datos u obtener privilegios más elevados de los que merece. La principal razón detrás de BUA es una implementación inválida de la autentificación como usar emails incorrectos, contraseñas, queries, etc. O la ausencia de seguridad como headers de autentificación.
Impacto Posible
Los atacantes pueden comprometer la sesión autentificada o el mecanismo de autentificación y fácilmente acceder a información sensible. Pueden pretender ser alguien autorizado y realizar actividades no deseadas incluyendo un control total de la cuenta.
Ejemplo Práctico
- Bob entiende que la autentificación es crítica y se le encarga desarrollar un endpoint API
apirule2/user/login_vque autentificará al obtener un email y una contraseña. - El endpoint devolverá un token, que será pasado como
Authorization-Tokenheader (GET) aapirule2/user/Detailspara mostrar los detalles del usuario específico. - Bob desarrolló el endpoint. Sin embargo, se olvidó de validar la contraseña, por lo que ahora sólo necesitas el email de un usuario para obtener sus detalles. Pruébalo mandando una petición POST a
http://localhost:80/MHT/apirule2/user/login_vcon los parámetrosemailypassword.
- Como podemos ver, el endpoint vulnerable recibió un token que puede ser redirigido a
/apirule2/user/detailspara obtener los detalles de un usuario. - Para arreglar esto, actualizaremos la lógica del query de login para que use tanto el email como la contraseña para la validación. El endpoint
/apirule2/user/login_ses un endpoint válido.
Medidas de Mitigación
- Asegúrate de que se configuran contraseñas complejas con alta entropía.
- No expongas credenciales con peticiones GET o POST.
- Habilita JWTs fuertes, headers de autorización, etc.
- Asegura la implementación de autentificaión multifactor, bloqueo de cuenta, o sistema de captcha.
- Asegura que las contraseñas no se guarden en texto plano.
