Saltar al contenido
Lectura5 minPreview

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_CARACTERES

Nadie 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óduloQué aprendeLaboratorio
1. El pipeline y quién lo controlaQué es CI/CD, anatomía de un flujo, CICD-SEC-1 y CICD-SEC-2Ramas protegidas y dueños de código
2. Código y permisos dentro del pipelineCICD-SEC-3, 4 y 5: dependencias, ejecución envenenada y permisosToken mínimo y acciones fijadas por hash
3. Secretos, configuración, terceros e integridadCICD-SEC-6 a CICD-SEC-10Secretos por entorno y gitleaks
4. Llevarlo al trabajoFirma de artefactos, lista de revisión, herramientas, reportes y conclusiónFirmar y verificar artefactos
Evaluación6 preguntas sobre todo el cursoAprueba 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.