Bienvenida al curso
Bienvenido a OWASP API Security Top 10. La pantalla de perfil de una app ficticia de planillas muestra nombre y puesto. Si abre las herramientas de desarrollador y mira la respuesta de la API que alimenta esa pantalla, encuentra esto:
{
"id": 88,
"nombre": "Daniela Rojas",
"puesto": "Asistente contable",
"cedula": "1-0234-0567",
"salario_bruto": 685000,
"rol": "empleado",
"es_admin": false
}La app no pinta la cédula ni el salario, pero viajan por la red en cada visita. Y si la API además acepta un PATCH con "es_admin": true sin revisar quién lo manda, el problema deja de ser una fuga y pasa a ser una escalada de privilegios. Ese par de fallas tiene nombre en la lista, API3, y es solo una de las diez que va a aprender a encontrar y corregir aquí.
Qué va a lograr
- Explicar qué es una API web, cómo viaja una petición HTTP y por qué las API tienen su propia lista de riesgos.
- Reconocer los diez riesgos del OWASP API Security Top 10, edición 2023, con un caso público de cada uno.
- Corregir en Python con Flask la autorización por objeto, por propiedad y por función.
- Agregar límites de peticiones, validación de URL contra SSRF y una configuración segura de producción.
- Inventariar una API desconocida a partir de su contrato OpenAPI y validar todo con pruebas automáticas.
- Reportar hallazgos con el vocabulario de OWASP, evidencia enmascarada y una corrección concreta.
Para quién es y qué necesita
Para quien desarrolla, prueba o revisa API. Conviene haber hecho Seguridad web con OWASP Top 10 o conocer HTTP, sus métodos y sus códigos de estado. Si Python le es nuevo, Python para ciberseguridad le da la base. Necesita Windows 10 u 11, macOS o Linux con Python 3.10 o superior (el laboratorio de VAmPI pide Python 3.11 o 3.12, o Docker), Git, curl y un editor como Visual Studio Code.
Cómo está organizado
| Módulo | Qué aprende | Laboratorio |
|---|---|---|
| 1. Quién es usted y qué objeto pide | Qué es una API, la lista 2023, API1 BOLA, API2 autenticación rota y las herramientas curl, venv y Flask | Su API en Flask y la corrección de BOLA |
| 2. Qué campos, cuánto y qué funciones | API3 BOPLA, API4 y API6 consumo y flujos de negocio, API5 BFLA | Límites, campos permitidos y roles |
| 3. Configuración, inventario y terceros | API7 SSRF, API8 configuración incorrecta, API9 inventario y API10 consumo inseguro | Inventario de una API vulnerable en su máquina |
| 4. Llevarlo al trabajo | Lista de revisión, herramientas defensivas, integración continua, reporte y conclusión | Contrato OpenAPI y pruebas automáticas |
| Evaluación | 6 preguntas sobre todo el curso | Aprueba con 70 % |
Cómo aprovecharlo
Los laboratorios 1, 2 y 4 construyen la misma API: guarde la carpeta. El 3 es distinto: descarga VAmPI, una API vulnerable a propósito mantenida por la comunidad, con git clone, y la recorre a partir de su contrato. Ese es el que más se traba, casi siempre porque el script de inventario se crea dentro de la carpeta de VAmPI o porque se olvida activar su entorno virtual. Apáguela con Ctrl+C al terminar; nunca la deje corriendo.
La prueba que más va a repetir es la de dos usuarios: Ana pide el pedido de Beto y la API tiene que negarse. Al aprobar la evaluación final con 70 % recibe el certificado y la insignia.
Tiempo estimado
Unas 5 horas. El laboratorio del contrato OpenAPI es el más largo; empiécelo con tiempo.