Mascota Jacar — leyendo contigo Un portátil cuyos ojos siguen el cursor mientras lees.
Metodologías

SLSA nivel 3: endureciendo la cadena de suministro software

SLSA nivel 3: endureciendo la cadena de suministro software

Actualizado: 2026-05-03

Tras grandes ataques a la cadena de suministro — SolarWinds, Codecov, 3CX — la comunidad consolidó un estándar para evaluar la robustez de cadenas de suministro software: SLSA[1] (Supply-chain Levels for Software Artifacts). SLSA v1.0, publicado en abril de 2023, define cuatro niveles de madurez. Este artículo se centra en el nivel 3, que es el objetivo realista y valioso para la mayoría de equipos.

Puntos clave

  • SLSA organiza la madurez en cuatro niveles: L1 (procedencia básica), L2 (procedencia autenticada), L3 (build aislado) y L4 (dos revisores independientes).
  • El salto L2→L3 elimina los vectores de ataque más comunes: build contamination, malicious developer machine e insider threat.
  • GitHub Actions con reusable workflows y OIDC hace L3 alcanzable sin infraestructura propia.
  • Firmar no sirve de nada si nadie verifica: integrar verificación en el admission controller de Kubernetes es el paso siguiente natural.
  • L3 exige aislamiento del build, no reproducibilidad byte a byte — L4 es aspiracional para la mayoría.

Los cuatro niveles

SLSA v1.0 estructura la madurez así:

  • L1: procedencia básica. El build system genera un atestado indicando qué construyó y a partir de qué.
  • L2: procedencia autenticada. El atestado está firmado por un servicio de build confiable, no por un individuo.
  • L3: build aislado y reproducible. Cada build ocurre en un entorno efímero e independiente, sin influencia de builds anteriores ni de usuarios.
  • L4: dos revisores independientes aprueban cada cambio. Máxima garantía, aspiracional para la mayoría.

La progresión no es lineal — L3 es un salto cualitativo importante desde L2.

Por qué L3 es el objetivo realista

El salto L2→L3 elimina tres vectores de ataque especialmente difíciles de detectar:

  • Build contamination: builds que reutilizan caché o estado de builds previos, permitiendo que un compromiso persista entre builds.
  • Malicious developer machine: un desarrollador compromete su entorno local y sube binarios maliciosos junto con código fuente limpio.
  • Insider threat: un ingeniero interno con acceso al build system puede modificar artefactos sin trazabilidad.

Con L3, cada build corre en un entorno nuevo sin estado previo. El único input es el código fuente, y cualquier anomalía queda rastreable hasta el commit.

Cómo alcanzar L3 con GitHub Actions

GitHub Actions facilita L3 con reusable workflows[2] y OIDC para firma sin secrets[3]. Un pipeline típico L3:

yaml
name: Build and Sign
on:
  push:
    tags: ['v*']

permissions:
  id-token: write   # Para OIDC → Sigstore
  contents: read
  packages: write   # Para publicar a GHCR

jobs:
  build:
    uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.9.0
    with:
      image: ghcr.io/${{ github.repository }}
      registry-username: ${{ github.actor }}
    secrets:
      registry-password: ${{ secrets.GITHUB_TOKEN }}

Este reusable workflow realiza cuatro acciones en secuencia:

  1. Construye la imagen en un runner efímero de GitHub.
  2. Genera un atestado de procedencia según el schema de SLSA[4].
  3. Firma el atestado con OIDC vía Sigstore[5].
  4. Sube imagen + atestado al registry.

Verificación del lado del consumidor:

bash
cosign verify-attestation 
  --certificate-identity-regexp '^https://github.com/tu-org/tu-repo/' 
  --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' 
  ghcr.io/tu-org/tu-imagen:v1.0.0

Si verifica, se confirma que la imagen fue construida por el repositorio específico, en un runner GitHub efímero, a partir del commit indicado, sin intervención humana entre fuente y binario.

Cadena de certificados digitales que ilustra el concepto de cadena de confianza verificada que sustenta SLSA nivel 3

Más allá de GitHub Actions

Otros sistemas CI con capacidades similares:

  • GitLab CI[6] con OIDC y cosign.
  • Buildkite[7] con attestations nativos desde 2023.
  • Tekton + Chains[8] para clusters Kubernetes.
  • Jenkins con plugins de cosign, aunque con integración menos fluida.

En todos los casos, la clave es el binomio build-aislado + firma-anclada-en-identidad-del-pipeline, no en claves compartidas.

Retos operativos

Aunque L3 es alcanzable, hay tres fricciones a anticipar:

  • Verificación en el punto de despliegue. Que alguien firme no sirve si nadie verifica. Integrar verificación en el admission controller de Kubernetes (Kyverno[9], Gatekeeper[10], sigstore-policy-controller[11]) es el siguiente paso natural.
  • Dependencias de terceros. Tu cadena propia puede ser L3, pero si depende de 50 paquetes sin atestados, la cadena real es tan fuerte como su eslabón más débil. Aquí entra la adopción amplia de Sigstore.
  • Reproducibilidad. SLSA L4 exige builds reproducibles byte a byte. L3 pide aislamiento, no reproducibilidad — menos exigente y suficiente para la mayoría de modelos de amenaza.

Plan de acción

Cuatro pasos para equipos que empiezan:

  1. Auditar el estado actual. ¿Los builds son herméticos? ¿Hay acceso humano interactivo al build? ¿Los artefactos están firmados?
  2. Elegir una imagen piloto. Empezar con un componente crítico y migrar su pipeline a L3 antes de replicar.
  3. Adoptar reusable workflows. En lugar de escribir cada paso, usar los de slsa-github-generator[12] — están auditados.
  4. Añadir verificación en cluster. Aunque sea solo como warning al principio, empezar a medir qué imágenes no verifican.

Para contexto sobre por qué SLSA importa ahora, ver ataques a la cadena de suministro. El escaneo de imágenes con Trivy y Grype es complementario: SLSA atestigua procedencia, el escaneo detecta vulnerabilidades conocidas. La integración con Kubernetes 1.27 se completa con admission controllers que verifican los atestados en runtime.

Conclusión

SLSA L3 es alcanzable con herramientas maduras y justifica la inversión para cualquier equipo que produzca software comercial o crítico. El camino técnico existe; lo que falta es la decisión organizativa de invertir en integridad antes del próximo incidente que lo haga urgente.

¿Te ha resultado útil?
[Total: 15 · Media: 4.5]
  1. SLSA
  2. reusable workflows
  3. OIDC para firma sin secrets
  4. schema de SLSA
  5. Sigstore
  6. GitLab CI
  7. Buildkite
  8. Chains
  9. Kyverno
  10. Gatekeeper
  11. sigstore-policy-controller
  12. slsa-github-generator

Escrito por

CEO - Jacar Systems

Apasionado de la tecnología, la infraestructura cloud y la inteligencia artificial. Escribe sobre DevOps, IA, plataformas y software desde Madrid.