Bienvenida al curso
Bienvenido a OWASP A09: fallas de registro y monitoreo. Un caso ficticio: lunes a las 8 llama el gerente de una tienda en línea de Heredia. Alguien cambió el sábado la dirección de entrega de un cliente. "¿Entró alguien a la cuenta?". El registro de la aplicación dice esto, cientos de veces:
2026-10-18 23:41:07 INFO POST /login 200
2026-10-18 23:41:07 INFO POST /login 200
2026-10-18 23:41:08 INFO POST /login 200Ni usuario, ni IP, ni si el intento funcionó: la app responde 200 tanto a la contraseña buena como a la mala. La llamada termina con un "no sabemos", la peor respuesta posible en un incidente. A09 no le abre la puerta al atacante; le permite quedarse adentro sin que nadie lo note.
Qué va a lograr
- Explicar qué es A09, de dónde viene y por qué aparece en casi todos los incidentes.
- Diseñar qué eventos de seguridad registrar y qué datos no deben llegar nunca a un registro.
- Detectar en el código fallas de registro con
grep,bandity una lista de verificación. - Corregir una aplicación Flask con registro estructurado en JSON y demostrarlo con
pytest. - Convertir los registros en alertas útiles, conectarlos a un SIEM como Wazuh y reportar un hallazgo A09.
Para quién es y qué necesita
Para quien desarrolla aplicaciones web y para quien trabaja, o quiere trabajar, en un SOC: el primero escribe los registros y el segundo vive de ellos. Conviene haber hecho Seguridad web con OWASP Top 10 y leer Python sencillo; si todavía no programa, Python para ciberseguridad le da la base. Necesita Python 3.10 o superior en Linux, macOS, WSL2 o Windows, una terminal y un editor. Para el módulo 4 puede usar, si quiere, una máquina virtual propia con Wazuh todo en uno; no es obligatoria.
Cómo está organizado
| Módulo | Qué aprende | Laboratorio |
|---|---|---|
| 1. Qué es A09 y por qué pasa | Historia de A09, sus CWE, qué registrar y qué no | Plan de registro de una tienda en línea |
| 2. Cómo se ve en el código y cómo se revisa | Registro estructurado con jq, Flask, curl, grep y bandit | Revisar una app Flask con fallas de registro |
| 3. Cómo se previene y se corrige | El módulo logging, pytest, centralización, retención e integridad | Corregir la app y probar el registro con pytest |
| 4. Detectar, monitorear y reportar | Alertas, reglas de Wazuh, respuesta y reporte, más la conclusión | Detectar una fuerza bruta y reportarla |
| Evaluación | 6 preguntas sobre todo el curso | Aprueba con 70 % |
Cómo aprovecharlo
En el primer laboratorio no se programa: se arma una tabla de qué eventos debe generar la tienda Mercado Arenal y qué datos no pueden aparecer en ellos. No lo salte; los otros tres laboratorios se corrigen contra esa tabla.
En el del módulo 2 va a encontrar una línea que imprime el usuario y la contraseña en la consola "para depurar". Véala salir en su propia terminal. El del módulo 3 es el más largo, porque las pruebas verifican lo que la app escribe en el registro, no lo que responde. Tenga jq instalado desde el principio para leer las líneas JSON sin perderse. Al aprobar la evaluación final con 70 % recibe el certificado y la insignia.
Tiempo estimado
Unas 4 horas y media. Los laboratorios 2 a 4 usan la misma aplicación: termine cada uno antes de pasar al siguiente.