Ir al contenido

Dependency-Track - Análisis continuo de SBOM

Dependency-Track - Análisis continuo de SBOM

Dependency-Track (un proyecto insignia de OWASP) es una plataforma para gestión de riesgo de cadena de suministro de software continua. Su idea definitoria: en lugar de escanear tus dependencias una vez en tiempo de compilación, carga un SBOM de CycloneDX por proyecto y la plataforma re-evalúa continuamente esos componentes conforme se divulgan nuevas vulnerabilidades. Cuando se publica una CVE, inmediatamente sabes qué aplicaciones contienen el componente afectado — sin recompilar o rescanear nada.

Despliegue

MétodoComando
Docker Composecurl -LO https://dependencytrack.org/docker-compose.yml && docker compose up -d
Contenedor (API)docker run -p 8081:8080 dependencytrack/apiserver
FrontendContenedor dependencytrack/frontend (UI por defecto en 8080)
KubernetesGráfico Helm disponible
Requisitos~4GB+ RAM; PostgreSQL para producción

Conceptos principales

TérminoSignificado
ProyectoUna aplicación/servicio que rastrear
ComponenteUna dependencia dentro de un proyecto
SBOMLista de materiales de CycloneDX que cargas
VulnerabilidadUna CVE/aviso que afecta un componente
PolíticaReglas que cierran riesgo (licencia, severidad, edad)
PortafolioTodos los proyectos, agregados

Carga de un SBOM

Genera con Syft o herramientas cyclonedx-*, luego carga vía API:

# Genera un SBOM de CycloneDX
syft dir:. -o cyclonedx-json > bom.json

# Carga a Dependency-Track
curl -X POST "http://localhost:8081/api/v1/bom" \
  -H "X-Api-Key: $DT_API_KEY" \
  -F "project=$PROJECT_UUID" \
  -F "bom=@bom.json"
Punto finalPropósito
POST /api/v1/bomCarga un SBOM
GET /api/v1/projectLista proyectos
PUT /api/v1/projectCrea un proyecto
GET /api/v1/vulnerability/project/{uuid}Vulnerabilidades para un proyecto
GET /api/v1/metrics/project/{uuid}/currentMétricas de riesgo actuales

Fuentes de inteligencia de vulnerabilidades

FuenteProporciona
NVDDatos de CVE
Avisos de GitHubAvisos específicos del ecosistema
OSVBase de datos de vulnerabilidades de código abierto
VulnDBComercial (opcional)
InternoTus propios avisos

La plataforma refleja estos flujos y re-analiza cada componente almacenado contra ellos en un cronograma.

Motor de políticas

Condición de políticaEjemplo
SeveridadFalla si hay vulnerabilidad CRITICAL
LicenciaBloquea GPL en productos propietarios
Edad del componenteMarca dependencias no mantenidas por N años
CoordenadasProhíbe un paquete/versión específica
CWEMarca clases de debilidad específicas

Las políticas producen violaciones que aparecen junto a vulnerabilidades, así que riesgo de licencia e higiene se rastrean en el mismo lugar.

Integración en CI/CD

# En un pipeline: build → generar SBOM → cargar → cerrar
syft dir:. -o cyclonedx-json > bom.json
curl -X POST "$DT_URL/api/v1/bom" -H "X-Api-Key: $DT_API_KEY" \
  -F "project=$PROJECT_UUID" -F "bom=@bom.json"

# Sondea el resultado del análisis y falla en violaciones de política
IntegraciónNota
Jenkins/GitHub ActionsComplementos/acciones oficiales disponibles
WebhooksNotifica Slack/Teams/Jira en nuevos hallazgos
VEXRegistra decisiones de explotabilidad (no afectado, etc.)

Clasificación y VEX

AcciónSignificado
No afectadoLa ruta de código vulnerable no es alcanzable
Falso positivoLa detección es incorrecta
ResueltoArreglado en este proyecto
SuprimidoRiesgo aceptado con justificación

Registrar estos como VEX mantiene el ruido bajo y documenta decisiones para auditores.

Dependency-Track vs escáneres puntuales

AspectoDependency-TrackGrype/TrivySocket
ModeloPlataforma SBOM continuaEscaneo puntualDetección de malware de comportamiento
Re-evaluaciónAutomática en CVEs nuevasSolo cuando reejecutasEn cambios de dependencia
Vista de portafolioSí (todos los proyectos)Por escaneoPor PR
Mejor paraRiesgo de cadena de suministro a nivel de organizaciónEscaneo CIDetección de paquete malicioso

Aliméntalo con SBOMs de Syft; empareja con Grype para escaneo en tiempo de compilación y Socket para detección de paquete malicioso.

Recursos