El pipeline de CI/CD como superficie de ataque
Cada vez que alguien hace un commit en un proyecto moderno, una cadena de máquinas se pone a trabajar sola: descarga el código, instala dependencias, compila, ejecuta pruebas, empaqueta y, muchas veces, despliega en producción. A esa cadena se le llama pipeline de CI/CD. Esta lección explica qué es, de dónde viene, por qué se volvió un objetivo de ataque y qué es el OWASP Top 10 que recorrerá en el curso.
Qué es CI/CD
Un pipeline (en español, "tubería") es una secuencia automática de pasos por la que pasa el software, como una línea de ensamblaje. Las siglas describen sus dos mitades:
- Integración continua (CI, continuous integration): cada cambio se integra y se prueba de forma automática, varias veces al día, en lugar de juntar semanas de trabajo en una sola entrega.
- Entrega o despliegue continuo (CD, continuous delivery o continuous deployment): lo que pasa las pruebas queda listo para publicarse, o se publica directamente, sin pasos manuales.
Las piezas típicas son:
- Un sistema de control de versiones como GitHub o GitLab, donde vive el código.
- Un orquestador que lee archivos de configuración y lanza trabajos: GitHub Actions, GitLab CI, Jenkins, Azure Pipelines o CircleCI.
- Runners o agentes: las máquinas donde de verdad se ejecutan los pasos.
- Registros de artefactos: donde se guardan paquetes, imágenes de contenedor o binarios.
- Secretos: tokens y claves para publicar, desplegar o hablar con la nube.
Un flujo de GitHub Actions mínimo se ve así:
name: ci
on: [push, pull_request]
jobs:
pruebas:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ./scripts/pruebas.shYa hay tres decisiones de seguridad escondidas: quién puede disparar el flujo, qué código de terceros se ejecuta (actions/checkout) y con qué permisos corre. En la lección siguiente verá la anatomía completa de este archivo, clave por clave.
Breve historia
| Año | Hito |
|---|---|
| 1991 | Grady Booch usa el término "integración continua" en su libro sobre diseño orientado a objetos |
| Finales de los 90 | La metodología Extreme Programming, de Kent Beck, populariza integrar y probar varias veces al día |
| 2001 | Aparece CruiseControl, uno de los primeros servidores de CI de código abierto |
| 2010 | Jez Humble y David Farley publican el libro Continuous Delivery |
| 2011 | El proyecto Hudson se bifurca y nace Jenkins, que domina la CI autoalojada durante una década |
| 2019 | GitHub Actions queda disponible para todos y lleva la CI al mismo lugar donde vive el código |
| 2020 | El ataque a SolarWinds muestra que el proceso de compilación es un objetivo de primer nivel |
| 2022 | OWASP publica el Top 10 CI/CD Security Risks |
Por qué el pipeline es un objetivo tan atractivo
Fíjese en lo que reúne un pipeline: acceso de escritura al código, secretos de producción, permisos en la nube y la capacidad de firmar y publicar software en nombre de la empresa. Para un atacante es mucho más rentable comprometer el pipeline de un proveedor que atacar uno por uno a sus miles de clientes. Eso es un ataque a la cadena de suministro de software.
El caso más citado es el de SolarWinds en 2020: los atacantes alteraron el proceso de compilación de un producto de monitoreo y el código malicioso se distribuyó firmado, como una actualización legítima, a miles de organizaciones. Ninguna revisión del código fuente lo habría encontrado.
Para quien defiende, esto cambia el trabajo diario: AppSec revisa flujos igual que revisa código, plataforma decide qué permisos tiene cada runner y el SOC necesita los registros del sistema de CI para investigar.
Dónde se usa
| Lugar | Qué hace el pipeline |
|---|---|
| Aplicaciones web y APIs | Prueba y despliega en servidores o en la nube con cada fusión |
| Aplicaciones móviles | Compila, firma y sube versiones a las tiendas |
| Paquetes de código abierto | Publica en npm, PyPI o Maven con un token de publicación |
| Imágenes de contenedor | Construye y sube imágenes a un registro como Docker Hub o GHCR |
| Infraestructura como código | Aplica cambios en la nube con herramientas como Terraform |
Conceptos clave
| Concepto | Qué significa |
|---|---|
| Flujo (workflow) | Archivo YAML que define qué se ejecuta y cuándo |
| Disparador (trigger) | Evento que inicia el flujo: un push, un pull request, un horario |
| Trabajo (job) | Grupo de pasos que corre en un mismo runner |
| Paso (step) | Una acción reutilizable o un comando de shell |
| Runner | Máquina, normalmente temporal, que ejecuta un trabajo |
| Artefacto | Resultado de la construcción: un paquete, un binario, una imagen |
| Secreto | Valor sensible que el flujo recibe sin que quede escrito en el código |
| Cadena de suministro | Todo lo que interviene entre el código fuente y lo que recibe el usuario |
El OWASP Top 10 de riesgos de seguridad en CI/CD
OWASP, la fundación sin fines de lucro conocida por su Top 10 de aplicaciones web, publicó en 2022 el Top 10 CI/CD Security Risks, que sigue siendo, hasta donde se sabe al preparar este curso, la edición vigente; revise la página oficial por si aparece una actualización. Los diez riesgos son:
| Identificador | Riesgo |
|---|---|
| CICD-SEC-1 | Mecanismos de control de flujo insuficientes |
| CICD-SEC-2 | Gestión de identidades y accesos inadecuada |
| CICD-SEC-3 | Abuso de la cadena de dependencias |
| CICD-SEC-4 | Ejecución envenenada del pipeline (PPE) |
| CICD-SEC-5 | Controles de acceso basados en el pipeline (PBAC) insuficientes |
| CICD-SEC-6 | Higiene de credenciales insuficiente |
| CICD-SEC-7 | Configuración insegura del sistema |
| CICD-SEC-8 | Uso no gobernado de servicios de terceros |
| CICD-SEC-9 | Validación incorrecta de la integridad de artefactos |
| CICD-SEC-10 | Registro y visibilidad insuficientes |
El número no es un ranking estricto de gravedad, sino un recorrido ordenado del ecosistema.