Saltar al contenido
Lectura5 minPreview

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 200

Ni 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, bandit y 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óduloQué aprendeLaboratorio
1. Qué es A09 y por qué pasaHistoria de A09, sus CWE, qué registrar y qué noPlan de registro de una tienda en línea
2. Cómo se ve en el código y cómo se revisaRegistro estructurado con jq, Flask, curl, grep y banditRevisar una app Flask con fallas de registro
3. Cómo se previene y se corrigeEl módulo logging, pytest, centralización, retención e integridadCorregir la app y probar el registro con pytest
4. Detectar, monitorear y reportarAlertas, reglas de Wazuh, respuesta y reporte, más la conclusiónDetectar una fuerza bruta y reportarla
Evaluación6 preguntas sobre todo el cursoAprueba 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.