Seguridad en CI/CD
El pipeline de CI/CD tiene acceso al código, a los secretos de despliegue y a producción: comprometerlo es comprometer todo lo que construye y despliega. SolarWinds mostró que atacar el build es más rentable que atacar un endpoint. Esta ficha cubre cómo asegurar la cadena de suministro de software.
Por qué el CI/CD es un objetivo
Sección titulada «Por qué el CI/CD es un objetivo»- acceso a CÓDIGO + SECRETOS + capacidad de DESPLEGAR a producción- comprometer el build = inyectar en TODOS los artefactos (SolarWinds)- superficie: runners, plugins, dependencias de pipeline, tokens, webhooksAmenazas (y mitigaciones)
Sección titulada «Amenazas (y mitigaciones)»Poisoned pipeline execution (PPE) inyectar en el build via PR/config malicioso -> aislar runners, revisar cambios en el pipeline, no ejecutar PRs no confiables con secretosRobo de secretos del CI tokens con demasiado alcance -> OIDC (sin secretos de larga vida), mínimo privilegio, secretos efímeros (dso-secrets)Dependencias del pipeline actions/plugins de terceros comprometidos -> fijar por HASH (no por tag mutable), allowlist de actionsCompromiso de runner/agente runner compartido o persistente -> runners efímeros y aislados por jobProtección del repositorio
Sección titulada «Protección del repositorio»- branch protection: revisión obligatoria, no push directo a main, status checks- firma de commits (GPG/Sigstore) y verificación- CODEOWNERS para rutas sensibles (pipeline, infra)- 2FA/MFA obligatorio y mínimo privilegio en la plataforma (GitHub/GitLab)Integridad de artefactos (supply chain)
Sección titulada «Integridad de artefactos (supply chain)»SLSA marco de niveles de integridad de la cadena de suministroFirma Sigstore/cosign: firmar artefactos e imágenes -> verificar en despliegueProvenance atestación de CÓMO y DÓNDE se construyó el artefactoAdmisión el clúster solo admite imágenes firmadas/verificadas (dso-k8ssec)Gates de seguridad en el pipeline
Sección titulada «Gates de seguridad en el pipeline»- SAST (dso-sast), SCA+SBOM (dso-deps), secretos (dso-secrets), IaC scan (dso-iac)- fallar el build ante hallazgos críticos; resultados en el PR- escaneo de imágenes de contenedor antes de publicar (dso-containers)Blue Team / AppSec
Sección titulada «Blue Team / AppSec»- Tratar el pipeline como producción: mínimo privilegio, runners efímeros, secretos OIDC/efímeros.
- Fijar actions/plugins por hash y aplicar branch protection + firma de commits.
- Firmar y verificar artefactos (Sigstore/SLSA) y admitir solo imágenes verificadas.
- Integrar todos los gates (SAST/SCA/secrets/IaC/imagen) y proteger el acceso a la plataforma.
CVEs y casos reales
Sección titulada «CVEs y casos reales»- SolarWinds (2020): inyección en el proceso de build → backdoor distribuido a 18.000 clientes.
- Codecov (2021): script de CI comprometido filtró secretos de clientes.
- tj-actions/changed-files y otros incidentes de GitHub Actions por tags mutables → fijar por hash.
Checklist de prueba
Sección titulada «Checklist de prueba»- Branch protection, revisión obligatoria, firma de commits
- Secretos OIDC/efímeros, mínimo privilegio, nada de larga vida
- Actions/plugins fijados por hash + allowlist
- Runners efímeros y aislados; PRs no confiables sin secretos
- Gates de SAST/SCA/secrets/IaC/imagen en el pipeline
- Firma y verificación de artefactos (Sigstore/SLSA)
- Admisión solo de imágenes firmadas (Hardening de Kubernetes)