Skip to content
Home SCA Tools OWASP Dependency-Track
OWASP Dependency-Track

OWASP Dependency-Track

Category: SCA
License: Free (Open-Source, Apache 2.0)
Suphi Cankurt
Suphi Cankurt
AppSec Enthusiast
Updated February 7, 2026
4 min read
0 Comments

OWASP Dependency-Track is an open-source platform for continuous component analysis across software portfolios. With 3.6k GitHub stars and 167 contributors, it is the leading open-source solution for SBOM-based vulnerability management.

Dependency-Track dashboard showing portfolio risk metrics with vulnerability counts and policy violation status

Unlike SCA scanners that run at build time and produce point-in-time reports, Dependency-Track maintains a persistent inventory of all components across your applications. When a new CVE is published, the platform immediately identifies every affected project without requiring rescans.

What is OWASP Dependency-Track?

Dependency-Track ingests SBOMs in CycloneDX or SPDX format and continuously correlates components against NVD, GitHub Advisories, Sonatype OSS Index, OSV, and optionally Snyk. It tracks component versions, licenses, and security posture across projects, giving you a unified view of organizational risk.

SBOM Lifecycle Management
Ingests SBOMs as living documents. Tracks versions over time, maintains history of component changes, and supports CycloneDX and SPDX formats from any generation tool.
Continuous Monitoring
Correlates your component inventory against updated vulnerability feeds around the clock. When a new CVE affects a library you use, alerts fire across all affected projects automatically.
Portfolio Risk Tracking
Dashboards show risk trends, vulnerable component counts, and policy violations across your entire application portfolio. Filter by project, team, tag, or component.

Key features

Vulnerability data sources

SourceCoverage
NVD (NIST)All CVEs in the National Vulnerability Database
GitHub Security AdvisoriesCommunity-reviewed advisories for GitHub ecosystems
Sonatype OSS IndexJava, JavaScript, .NET, and Go vulnerability data
OSVOpen Source Vulnerabilities across multiple ecosystems
Snyk (optional)Additional vulnerability intelligence with API key
VulnDB (optional)Commercial vulnerability intelligence

Supported SBOM formats

FormatSupport
CycloneDX JSONFull support (preferred)
CycloneDX XMLFull support
SPDX JSONImport and export
SPDX tag-valueImport only

Continuous vulnerability monitoring

Rather than scanning on-demand, Dependency-Track continuously correlates your component inventory against updated vulnerability feeds. When a new CVE affects a library you use, alerts fire automatically across all affected projects. No rescan needed.

Multi-source vulnerability intelligence

The platform aggregates data from NVD, GitHub Security Advisories, Sonatype OSS Index, OSV, and optionally Snyk. This multi-source approach catches vulnerabilities that any single database might miss.

Dependency-Track vulnerability audit view showing findings with severity levels, analysis state, and component details

Component inventory

Dependency-Track component inventory showing library versions, licenses, and risk classifications across projects

Policy engine

Define organizational policies for automated vulnerability triage. Policies can suppress false positives, escalate critical findings, or require approval for components with specific risk profiles. This reduces noise and focuses attention on actionable findings.

API-first architecture

Every feature is accessible through a REST API. Webhooks notify external systems of new vulnerabilities and policy violations. This enables deep integration with CI/CD pipelines, ticketing systems, and custom dashboards.

Installation

Deploy Dependency-Track using Docker Compose for evaluation or production:

# Create directories
mkdir dependency-track && cd dependency-track

# Download Docker Compose file
curl -LO https://dependencytrack.org/docker-compose.yml

# Start the platform
docker compose up -d

# Access at http://localhost:8080
# Default credentials: admin / admin

For production deployments with external database:

# docker-compose.yml
version: '3.8'
services:
  dtrack-api:
    image: dependencytrack/apiserver:latest
    environment:
      - ALPINE_DATABASE_MODE=external
      - ALPINE_DATABASE_URL=jdbc:postgresql://postgres:5432/dtrack
      - ALPINE_DATABASE_DRIVER=org.postgresql.Driver
      - ALPINE_DATABASE_USERNAME=dtrack
      - ALPINE_DATABASE_PASSWORD=changeme
    volumes:
      - dtrack-data:/data
    ports:
      - "8081:8080"

  dtrack-frontend:
    image: dependencytrack/frontend:latest
    environment:
      - API_BASE_URL=http://localhost:8081
    ports:
      - "8080:8080"

  postgres:
    image: postgres:15
    environment:
      - POSTGRES_DB=dtrack
      - POSTGRES_USER=dtrack
      - POSTGRES_PASSWORD=changeme
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  dtrack-data:
  postgres-data:

Uploading SBOMs

Generate SBOMs with tools like Syft, CycloneDX CLI, or build plugins:

# Generate SBOM with Syft
syft dir:./my-project -o cyclonedx-json > sbom.json

# Upload via CLI tool
dtrack-cli sbom upload \
  --server http://localhost:8080 \
  --api-key $DTRACK_API_KEY \
  --project "My Project" \
  --version "1.0.0" \
  --sbom sbom.json

# Upload via curl
curl -X POST http://localhost:8080/api/v1/bom \
  -H "X-Api-Key: $DTRACK_API_KEY" \
  -H "Content-Type: application/json" \
  -d @sbom.json

CI/CD Integration

GitHub Actions

name: SBOM Upload to Dependency-Track
on:
  push:
    branches: [main]

jobs:
  sbom-upload:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Generate SBOM
        uses: anchore/sbom-action@v0
        with:
          format: cyclonedx-json
          output-file: sbom.json

      - name: Upload to Dependency-Track
        uses: DependencyTrack/gh-upload-sbom@v3
        with:
          server-url: ${{ secrets.DTRACK_URL }}
          api-key: ${{ secrets.DTRACK_API_KEY }}
          project-name: ${{ github.repository }}
          project-version: ${{ github.sha }}
          sbom-file: sbom.json

GitLab CI

stages:
  - build
  - security

generate-sbom:
  stage: build
  image: anchore/syft:latest
  script:
    - syft dir:. -o cyclonedx-json > sbom.json
  artifacts:
    paths:
      - sbom.json

upload-sbom:
  stage: security
  image: curlimages/curl:latest
  script:
    - |
      curl -X POST "${DTRACK_URL}/api/v1/bom" \
        -H "X-Api-Key: ${DTRACK_API_KEY}" \
        -H "Content-Type: application/json" \
        -d @sbom.json
  dependencies:
    - generate-sbom

Jenkins Pipeline

pipeline {
    agent any
    stages {
        stage('Generate SBOM') {
            steps {
                sh 'syft dir:. -o cyclonedx-json > sbom.json'
            }
        }
        stage('Upload to Dependency-Track') {
            steps {
                dependencyTrackPublisher(
                    artifact: 'sbom.json',
                    projectName: 'My Project',
                    projectVersion: "${BUILD_NUMBER}",
                    synchronous: true
                )
            }
        }
    }
}

Setup

1
Deploy with Docker Compose – Run curl -LO https://dependencytrack.org/docker-compose.yml && docker compose up -d. Access the UI at http://localhost:8080.
2
Generate SBOMs – Use tools like Syft, CycloneDX CLI, or build plugins to generate SBOMs from your projects.
3
Upload SBOMs – Upload via the web UI, REST API, or the dtrack-cli tool. Set up CI/CD integration to upload automatically on each build.
4
Configure alerts – Set up notification channels (Slack, Teams, email, webhooks) and define policies for automated triage.

When to use Dependency-Track

Dependency-Track is the right choice for organizations managing multiple applications that need centralized, continuous visibility into component risk.

Strengths:

  • Continuous monitoring catches new CVEs without rescans
  • SBOM-first approach with CycloneDX and SPDX support
  • Multi-source vulnerability intelligence (NVD, GitHub, OSS Index, OSV)
  • Portfolio-wide risk tracking and policy engine
  • Free and open-source (Apache 2.0)

Limitations:

  • Not a scanner itself; requires external SBOM generation
  • Requires infrastructure to host (Docker, Kubernetes)
  • No automated fix PRs or remediation workflows
Best for
Organizations managing multiple applications that need continuous component monitoring. Use alongside a CI/CD scanner like Grype or Trivy: scan at build time, upload SBOMs to Dependency-Track for ongoing monitoring.

How it compares:

vs.Key difference
OWASP Dependency-CheckDependency-Check is a point-in-time scanner. Dependency-Track is a continuous monitoring platform. Many teams use both together.
DefectDojoDefectDojo aggregates findings from multiple security tools. Dependency-Track focuses specifically on component/SBOM tracking with deeper vulnerability correlation.
GrypeGrype is a fast CLI scanner for CI/CD. Dependency-Track adds the persistent tracking layer that point-in-time scanners lack.

Frequently Asked Questions

What is OWASP Dependency-Track?
Dependency-Track is an open-source platform that continuously monitors your software portfolio for vulnerabilities by ingesting and tracking SBOMs. Unlike scanners that run at build time, it maintains a persistent component inventory and alerts you when new CVEs affect your deployed software.
How is Dependency-Track different from Dependency-Check?
Dependency-Check is a point-in-time scanner that runs during builds. Dependency-Track is a continuous monitoring platform that ingests SBOMs and watches for new vulnerabilities over time. Many teams use both: scan in CI/CD with Dependency-Check or Grype, upload SBOMs to Dependency-Track for ongoing monitoring.
Is Dependency-Track free?
Yes, fully free and open-source under the Apache 2.0 license. It is an OWASP Flagship Project with 3.6k GitHub stars.
What SBOM formats does Dependency-Track support?
Dependency-Track natively supports CycloneDX (preferred) and SPDX formats. SBOMs can be generated by tools like Syft, CycloneDX CLI, or build plugins, then uploaded via API or the web UI.

Complement with SAST

Pair dependency scanning with static analysis for broader coverage.

See all SAST tools

Comments

Powered by Giscus — comments are stored in GitHub Discussions.