Bienvenida al curso
Bienvenido a OWASP CI/CD Security Top 10. En marzo de 2025, alguien comprometió la acción de GitHub tj-actions/changed-files, usada en miles de repositorios, y movió sus etiquetas de versión para que apuntaran a un commit malicioso (CVE-2025-30066). Ese commit leía la memoria del runner e imprimía los secretos del flujo en el registro de la ejecución. En repositorios públicos, ese registro lo puede leer cualquiera. Lo que separó a los afectados de los que no lo estaban fue una sola línea:
# Lo que tenía casi todo el mundo: la etiqueta se puede mover
- uses: tj-actions/changed-files@v35
# Lo que no se movió: un commit fijado por su hash completo
- uses: tj-actions/changed-files@HASH_COMPLETO_DE_40_CARACTERESNadie atacó la aplicación. Atacaron el proceso que la construye, que tenía acceso a todos los secretos de despliegue. De eso trata este curso.
Qué va a lograr
- Explicar qué es un pipeline de CI/CD, qué piezas lo forman y por qué es un objetivo atractivo para un atacante.
- Reconocer los diez riesgos del OWASP Top 10 CI/CD Security Risks, de CICD-SEC-1 a CICD-SEC-10, en configuraciones reales.
- Leer y corregir flujos de GitHub Actions: disparadores, permisos del
GITHUB_TOKEN, secretos y acciones de terceros. - Endurecer un repositorio propio con ramas protegidas, acciones fijadas por hash, secretos por entorno y gitleaks.
- Firmar y verificar artefactos con atestaciones de procedencia.
- Revisar un pipeline con una lista de control y herramientas defensivas, y reportar lo que encuentre.
Para quién es y qué necesita
Para quien desarrolla, opera o revisa seguridad y ya usa Git. Conviene haber hecho Git y GitHub para ciberseguridad: aquí se da por sabido cómo hacer commits, ramas y pull requests. No necesita experiencia previa con CI/CD. Necesita una cuenta de GitHub propia con verificación en dos pasos activa, Git instalado, la CLI de GitHub (gh) para el módulo 4 y, si quiere correr las herramientas de análisis en su máquina, Python con pipx.
Cómo está organizado
| Módulo | Qué aprende | Laboratorio |
|---|---|---|
| 1. El pipeline y quién lo controla | Qué es CI/CD, anatomía de un flujo, CICD-SEC-1 y CICD-SEC-2 | Ramas protegidas y dueños de código |
| 2. Código y permisos dentro del pipeline | CICD-SEC-3, 4 y 5: dependencias, ejecución envenenada y permisos | Token mínimo y acciones fijadas por hash |
| 3. Secretos, configuración, terceros e integridad | CICD-SEC-6 a CICD-SEC-10 | Secretos por entorno y gitleaks |
| 4. Llevarlo al trabajo | Firma de artefactos, lista de revisión, herramientas, reportes y conclusión | Firmar y verificar artefactos |
| Evaluación | 6 preguntas sobre todo el curso | Aprueba con 70 % |
Cómo aprovecharlo
Los laboratorios trabajan sobre un mismo repositorio suyo, lab-cicd-seguro, que se endurece de módulo en módulo. En el del módulo 2 aprende a resolver una etiqueta a su hash con git ls-remote; lo va a repetir con cada acción que use después, así que hágalo con calma la primera vez.
El laboratorio de secretos por entorno es el que más se traba, casi siempre por un detalle de nombres: el entorno se llama produccion en el YAML y otra cosa en Settings, o el secreto quedó creado en el repositorio y no en el entorno. Los trabajos imprimen la longitud del secreto, nunca su valor; mantenga esa costumbre. Al aprobar la evaluación final con 70 % recibe el certificado y la insignia.
Tiempo estimado
Unas 4 horas y media. Cada laboratorio toma unos 40 minutos, porque hay que esperar a que GitHub ejecute los flujos.