ICTU logo

ICTU Toolgids - Dependency-Track

Handleidingen en tips bij het gebruik van Dependency-Track.

Versie v5.4.0, 17-09-2026

Word cloud met woorden die veel voorkomen in het document zoals Kwaliteitsaanpak, Realisatie, ICTU, Software en Overheid

Introductie Toolgids

Voor de softwareontwikkeling adviseert ICTU specifieke tools die de softwarekwaliteit controleren. Zie M16: Het project gebruikt tools voor vastgestelde taken.

Alle tools hebben eigen documentatie online. Voor sommige tools is deze online documentatie niet toereikend. Deze toolgids biedt praktische handleidingen, stappenplannen, verdiepingen en referenties, ter aanvulling op de officiële documentatie.

Heb je een verbetersuggestie? Dien een issue in via https://github.com/ICTU/Kwaliteitsaanpak/issues/new of volg de instructies op de readme-pagina om zelf bij te dragen.

Dependency-Track

Deze toolgids geeft achtergrondinformatie bij het gebruik van Dependency-Track binnen softwareontwikkelprojecten. De pagina is bedoeld als aanvulling op de officiële Dependency-Track-documentatie.

Dependency-Track Verdieping en Begrippen

Dependency-Track algemeen

Dependency-Track is een open-source tool die de softwarecompositie analyseert van softwareontwikkelprojecten.

Het inventariseert projecten en scant de componenten periodiek op kwetsbaarheden, losstaand van de pipeline.

Dependency-Track is een applicatie die een SBoM ontvangt en securitydatabase(s) periodiek bevraagt, om te bepalen of componenten in de SBoM kwetsbaarheden bevatten.

In een SBoM kunnen zowel container images als softwarebibliotheken worden opgenomen.

Ook al lijken de namen sterk op elkaar, deze tool moet niet verward worden met de onderstaande vergelijkbare tool Dependency-Check.

Ze hebben overlap maar ook verschillen.

Geschiedenis en achtergrond

Dependency-Track is een OWASP-project bedacht door Steve Springett.

Volgens de OWASP-projectpagina bestaat Dependency-Track sinds 2013 en is het ontwikkeld om Bill(s) of Materials te analyseren op cybersecurity-risico's.

Dependency-Track is een OWASP Flagship Project en wordt ontwikkeld door een internationale groep vrijwilligers.

De software valt onder de Apache 2.0-licentie.

Dependency-Track is nauw verbonden met CycloneDX, tevens een OWASP-project.

CycloneDX is een standaard voor Bill(s) of Materials en wordt eveneens binnen de OWASP-context gebruikt.

Dependency-Track consumeert en produceert CycloneDX SBoM's en CycloneDX VEX-documenten.

Bronnen:

Waarvoor gebruik je Dependency-Track?

Dependency-Track wordt vooral gebruikt voor continue software supply chain monitoring.

Dependency-Track is vooral nuttig wanneer meerdere applicaties, teams of leveranciers centraal bewaakt moeten worden.

Voor één losse build kan een pipeline-scanner voldoende lijken, maar voor portfoliobreed inzicht is een centrale SBoM-gebaseerde applicatie beter geschikt.

Wat doet Dependency-Track niet?

Dependency-Track is geen vervanging voor alle securitytesting.

Dependency-Track doet niet automatisch het volgende:

Dependency-Track levert signalen, bevindingen en beleidsondersteuning.

De beoordeling en opvolging blijven onderdeel van het ontwikkel-, beheer- en securityproces.

Verschil met vergelijkbare tools

Dependency-Track wordt regelmatig verward met andere tools.

De namen lijken soms op elkaar, maar het doel verschilt.

Tool of standaardWat is het?Belangrijk verschil
Dependency-TrackPlatform voor SBoM-analyse en continue monitoringBewaart SBoM's en monitort projecten centraal over tijd
Dependency-CheckSCA-tool die projectdependencies onderzoekt op bekende kwetsbaarhedenDraait meestal als CLI, build-plugin of pipeline-stap
CycloneDXStandaard voor Bills of MaterialsIs geen dashboard of vulnerability management platform, maar een formaat en ecosysteem
SBoM-generatorTool die een SBoM maaktGenereert input voor Dependency-Track, maar bewaakt de portfolio niet zelf

Dependency-Check probeert kwetsbaarheden in projectdependencies te detecteren en koppelt dependencies onder meer aan CPE's en CVE's.

Dependency-Track werkt anders: het gebruikt SBoM's als centrale input en bewaakt componentgebruik over projecten en versies heen.

Bronnen:

Belangrijkste kenmerken

Dependency-Track heeft onder meer de volgende kenmerken:

Bronnen:

Begrippen

SBoM

SBoM staat voor Software Bill of Materials en is te vergelijken met aan pakbon uit de logistiek.

Een SBoM is een overzicht van componenten, bibliotheken en andere softwareonderdelen die in een applicatie of systeem worden gebruikt.

Een goede SBoM bevat bij voorkeur minimaal:

In de Kwaliteitsaanpak is het gebruik van tools en het genereren van een SBoM een maatregel.

⚠️ Let op

Dependency-Track hanteert de naam project voor de verzameling van dezelfde SBoM's die alleen verschillen in versie.

Dit kan tot verwarring leiden.

Je kunt bijvoorbeeld voor iedere release een SBoM genereren van de front-end en de back-end van je project.

Dependency-Track ziet dit dan als twee losse 'projects'.

Project

In Dependency-Track is een project de administratieve eenheid waaronder componenten, versies, bevindingen, policies en metrics worden geregistreerd.

Een project in Dependency-Track is dus niet altijd hetzelfde als een Jira-project, Git-repository of softwareontwikkelproject.

In de praktijk komt een Dependency-Track-project vaak overeen met een applicatie, service, component of releasebaar product.

Let op: zeg niet dat Dependency-Track "een SBoM een project noemt". Nauwkeuriger is:

> Dependency-Track beheert projecten en projectversies. Een SBoM wordt geüpload naar een project of projectversie en beschrijft de componenten daarvan.

Dit onderscheid voorkomt verwarring. Een project kan meerdere versies hebben, en per versie kan een nieuwe SBoM worden aangeleverd.

Bronnen:

Dependency

Softwareontwikkelprojecten gebruiken extern softwarepakketten (ook wel bibliotheken of libraries) om bepaalde generieke functionaliteit niet zelf te hoeven bouwen, denk bijvoorbeeld aan een log-functionaliteit.

Omdat de software afhankelijk is van deze software worden het, in de context van een softwareontwikkelproject, dependencies genoemd.

In Dependency-Track wordt de term component hiervoor gebruikt.

Directe en transitieve dependencies

Een directe dependency is een dependency die het project zelf expliciet declareert.

Een transitieve dependency is een dependency die indirect wordt binnengehaald door een andere dependency.

Voorbeeld:

Applicatie
└── Library A
    └── Library B

In dit voorbeeld gebruikt de applicatie Library A direct. Library B is transitief, omdat deze via Library A wordt meegenomen.

Transitieve dependencies zijn belangrijk, omdat kwetsbaarheden vaak niet in de expliciet gekozen library zitten, maar dieper in de dependency-boom.

Component

Een component is een software- of systeemonderdeel dat in een SBoM voorkomt en door Dependency-Track wordt geanalyseerd.

Een component kan bijvoorbeeld zijn:

De term component is breder dan dependency.

Elke dependency is meestal een component, maar niet elk component hoeft in de klassieke zin een library-dependency te zijn.

Bron:

CycloneDX

CycloneDX is een Bill of Materials-standaard.

Dependency-Track gebruikt CycloneDX als belangrijk formaat voor SBoM's en VEX-documenten.

CycloneDX ondersteunt meer dan alleen softwarebibliotheken.

Het kan ook informatie bevatten over onder meer services, hardware, cryptografie, vulnerabilities en licenties.

Voor Dependency-Track-projecten is CycloneDX het voorkeursformaat voor SBoM's.

Bronnen:

CVE

Openbare softwarepakketten worden continue onderzocht op kwetsbaarheden in de beveiliging.

Deze kwestbaarheden worden CVE's genoemd.

Dit staat voor Common Vulnerabilities and Exposures.

Deze ontdekte kwetsbaarheden worden opgeslagen in databases die kunnen worden geraadpleegd.

Zo kunnen softwareontwikkelprojecten weten of de dependencies die gebruikt worden, veilig zijn.

Een CVE krijgt een unieke identifier, bijvoorbeeld:

CVE-2021-44228

Dit voorbeeld verwijst naar de bekende Log4Shell-kwetsbaarheid in Apache Log4j.

Een CVE is vooral een gestandaardiseerde verwijzing, de inhoud van een CVE zelf bevat meestal maar beperkte informatie.

Extra details, zoals ernstscore, getroffen versies en verrijkte metadata, komen vaak uit andere bronnen zoals NVD, GitHub Advisories en/of OSV.

Bronnen:

NVD

NVD staat voor National Vulnerability Database.

Dit is de Amerikaanse overheidsdatabase van NIST voor kwetsbaarheidsmanagementdata.

NVD gebruikt CVE's als basis en verrijkt die met aanvullende informatie, zoals:

Voor Dependency-Track is de NVD een belangrijke bron, maar niet de enige bron.

Let op dat de NVD vooral goed werkt wanneer componenten correct gekoppeld kunnen worden aan CPE's.

Bronnen:

GitHub Advisories

GitHub Advisories is een database met security advisories voor open-source dependencies.

Deze bron is vooral relevant voor package-ecosystemen zoals Maven, npm, NuGet, PyPI en vergelijkbare repositories.

Dependency-Track kan GitHub Advisories gebruiken als vulnerability source.

Voor Dependency-Track v5 is hiervoor een GitHub personal access token nodig.

Volgens de officiële documentatie zijn geen scopes nodig, maar de GitHub GraphQL API accepteert geen unauthenticated requests.

Bron:

OSV

OSV staat voor Open Source Vulnerabilities.

OSV is een kwetsbaarheidsdatabase van Google, die zich richt op open-source ecosystemen en package-identifiers zoals PURL.

Dependency-Track kan OSV gebruiken als vulnerability source.

In Dependency-Track v5 kan per ecosysteem worden gekozen welke OSV-data gesynchroniseerd (mirror) wordt.

Ecosystemen zijn doorgaans gedefinieerd op programmeertaal of operating systeem.

Bronnen:

Vulnerability source

Een vulnerability source is een bron waaruit Dependency-Track kwetsbaarheidsinformatie haalt.

Dependency-Track gebruikt die informatie om componenten uit SBoM's te koppelen aan bekende kwetsbaarheden.

Voor Dependency-Track v5 beschrijft de officiële configuratiedocumentatie drie publieke bronnen die gesynchroniseerd (mirror) kunnen worden:

Let op: algemene of oudere Dependency-Track-documentatie noemt soms ook bronnen zoals Sonatype OSS Index, Snyk, Trivy of VulnDB.

Controleer altijd de documentatie van de gebruikte Dependency-Track-versie en de actuele configuratie van de eigen omgeving.

Bronnen:

CVSS

CVSS staat voor Common Vulnerability Scoring System.

CVSS geeft een numerieke score aan de technische ernst van een kwetsbaarheid.

De score loopt van 0,0 tot 10,0 en wordt vaak vertaald naar categorieën zoals low, medium, high en critical.

Belangrijk: CVSS is een maat voor ernst, niet automatisch voor risico.

Een kwetsbaarheid met een hoge CVSS-score is technisch ernstig, maar dat betekent niet altijd dat deze in jouw context te misbruiken is.

Omgekeerd kan een kwetsbaarheid met een lagere score toch belangrijk zijn als deze actief wordt misbruikt.

Bronnen:

PURL

PURL staat voor Package-URL. Een PURL is een gestandaardiseerde manier om softwarepackages te identificeren over package-ecosystemen heen.

Voorbeelden:

pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1
pkg:npm/lodash@4.17.21
pkg:pypi/requests@2.32.3
pkg:nuget/Newtonsoft.Json@13.0.3

Voor SBoM-gebaseerde analyse is PURL belangrijk, omdat tools zoals Dependency-Track componenten daarmee beter kunnen koppelen aan package-ecosystemen en kwetsbaarheidsbronnen zoals GitHub Advisories en OSV.

Bronnen:

Licentie

Een licentie bepaalt onder welke voorwaarden een softwarecomponent gebruikt, verspreid of aangepast mag worden.

Voorbeelden van bekende open-sourcelicenties:

Dependency-Track kan licentie-informatie uit componenten gebruiken voor licentiebeleid. Het is verstandig om licenties zo veel mogelijk vast te leggen met SPDX License Identifiers.

Bronnen:

Policy

Een policy is een regel waarmee Dependency-Track kan bepalen of een component, vulnerability of licentie voldoet aan de afspraken van de organisatie.

Voorbeelden:

Policies helpen om afspraken expliciet en toetsbaar te maken. Zonder policies blijft Dependency-Track vooral een signaleringstool. Met policies wordt het ook een governance-instrument.

Bronnen:

VEX

VEX staat voor Vulnerability Exploitability Exchange. Een VEX-document legt vast of een bekende kwetsbaarheid daadwerkelijk relevant of te misbruiken is in een specifieke productcontext.

Een component kan bijvoorbeeld technisch kwetsbaar zijn, maar de kwetsbare functionaliteit wordt niet aangeroepen.

In dat geval kan een VEX-status helpen om het verschil vast te leggen tussen:

Bronnen:

VDR

VDR staat voor Vulnerability Disclosure Report. Een VDR bevat kwetsbaarheidsinformatie over componenten in een product of project.

Noem een VDR niet simpelweg een "annotated SBoM", dat is te onnauwkeurig. Een betere formulering is:

> Een VDR is een CycloneDX-document met kwetsbaarheidsinformatie over componenten in een product of project.

Bron:

VDR- en VEX-export uit Dependency-Track

Context

Dependency-Track kan naast SBoM's ook CycloneDX-documenten genereren met kwetsbaarheidsinformatie.

Belangrijke termen:

TermBetekenisMeer uitleg
SBoMSoftware Bill of Materials, de componentinventarisUitleg begrip SBoM
VEXVulnerability Exploitability ExchangeUitleg begrip VEX
VDRVulnerability Disclosure ReportUitleg begrip VDR

Toelichting

Een VEX-document beschrijft analysebeslissingen over kwetsbaarheden.

Het geeft bijvoorbeeld context over de vraag of een kwetsbaarheid exploiteerbaar is in een specifieke toepassing.

Een VDR-document bevat kwetsbaarheidsinformatie over componenten in een product of project.

In een SBoM van een project is het mogelijk om commentaar achter te laten per component.

Dit kan bijvoorbeeld zijn: "deze CVE vormt geen risico op productie omdat het testtooling is".

Dependency-Track biedt tevens de mogelijkheid om deze SBoM te exporteren:

Screenshot van VEX en VDR export in Dependency-Track: Screenshot van VEX en VDR export in Dependency-Track

Bronnen

  • CycloneDX, Vulnerability Disclosure Report:
  • https://cyclonedx.org/use-cases/vulnerability-disclosure/

  • CycloneDX, Vulnerability Exploitability Exchange:
  • https://cyclonedx.org/capabilities/vex/

    Bekende problemen en oplossingen

    De SBoM wordt eenmalig gescand

    Na het uploaden van een SBoM verschijnen er resultaten, maar een dag later lijken nieuwe kwetsbaarheden niet automatisch zichtbaar te worden.

    Het project lijkt daardoor alleen tijdens de eerste upload te zijn geanalyseerd.

    De bedoeling van Dependency-Track is dat een SBoM wordt gemonitord en dus op dagelijkse basis wordt gescand.

    Context

    Dependency-Track is een tool die per project bewaakt welke externe softwarepakketten kwetsbaarheden bevatten.

    Dependency-Track doet dit via achtergrondtaken. Daarbij zijn drie stappen belangrijk:

    1. Kwetsbaarheidsbronnen worden gesynchroniseerd (mirror) naar de lokale Dependency-Track-database;
    2. Componenten uit projecten worden geanalyseerd tegen die lokale kwetsbaarheidsdata;
    3. Metrics en dashboardwaarden worden bijgewerkt.

    Waarschijnlijke oorzaken

    Mogelijke oorzaken zijn:

    Oplossing

    ⚠️ Let op: De gesuggereerde oplossingen hieronder kunnen niet worden aangepast in de webinterface.

    Ze horen bij de deploymentconfiguratie van de Dependency-Track API-server.

    In de praktijk moeten deze instellingen worden gecontroleerd of aangepast door een systeembeheerder, platformbeheerder of DevOps-beheerder met toegang tot de runtimeconfiguratie van de API-server.

    Controleer of de geplande analyse actief is

    Zoals uitgelegd in de documentatie van Dependency-Track kunnen configuraties op verschillende manieren worden toegepast.

    Ze kunnen onder meer via de JVM-opstartparameters en via de 'environment variables' worden aangepast.

    Dependency-Track v5 gebruikt een task scheduler voor terugkerende achtergrondtaken.

    Deze scheduler start onder meer taken voor het synchroniseren (mirror) van kwetsbaarheidsbronnen, metrics-updates en portfolio vulnerability analysis.

    De portfolio vulnerability analysis is de taak die alle componenten in de portfolio opnieuw analyseert tegen de beschikbare kwetsbaarheidsdata.

    Voor Dependency-Track v5 zijn met name deze instellingen relevant:

    dt.task-scheduler.enabled=true
    dt.task.portfolio-analysis.cron=0 6 * * *
    

    Bij een container- of Kubernetes-deployment worden deze waarden meestal als environment variables op de API-servercontainer gezet:

    DT_TASK_SCHEDULER_ENABLED=true
    DT_TASK_PORTFOLIO_ANALYSIS_CRON=0 6 * * *
    

    De standaardwaarde 0 6 * betekent dat de portfolio vulnerability analysis dagelijks om 06:00 UTC draait.

    ⚠️ Let op: Dependency-Track gebruikt voor deze cron-expressies UTC, niet de lokale tijdzone.

    Deze configuratie kan op verschillende manieren worden toegepast, afhankelijk van de deployment:

    DeploymentvormWaar aanpassen?
    Docker ComposeIn de environment-sectie van de Dependency-Track API-serverservice
    KubernetesIn de env-sectie van de API-server Deployment of StatefulSet
    HelmIn de Helm values die environment variables voor de API-server instellen
    JVM-startparameterAls -Ddt.task-scheduler.enabled=true en -Ddt.task.portfolio-analysis.cron="0 6 *"
    ConfiguratiebestandIn config/application.properties van de API-server

    Bij gebruik van het officiële container-image is de current working directory /opt/owasp/dependency-track.

    Een configuratiebestand wordt dan verwacht op:

    /opt/owasp/dependency-track/config/application.properties
    

    Voorbeeldinhoud:

    dt.task-scheduler.enabled=true
    dt.task.portfolio-analysis.cron=0 6 * * *
    

    Let op bij meerdere API-servernodes: de scheduler mag op meerdere nodes actief zijn.

    Dependency-Track coördineert de uitvoering via de database, zodat een geplande taak maar door één node wordt uitgevoerd.

    De scheduler moet echter wel op minimaal één API-servernode actief zijn.

    Als de scheduler op alle nodes is uitgeschakeld, draaien de geplande achtergrondtaken niet.

    Controleer na wijziging van deze instellingen de API-serverlogs om vast te stellen of de scheduler actief wordt en of de portfolio vulnerability analysis daadwerkelijk wordt gestart.

    Controleer de vulnerability sources

    De beheerder moet controleren of de kwetsbaarheidsbronnen correct zijn ingericht. Ga in Dependency-Track naar:

    Administration > Vulnerability Sources
    

    Controleer minimaal:

    Na het inschakelen van een bron moet de eerste synchronisatie (mirror) uitgevoerd worden. Gebruik daarvoor, indien beschikbaar in de interface:

    Mirror now
    

    Let daarbij op het type identifier dat per bron nodig is:

    BronBelangrijke identifier
    NVDCPE
    GitHub AdvisoriesPURL
    OSVPURL

    Controleer, voor de zekerheid, ook de SBoM zelf. Voor open-source dependencies is een Package URL, kortweg PURL, meestal essentieel. Voorbeelden:

    pkg:maven/org.apache.commons/commons-lang3@3.14.0
    pkg:npm/lodash@4.17.21
    pkg:pypi/requests@2.32.3
    

    Als de SBoM geen PURL of CPE bevat, kan Dependency-Track de component mogelijk wel tonen, maar kwetsbaarheden minder goed of helemaal niet relateren aan een kwetsbaarhedendatabase.

    ⚠️ Let op: Let ook op het verschil tussen analyse en metriek.

    Een grafiek of dashboardwaarde die wordt bijgewerkt, betekent niet automatisch dat de vulnerabilities opnieuw zijn geanalyseerd.

    Controleer (of laat een systeembeheerder controleren) daarom bij twijfel de Dependency-Track API-serverlogs en de timestamps van de analyse.

    Dependency-Track gebruikt meerdere achtergrondtaken die los van elkaar kunnen worden uitgevoerd.

    Kwetsbaarheidsbronnen zoals NVD, GitHub Advisories en OSV worden periodiek gesynchroniseerd (mirror).

    Daarnaast draait er een 'portfolio vulnerability analysis' die componenten opnieuw vergelijkt met de beschikbare kwetsbaarheidsdata.

    Daarna worden metrics (grafieken- en dashboardwaardes) periodiek bijgewerkt.

    Door de 'portfolio vulnerability analysis' kan een grafiek- of dashboardwaarde veranderen zonder dat er op dat moment een nieuwe SBoM is geüpload.

    Een grafiek toont meestal een metrics-snapshot: een vastgelegde stand van onder meer vulnerabilities, findings, suppressions, auditstatus en policy violations op een bepaald moment.

    Controleer (of laat een systeembeheerder dit doen) bij twijfel daarom niet alleen de grafiek, maar ook:

    Bronnen

  • Dependency-Track v5, Vulnerability Sources:
  • https://dependencytrack.github.io/docs/next/guides/administration/configuring-vulnerability-sources/

  • Dependency-Track v5, Analyzers:
  • https://dependencytrack.github.io/docs/next/reference/analyzers/

    Geen duidelijk inzicht in gebruikte licenties

    Het projectteam wil inzichtelijk maken welke licenties worden gebruikt in dependencies, maar het overzicht is onvolledig, onduidelijk of niet geschikt voor besluitvorming.

    Screenshot van licentie-overzicht in Dependency-Track: Screenshot van licentie-overzicht in Dependency-Track

    Context

    Dependency-Track kan per component licentie-informatie registreren en toetsen. Die informatie komt meestal uit de SBoM.

    Als de SBoM geen of onvolledige licentiegegevens bevat, kan Dependency-Track deze informatie ook niet betrouwbaar tonen of beoordelen.

    Licentie-inzicht bestaat uit twee verschillende vragen:

    1. Welke licenties worden gebruikt in dit project?
    2. Welke gebruikte licenties zijn toegestaan, ongewenst of onbekend?

    De eerste vraag is inventariserend. De tweede vraag is een beleidsvraag en is afhankelijk van de niet-functionele eisen van het ontwikkelproject.

    Het toepassen van dit beleid kan middels policies zoals hieronder verder uitgediept.

    Softwareontwikkelprojecten kunnen onbedoeld softwarepakketten (dependencies) gebruiken met licenties die niet passen bij het beleid van de organisatie of het project.

    Vooral copyleftlicenties vragen aandacht.

    Copyleftlicenties verplichten, onder bepaalde voorwaarden, dat gewijzigde of afgeleide software onder dezelfde of vergelijkbare licentie beschikbaar wordt gesteld.

    De meest risicovolle categorieën zijn:

    In Dependency-Track is het mogelijk om deze licenties niet alleen te inventariseren, maar ook via licentiebeleid te classificeren als toegestaan, review vereist of niet toegestaan.

    Verkeerde verwachtingen bij de licenses-pagina

    Een veelvoorkomende oorzaak is dat gebruikers verwachten dat onder /licenses is terug te vinden welke softwarepakketten ongewenste licenties bevatten. Dit is niet het geval.

    De licenses-pagina geeft een overzicht van alle licenties die bekend zijn bij deze instantie van Dependency-Track, aangevuld met classificaties (de kolommen OSI approved, FSF Libre en Deprecated).

    KolomnaamBetekenis
    OSI approvedOSI-goedgekeurde licenties voldoen aan de Open Source Definition, wat in hoofdlijnen betekent dat software vrij gebruikt, aangepast en gedeeld mag worden.
    FSF LibreGeeft aan of de Free Software Foundation de licentie als vrije softwarelicentie beschouwt. "Libre" gaat hier over vrijheid, niet over gratis gebruik.
    DeprecatedGeeft aan of de SPDX identifier van de licentie verouderd is. Dit betekent niet dat de licentie zelf ongeldig is. Het betekent dat SPDX het gebruik van deze identifier afraadt, meestal omdat er een betere of explicietere identifier bestaat.

    Oplossing: Verkrijgen van het gewenste inzicht

    Om inzicht te krijgen in de gebruikte ongewenste licenties van een project moet er eerst een licentiebeleid ('policy') worden geconfigureerd.

    Dit wordt uitgelegd in de Dependency-Track documentatie. Dit kan worden gedaan op de pagina 'Policy Management'.

    De eenvoudige manier is om gebruik te maken van de bestaande classificaties (licence group) van Dependency-Track.

    Bij een sterk juridisch belang of organisatorisch beleid wordt het aanbevolen om handmatig een license-group aan te maken en daarin op te nemen welke licenties niet acceptabel zijn.

    Stap 1: Zelf configureren van een license group (optioneel)

    Ga naar:

    Policy Management > License Groups
    

    Maak bijvoorbeeld deze groepen aan:

    License groupDoel
    Toegestane licentiesLicenties die binnen de organisatie standaard zijn toegestaan
    Verboden licentiesLicenties die niet gebruikt mogen worden
    Review vereistLicenties die handmatige beoordeling vereisen

    Stap 2: Maak een policy aan

    Maak vervolgens component policies aan via:

    Policy Management > Policies
    

    Screenshot van policy-management in Dependency-Track: Screenshot van policy-management in Dependency-Track

    Policy: verboden licenties blokkeren (ingebouwde license group)

    Name: Dependency gebruikt ongewenste licentie
    Operator: Any
    Violation state: Warn
    
    Condition: License group is Copyleft
    Limit to
    Include children of projects: yes
    Limit to project versions marked as latest: yes
    

    Belangrijke nuance: welke dependency moet vervangen worden?

    Dependency-Track toont de component die de policy overtreedt.

    Dat is niet automatisch de dependency die je in pom.xml, package.json, build.gradle of een ander dependency-bestand moet vervangen.

    Voorbeeld:

    jouw applicatie
    └── directe dependency A
        └── transitieve dependency B met GPL-licentie
    

    In dit geval is B de component met de ongewenste licentie.

    Maar de dependency die je waarschijnlijk moet vervangen of uitsluiten is A, omdat A de transitieve dependency B binnenhaalt.

    Dependency-Track v5 heeft de mogelijkheid om dependency-relaties te evalueren via policy expressions.

    De documentatie noemt functies zoals isdependencyof, isdirectdependency_of en isexclusivedependency_of.

    Daarmee kun je bepalen of een component direct, transitief of exclusief via een andere component wordt binnengehaald.

    ℹ️ Licenties van transitieve dependencies

    Dependency-Track kan alleen informatie verschaffen over WELKE softwarepakketten (dependencies) ongewenste licenties bevatten.

    Daarna moet het ontwikkelteam in de dependency tree van de gebruikte package manager bepalen welke directe dependency de transitieve component binnenhaalt.

    Licenties worden niet weergegeven

    Waarschijnlijke oorzaken

    Mogelijke oorzaken zijn:

    Oplossing

    Begin bij de bron: de SBoM moet licentie-informatie bevatten.

    Zorg dat de SBoM-generator deze informatie toevoegt aan de SBoM.

    Gebruik waar mogelijk SPDX License Identifiers, bijvoorbeeld:

    MIT
    Apache-2.0
    BSD-3-Clause
    GPL-3.0-only
    LGPL-2.1-or-later
    

    Gebruik bij samengestelde of alternatieve licenties een SPDX expression, bijvoorbeeld:

    MIT OR Apache-2.0
    

    Bronnen

  • Dependency-Track v5, Component Policies Reference:
  • https://dependencytrack.github.io/docs/next/reference/policies/component-policies/

  • SPDX License List:
  • https://spdx.org/licenses/

    Het SBoM-formaat wordt niet geaccepteerd

    Context

    Dependency-Track v5 ondersteunt CycloneDX als uploadformaat voor SBoM's. De ondersteunde serialisaties zijn:

    FormaatContent type
    CycloneDX JSONapplication/vnd.cyclonedx+json
    CycloneDX XMLapplication/vnd.cyclonedx+xml

    Dependency-Track v5 ondersteunt alle CycloneDX BOM specification versions voor upload.

    Probleem

    Een SBoM wordt niet geaccepteerd door Dependency-Track, of de upload lukt wel maar de inhoud wordt niet goed verwerkt.

    Waarschijnlijke oorzaken

    Mogelijke oorzaken zijn:

    Oplossing

    Genereer bij voorkeur direct een CycloneDX-SBoM vanuit de build of dependency manager van het project.

    Gebruik dus liever een native CycloneDX-generator dan een conversiestap achteraf.

    Voorbeelden van ecosystemen waarvoor CycloneDX-tools bestaan:

    EcosysteemAanpak
    MavenCycloneDX Maven-plugin
    GradleCycloneDX Gradle-plugin
    npm / Node.jsCycloneDX Node.js tooling
    PythonCycloneDX Python tooling
    .NETCycloneDX .NET tooling
    ContainersTooling die CycloneDX als output ondersteunt

    Valideer de SBoM voordat deze naar Dependency-Track wordt gestuurd.

    Voor CycloneDX JSON:

    cyclonedx validate \
      --input-file bom.json \
      --input-format json \
      --fail-on-errors
    

    Voor CycloneDX XML:

    cyclonedx validate \
      --input-file bom.xml \
      --input-format xml \
      --fail-on-errors
    

    Gebruik conversie alleen als tijdelijke oplossing, bijvoorbeeld wanneer een leverancier alleen SPDX JSON aanlevert.

    Voorbeeld:

    cyclonedx convert \
      --input-file SBoM.spdx.json \
      --input-format spdxjson \
      --output-file bom.json \
      --output-format json \
      --output-version v1_6
    

    Valideer daarna altijd het resultaat:

    cyclonedx validate \
      --input-file bom.json \
      --input-format json \
      --fail-on-errors
    

    ⚠️ Let op: conversie tussen SBoM-formaten is niet altijd verliesvrij. Controleer na conversie minimaal:

    Praktisch advies

    Gebruik voor Dependency-Track-projecten deze voorkeursvolgorde:

    1. Genereer direct CycloneDX vanuit de build
    2. Valideer de CycloneDX-SBoM
    3. Upload de gevalideerde SBoM naar Dependency-Track
    4. Gebruik conversie alleen als fallback
    5. Controleer na conversie of kritieke metadata niet verloren is gegaan

    Bronnen

  • CycloneDX Tool Center:
  • https://cyclonedx.org/tool-center/

  • CycloneDX CLI:
  • https://github.com/CycloneDX/cyclonedx-cli

    "Refresh requested" bij grafieken of projectmetingen

    Context

    Dependency-Track toont projectmetingen en grafieken, maar deze zijn niet hetzelfde als een vulnerability analysis.

    Probleem

    Bij een project of grafiek staat dat een refresh is aangevraagd, maar het is niet duidelijk of dit betekent dat kwetsbaarheden opnieuw worden geanalyseerd.

    Uitleg

    Behandel een metrics-refresh en een vulnerability analysis als twee verschillende processen.

    Een metrics-refresh werkt projectmetingen of grafieken bij.

    Een vulnerability analysis beoordeelt componenten tegen kwetsbaarheidsbronnen.

    Als nieuwe kwetsbaarheden niet zichtbaar worden, controleer dan niet alleen de grafiek of metrics, maar ook:

    Bronnen

    Referenties en Links

    Deze pagina bevat een overzicht van nuttige bronnen voor wie zich verder wil verdiepen in Dependency-Track. De focus ligt op officiële documentatie, aanvullende standaarden, community-bronnen en verdiepende uitleg over SBoM’s, CycloneDX, kwetsbaarheden en licentiebeleid.

    ⚠️ Let op: Dependency-Track heeft documentatie voor meerdere versies. Gebruik voor nieuwe installaties en actuele informatie bij voorkeur de v5-documentatie. Gebruik de oudere documentatie alleen wanneer de gebruikte omgeving nog op Dependency-Track v4 draait.

    Officiële bronnen

    https://dependencytrack.org/

    SBoM en CycloneDX

    https://cyclonedx.org/

    VEX en VDR

    https://cyclonedx.org/capabilities/vex/

    Kwetsbaarheidsbronnen en identifiers

    https://nvd.nist.gov/

    Scores en prioritering

    https://www.first.org/cvss/

    Licenties

    https://spdx.org/licenses/

    Integraties en deployment

    https://docs.dependencytrack.org/integrations/community-integrations/

    Community en ondersteuning

    https://github.com/DependencyTrack/community

    Aanvullende artikelen

    https://devsec-blog.com/2024/03/a-practical-approach-to-sbom-in-ci-cd-part-iii-tracking-sboms-with-dependency-track/

    ⚠️ Let op: veel informatie over Dependency-Track is verspreid over meerdere bronnen: de nieuwe v5-documentatie, de oudere v4-documentatie, GitHub, community-discussies en CycloneDX-documentatie. Controleer daarom altijd of een bron past bij de gebruikte Dependency-Track-versie en bij de gekozen SBoM-standaard.

    ---

    Colofon

    Deze Toolguide is samengesteld op basis van onderzoek gedaan door arrez en Sebastiaan127001 met input van martijndevrieze en just-frank-it en nhoop.