Bienvenida al curso
Bienvenido a OWASP A07: fallas de identificación y autenticación. A las dos de la mañana, el registro de inicio de sesión de TicoNotas, la aplicación ficticia del curso, anota esto:
02:14:07 authn_login_fail [email protected] 198.51.100.23
02:14:09 authn_login_fail [email protected] 203.0.113.81
02:14:10 authn_login_success [email protected] 198.51.100.140
02:14:12 authn_login_fail [email protected] 203.0.113.9Cada cuenta recibe un solo intento, desde una IP distinta. Una regla de "bloquear la cuenta tras cinco fallos" no ve nada, porque ninguna cuenta falló cinco veces. No es fuerza bruta: es relleno de credenciales, alguien probando pares de correo y contraseña filtrados en otro sitio. Y la tercera línea dice que con lsolano funcionó. En este curso va a construir ese login, a ver cómo cae y a dejarlo en pie.
Qué va a lograr
- Explicar qué es A07 y cómo se diferencian identificación, autenticación y sesión.
- Aplicar las recomendaciones de NIST SP 800-63B sobre contraseñas y guardarlas con Argon2id.
- Configurar sesiones y cookies seguras y eliminar los mensajes que revelan usuarios.
- Diseñar MFA, passkeys, límites con bloqueo progresivo y una recuperación de cuenta segura.
- Revisar un login con OWASP ASVS, corregirlo y demostrar la corrección con pytest.
- Detectar el relleno de credenciales en los registros y redactar un reporte.
Para quién es y qué necesita
Para quien desarrolla, revisa u opera aplicaciones web. Conviene haber hecho Seguridad web con OWASP Top 10 y leer Python sencillo. Si quiere ver MFA primero desde el lado del usuario, la píldora Contraseñas y MFA sin dolor sirve de calentamiento. Necesita Linux, macOS o Windows con WSL2, Python 3.10 o superior, curl y grep.
Cómo está organizado
| Módulo | Qué aprende | Laboratorio |
|---|---|---|
| 1. Qué es A07 y por qué pasa | Qué es A07, CWE principales, NIST SP 800-63B, ataques a credenciales, curl y Flask | Escribir TicoNotas, una app de login vulnerable en localhost |
| 2. Cómo se ve en el código y cómo se revisa | Argon2id, grep, sesiones y cookies, enumeración de usuarios, Bandit | Revisar el login con OWASP ASVS |
| 3. Cómo se previene y se corrige | MFA con pyotp, passkeys, Flask-Limiter, secrets, recuperación segura, pytest | Corregir la app y demostrarlo con pruebas |
| 4. Detectar, monitorear y reportar | Eventos de autenticación en JSON, reglas Sigma, límites en Nginx y WAF, más la conclusión | Detectar relleno de credenciales y reportarlo |
| Evaluación | 6 preguntas sobre todo el curso | Aprueba con 70 % |
Cómo aprovecharlo
TicoNotas pasa por los cuatro laboratorios: la escribe vulnerable, la revisa, la corrige y lee su registro. Reserve más tiempo para el del módulo 3: cambia el almacenamiento a Argon2id, iguala los mensajes de error y escribe la batería de pruebas más larga del curso. Ahí aparecen los fallos que enseñan, como un 401 donde esperaba un 200 o una prueba que pasa porque compara la respuesta equivocada.
Antes de empezar, cree un entorno virtual y tenga a mano pip install flask argon2-cffi pytest. Al aprobar la evaluación final con 70 % recibe el certificado y la insignia.
Tiempo estimado
Unas 5 horas. Haga cada laboratorio completo en una sesión; el del módulo 4 parte del registro que deja la app corregida.