DEVSECOPS OPERACIÓN PIPELINE
← Volver al Índice de Herramientas
Análisis de Dependencias y Cadena de Suministro (SCA)
ETAPA 02 · SCA

¿QUÉ ES Y POR QUÉ ES CRUCIAL?

El software moderno se construye hasta en un 80-90% sobre librerías de código abierto (npm, Maven, PyPI, Go modules). El análisis de componentes de software (SCA) inspecciona el árbol de dependencias -- directas y transitivas -- para detectar versiones con vulnerabilidades conocidas (CVEs) antes de llegar a producción. Esta etapa además incorpora dos prácticas clave de Supply Chain Security: generar un SBOM (inventario exacto de todo lo que compone el artefacto) y firmar criptográficamente ese artefacto para garantizar que lo que se despliega es exactamente lo que se construyó, sin manipulación intermedia.

⚠️ RIESGOS Y AMENAZAS EN ESTA ETAPA:

  • Ejecución remota de código (RCE) como Log4Shell (CVE-2021-44228) en librerías desactualizadas.
  • Ataques a la cadena de suministro por typosquatting o secuestro de cuentas de mantenedores (ej. el backdoor en xz-utils, CVE-2024-3094).
  • Imposibilidad de responder "¿usamos la librería vulnerable X?" en minutos ante un incidente crítico, por no tener un SBOM actualizado.
  • Artefactos de build manipulados en tránsito o en el registry por no verificar firmas ni procedencia (provenance).

🧰 CATÁLOGO DE HERRAMIENTAS DESTACADAS

OWASP Dependency-Check

Open Source (Apache-2.0)
Mantenido por: OWASP Foundation

Analizador de dependencias del proyecto OWASP que compara componentes Java, .NET, Node.js, Python y Ruby contra la base de datos NVD (National Vulnerability Database) y OSS Index.

$ dependency-check --project 'App' --scan .
🔗 VER REPOSITORIO OFICIAL

Trivy (SCA Mode)

Open Source (Apache-2.0)
Mantenido por: Aqua Security

Escáner integral y extremadamente veloz de Aqua Security para dependencias de lenguaje, paquetes de SO y manifiestos de proyecto; también puede generar SBOM en formato CycloneDX o SPDX en la misma corrida.

$ trivy fs --scanners vuln .
🔗 VER REPOSITORIO OFICIAL

Snyk Open Source

Freemium (requiere cuenta Snyk) / Enterprise
Mantenido por: Snyk Ltd.

Plataforma de seguridad que identifica vulnerabilidades y problemas de licenciamiento en paquetes de terceros, y puede generar Pull Requests automáticos de corrección (fix PRs).

$ snyk test
🔗 VER REPOSITORIO OFICIAL

OSV-Scanner

Open Source (Apache-2.0)
Mantenido por: Google

Herramienta desarrollada por Google que consulta la base de datos abierta y federada OSV.dev (alimentada por GitHub Security Advisories, PyPA, Go, etc.) para detectar vulnerabilidades en archivos lock de dependencias.

$ osv-scanner -r .
🔗 VER REPOSITORIO OFICIAL

Syft (SBOM)

Open Source (Apache-2.0)
Mantenido por: Anchore

Genera un SBOM (Software Bill of Materials) completo -- en formato CycloneDX, SPDX o Syft JSON -- a partir de código fuente, un directorio o una imagen de contenedor. Es el complemento natural de Grype para vulnerabilidades.

$ syft dir:. -o cyclonedx-json=sbom.json
🔗 VER REPOSITORIO OFICIAL

Cosign (Sigstore)

Open Source (Apache-2.0)
Mantenido por: Sigstore / OpenSSF

Parte del proyecto Sigstore (OpenSSF): firma y verifica criptográficamente imágenes de contenedor y artefactos de build, permitiendo comprobar en el pipeline de despliegue que el artefacto no fue alterado y proviene de un build confiable (alineado con el nivel SLSA 2+).

$ cosign sign --key cosign.key mi-app:latest
🔗 VER REPOSITORIO OFICIAL

🔧 INTEGRACIÓN EN PIPELINES DE CI/CD

Ejemplos listos para copiar y adaptar. El objetivo es que el job falle (exit code ≠ 0) y bloquee el merge/deploy cuando aparece un hallazgo de severidad alta -- ese es el "gate" real de DevSecOps.

🐙 GITHUB ACTIONS
.github/workflows/*.yml
name: sca-supply-chain
on: [push, pull_request]

jobs:
  sca-scan:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v4

      - name: Trivy - Vulnerability scan + SBOM
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: 'fs'
          scan-ref: '.'
          format: 'cyclonedx'
          output: 'sbom.cdx.json'
          exit-code: '1'
          severity: 'CRITICAL,HIGH'

      - name: Upload SBOM como artifact
        uses: actions/upload-artifact@v4
        with:
          name: sbom
          path: sbom.cdx.json
🔷 AZURE DEVOPS
azure-pipelines.yml
trigger:
  - main
pr:
  - main

pool:
  vmImage: 'ubuntu-latest'

steps:
  - checkout: self

  - script: |
      curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
      trivy fs --scanners vuln --severity CRITICAL,HIGH --exit-code 1 .
      trivy fs --format cyclonedx --output sbom.cdx.json .
    displayName: 'Trivy - SCA scan + SBOM (CycloneDX)'

  - publish: sbom.cdx.json
    artifact: sbom
    displayName: 'Publicar SBOM como artifact del pipeline'
💡 BUENAS PRÁCTICAS PARA INTEGRACIÓN EN CI/CD
  • Bloquear builds que contengan vulnerabilidades con severidad CRÍTICA o ALTA sin excepción justificada.
  • Mantener archivos lock (package-lock.json, pom.xml, go.sum) actualizados y auditados; usar bots como Dependabot o Renovate.
  • Generar un SBOM en cada build de release y conservarlo -- es lo que permite responder rápido ante el próximo Log4Shell.
  • Firmar artefactos de producción (cosign) y validar la firma antes de desplegar (política de admission control).