Ir al contenido

SCA: Análisis de Dependencias con Docker Scout

SCA (Software Composition Analysis) es el proceso de analizar las dependencias de terceros (librerías, paquetes, frameworks) para encontrar vulnerabilidades de seguridad conocidas (CVEs).

En HERA, nuestra herramienta principal para SCA es Docker Scout, que se integra directamente en nuestro pipeline para analizar las imágenes de contenedor.


Docker Scout se ejecuta en la etapa de package de nuestro pipeline, justo después de que la imagen de tu aplicación ha sido construida y subida a nuestro registro.

  1. Construcción de Imagen: El pipeline construye tu Dockerfile.
  2. Análisis de Capas: Docker Scout descompone la imagen en sus capas y genera un SBOM (Software Bill of Materials), que es un inventario completo de todo el software dentro de la imagen. Esto incluye:
    • El sistema operativo base (ej. Alpine, Debian).
    • Paquetes del sistema instalados (ej. curl, openssl).
    • El runtime del lenguaje (ej. Node.js, Python, JRE).
    • Las dependencias de tu aplicación (ej. paquetes de npm, pip, maven).
  3. Cruce con Bases de Datos de CVEs: Compara cada componente del SBOM con múltiples bases de datos de vulnerabilidades.
  4. Reporte y Quality Gate: Genera un reporte y, lo más importante, hace fallar el pipeline si se encuentran vulnerabilidades que violan nuestra política de seguridad.

El job sca-docker-scout es un paso mandatorio del Golden Pipeline y corre después del build de la imagen. El equipo de producto no escribe este job a mano — se hereda del template vía include:.

AtributoValor
Stagepackage (o security post-package, según versión del template)
Imagen baseDocker CLI con Docker-in-Docker (dind)
Dependencianeeds: docker-build — la imagen debe estar construida antes
Comandodocker scout cves <imagen>:<tag> --exit-code --only-severity critical,high
Variables inyectadasIMAGE_NAME, CI_COMMIT_SHA (ambas provistas por el template y GitLab)
allow_failurefalse — bloqueante
Quality GatePipeline falla si se detectan 1+ vulnerabilidades critical o high
FlagEfecto
--exit-codeEl comando termina con código de error si hay vulnerabilidades → el job de GitLab CI falla
--only-severity critical,highSolo Critical y High bloquean; Medium y Low se reportan pero no rompen el pipeline

Si tu pipeline falla en el paso de sca-docker-scout, sigue el flujo de remediación:

Flujo de Remediación — Docker Scout
Ejemplo de reporte en el pipeline
2
CRITICAL
5
HIGH
12
MEDIUM
CRITICAL CVE-2023-4567 lodash@4.17.20 → Fix: lodash@4.17.21
HIGH CVE-2023-8901 openssl@3.0.1 → Fix: actualizar imagen base
1
Identifica la fuente
Dependencia de la App package.json, requirements.txt, pom.xml
Paquete del Sistema Imagen base en tu Dockerfile
2
Aplica la corrección
Para dependencias de la app
npm install lodash@4.17.21
Para paquetes del sistema
FROM node:20.11.1-alpine # ← versión parcheada
3
Haz commit y push — el pipeline se re-ejecuta
Si la corrección fue exitosa, el job sca-docker-scout pasará automáticamente.
Mensaje clave Vulnerabilidad detectada → pipeline falla → equipo notificado → fix → re-scan → deploy.

La elección de Docker Scout como herramienta SCA estándar de HERA fue una decisión arquitectónica deliberada. El mercado ofrece alternativas válidas — Trivy (open source de Aqua Security) y Snyk (SaaS comercial) son las más populares. Esta sección explica el razonamiento.

CriterioDocker ScoutTrivySnyk
ModeloSaaS integrado a Docker Hub + CLIOpen source (binario standalone)SaaS comercial
CostoIncluido en Docker Business / ProGratuitoSubscription por desarrollador
Setup en pipelineTrivial — viene con Docker CLITrivial — descargar binarioRequiere cuenta + token
Cobertura SCAVulns OS + dependencias de aplicaciónVulns OS + deps + IaC + secretsVulns OS + deps + licenses + IaC
Cobertura SASTNoLimitadoSí (Snyk Code)
Bases de datos CVENVD + GitHub Advisory + propietariasNVD + GitHub Advisory + AquaNVD + Snyk DB propietaria
SBOM nativoSí (SPDX, CycloneDX)Sí (SPDX, CycloneDX)Sí (CycloneDX)
Integración con Docker HubNativaManualManual
Integración con GCPCompatible (no nativa)Compatible (no nativa)Compatible (no nativa)
Velocidad de escaneoRápidaMuy rápidaRápida
Reporting / DashboardDocker Scout web UICLI (sin dashboard nativo)Snyk web UI completo
Vendor lock-inBajo (genera SBOM portable)NingunoMedio-alto
Precio enterpriseIncluido en suscripción Docker$0 (open source)$$$ por usuario
RazónDetalle
1. Integración nativa con DockerHERA ya usa Docker en todo el pipeline. Docker Scout no requiere herramientas adicionales — docker scout cves funciona out-of-the-box.
2. Costo predecibleIncluido en la suscripción de Docker que la organización ya tiene. No hay licencia adicional por desarrollador como Snyk.
3. SBOM portableDocker Scout genera SBOMs en formato estándar (SPDX, CycloneDX), evitando vendor lock-in. Si migramos a Trivy mañana, los SBOMs siguen siendo válidos.
4. Calidad de la base de CVEsCombina NVD + GitHub Advisory + bases propietarias, comparable a Snyk en cobertura.
5. Operación simpleUn solo comando, una sola herramienta para mantener. Trivy es excelente pero requiere gestionar binarios y actualizaciones.
6. Curva de aprendizajeDocker es lenguaje universal en HERA. Cualquier dev entiende docker scout sin documentación adicional.

Cuándo evaluaríamos cambiar de herramienta

Sección titulada «Cuándo evaluaríamos cambiar de herramienta»

Estas son las señales que dispararían una revisión de la decisión:

TriggerAcción
Docker Scout deja de soportar SBOM CycloneDX o SPDXEvaluar Trivy
Costos de Docker suscripción aumentan significativamenteEvaluar Trivy (open source)
Necesitamos SAST + SCA en una sola herramientaEvaluar Snyk Code
Compliance requiere análisis de licencias avanzadoEvaluar Snyk Open Source o FOSSA
Necesidades de IaC scanning crecenTrivy ya cubre IaC; sería complemento

Docker Scout se integra naturalmente con el resto de la cadena DevSecOps de HERA:

HerramientaFunciónConexión con Docker Scout
SonarQubeSAST (código fuente)Complementario — Docker Scout no hace SAST
TruffleHogDetección de secretosComplementario — diferentes capas
OWASP ZAPDAST (runtime)Complementario — diferentes momentos del SDLC
CosignImage signingDocker Scout SBOM + Cosign attestation = supply chain completa
Syft + GrypeGeneración y análisis de SBOMsFunciona junto, no compite