Bienvenida al curso
Bienvenido a OWASP A04: diseño inseguro. Por ejemplo: un lunes, la encargada de la tienda en línea de Café del Valle revisa los pedidos del fin de semana y encuentra uno de cuatro bolsas de café con total de cero colones. El cliente había aplicado el cupón BIENVENIDA10 cuarenta veces en el mismo carrito, recargando la página entre una y otra.
Nadie hackeó nada. El servidor recibió cuarenta peticiones válidas y aplicó cuarenta descuentos, exactamente como estaba escrito. El error estaba antes del código, en la reunión donde alguien dijo "el cupón da un 10 %" y nadie preguntó cuántas veces, por cliente o por pedido. Ningún escáner lo habría marcado: no hay una línea mal escrita.
Qué va a lograr
- Distinguir una falla de diseño de una de implementación y nombrarla con la CWE correcta.
- Modelar amenazas con STRIDE y escribir casos de abuso para una funcionalidad real.
- Definir límites de negocio de frecuencia, intentos, montos y orden, con máquinas de estados e idempotencia.
- Aplicar patrones de diseño seguro y convertirlos en requisitos verificables con OWASP ASVS.
- Corregir una pequeña API en Flask y demostrar la corrección con pruebas automáticas en pytest.
- Detectar abuso de lógica en registros de negocio y redactar un hallazgo de diseño.
Para quién es y qué necesita
Para quien desarrolla, revisa o defiende aplicaciones web, y para quien se sienta en las reuniones donde se deciden las funciones. Conviene haber hecho Seguridad web con OWASP Top 10 y leer Python básico; si no, Python para ciberseguridad le da la base.
Necesita Python 3.10 o superior, un editor y una terminal (en Windows, PowerShell o Git Bash). Solo usará internet para instalar Flask, Flask-Limiter y pytest con pip.
Cómo está organizado
Todo el curso gira alrededor de Colibrí Pagos, una billetera digital ficticia de Costa Rica.
| Módulo | Qué aprende | Laboratorio |
|---|---|---|
| 1. Qué es el diseño inseguro y por qué pasa | Diseño frente a implementación, historia de A04, escenarios y CWE | Casos de abuso para una app de pagos |
| 2. Modelado de amenazas y revisión de código | STRIDE, diagramas de flujo de datos, venv, Flask, curl y señales de diseño inseguro en el código | Revisar una app vulnerable propia |
| 3. Prevenir y corregir | Límites de negocio, Flask-Limiter, patrones de diseño seguro, ASVS y pytest | Corregir la app y probarla con pytest |
| 4. Detectar, monitorear y reportar | Registro de eventos de negocio, alertas, alcances de un WAF, reporte de hallazgos y conclusión | Detectar abuso de lógica en registros |
| Evaluación | 6 preguntas sobre todo el curso | Aprueba con 70 % |
Cómo aprovecharlo
El primer laboratorio se hace con papel o un documento en blanco: usted es la persona de seguridad invitada a la reunión de diseño de Colibrí Pagos y tiene que escribir casos de abuso antes de que exista el código. Cuesta más que programar, porque ningún compilador le dice si quedó bien.
En el laboratorio de corrección la meta es concreta: todas las pruebas de pytest en verde, incluidas las que verifican el límite diario, el tope de intentos y la clave de idempotencia. Cuando una falle, lea el mensaje completo antes de tocar el código. La evaluación final tiene 6 preguntas; con 70 % recibe el certificado y la insignia.
Tiempo estimado
Unas 5 horas. Los cuatro laboratorios suman hora y media; haga cada uno de un tirón.