Saltar al contenido
Lectura12 minPreview

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.sh

Ya 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ñoHito
1991Grady Booch usa el término "integración continua" en su libro sobre diseño orientado a objetos
Finales de los 90La metodología Extreme Programming, de Kent Beck, populariza integrar y probar varias veces al día
2001Aparece CruiseControl, uno de los primeros servidores de CI de código abierto
2010Jez Humble y David Farley publican el libro Continuous Delivery
2011El proyecto Hudson se bifurca y nace Jenkins, que domina la CI autoalojada durante una década
2019GitHub Actions queda disponible para todos y lleva la CI al mismo lugar donde vive el código
2020El ataque a SolarWinds muestra que el proceso de compilación es un objetivo de primer nivel
2022OWASP 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

LugarQué hace el pipeline
Aplicaciones web y APIsPrueba y despliega en servidores o en la nube con cada fusión
Aplicaciones móvilesCompila, firma y sube versiones a las tiendas
Paquetes de código abiertoPublica en npm, PyPI o Maven con un token de publicación
Imágenes de contenedorConstruye y sube imágenes a un registro como Docker Hub o GHCR
Infraestructura como códigoAplica cambios en la nube con herramientas como Terraform

Conceptos clave

ConceptoQué 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
RunnerMáquina, normalmente temporal, que ejecuta un trabajo
ArtefactoResultado de la construcción: un paquete, un binario, una imagen
SecretoValor sensible que el flujo recibe sin que quede escrito en el código
Cadena de suministroTodo 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:

IdentificadorRiesgo
CICD-SEC-1Mecanismos de control de flujo insuficientes
CICD-SEC-2Gestión de identidades y accesos inadecuada
CICD-SEC-3Abuso de la cadena de dependencias
CICD-SEC-4Ejecución envenenada del pipeline (PPE)
CICD-SEC-5Controles de acceso basados en el pipeline (PBAC) insuficientes
CICD-SEC-6Higiene de credenciales insuficiente
CICD-SEC-7Configuración insegura del sistema
CICD-SEC-8Uso no gobernado de servicios de terceros
CICD-SEC-9Validación incorrecta de la integridad de artefactos
CICD-SEC-10Registro y visibilidad insuficientes

El número no es un ranking estricto de gravedad, sino un recorrido ordenado del ecosistema.