Bienvenida al curso
Bienvenido a OWASP A08: fallas de integridad de software y datos. Esta línea aparece, con variantes, en el README de cientos de proyectos y en más de un Dockerfile que he revisado:
curl -fsSL https://descargas.ejemplo.cr/instalar-agente.sh | sudo bashDescarga un script y lo ejecuta como root, sin guardarlo y sin comparar su hash con nada. Si mañana alguien cambia ese archivo en el servidor de descargas, su próxima compilación instala lo que esa persona quiera, y nadie en su equipo ve una sola línea distinta en el repositorio. A08 trata de eso: aceptar código o datos sin comprobar que no cambiaron y que vienen de quien dicen venir. Vale igual para un paquete de PyPI, una acción de GitHub o la cookie que el navegador le devuelve a su aplicación.
Qué va a lograr
- Explicar qué cubre la categoría A08, de dónde viene y qué la diferencia de otras categorías.
- Reconocer en código, dependencias y pipelines de CI/CD las fallas de integridad más frecuentes y su CWE.
- Corregirlas con hashes, firmas, JSON firmado, actualizaciones verificadas, SLSA, Sigstore y OIDC.
- Escribir pruebas automáticas que fallen si alguien revierte una corrección.
- Detectar intentos de manipulación en logs, WAF y en la cadena de suministro con SBOM y escáneres.
- Redactar un reporte de hallazgo claro y verificable.
Para quién es y qué necesita
Para quien desarrolla, para estudiantes de seguridad de aplicaciones y para analistas que quieren ver el lado defensivo del desarrollo. Conviene haber hecho Seguridad web con OWASP Top 10 y manejar Python y la terminal a nivel básico; si la terminal le es nueva, empiece por Linux básico: 15 comandos para empezar. Necesita Python 3.10 o superior en Linux, macOS o Windows con WSL2, un editor y acceso a internet para pip.
Cómo está organizado
| Módulo | Qué aprende | Laboratorio |
|---|---|---|
| 1. Qué es A08 y por qué pasa | Integridad, historia de la categoría, casos públicos y deserialización | Escribir Cafetal Notas y su mapa de confianza |
| 2. Cómo se ve en el código y cómo se revisa | Dependencias, curl, pip, GitHub Actions, grep y Bandit | Revisión de código y pipeline con lista de hallazgos |
| 3. Cómo se previene y se corrige | Hashes, firmas, itsdangerous, SLSA, Sigstore, OIDC y pytest | Corregir la app y probarlo con pruebas automáticas |
| 4. Detectar, monitorear y reportar | Eventos de seguridad, WAF, reglas Sigma, SBOM y OSV-Scanner, más la conclusión | Alerta de detección y reporte del hallazgo |
| Evaluación | 6 preguntas sobre todo el curso | Aprueba con 70 % |
Cómo aprovecharlo
El primer laboratorio parece el más sencillo y es el que más rinde: dibuja el mapa de confianza de Cafetal Notas, cada lugar donde la app acepta algo de afuera. Los otros tres corrigen exactamente los puntos de ese mapa, así que si lo hace a la ligera, después no sabrá qué está arreglando.
El más largo es el del módulo 3. Cambia una cookie que viajaba como pickle por JSON firmado con itsdangerous, pasa de yaml.load a yaml.safe_load y hace que un plugin alterado devuelva 422 en lugar de instalarse. Cada prueba lleva en su nombre la garantía que protege; mantenga esa costumbre en sus propios proyectos. Al aprobar la evaluación final con 70 % recibe el certificado y la insignia.
Tiempo estimado
Unas 4 horas y media, casi 5. La app crece de un laboratorio al siguiente: no borre la carpeta del proyecto entre sesiones.