Modern applications leverage the availability of existing components for use as building blocks in application development. By using existing components, organizations can dramatically decrease time-to-market. Reusing existing components however, comes at a cost. Organizations that build on top of existing components assume risk for software they did not create. Vulnerabilities in third-party components are inherited by all applications that use those components. The OWASP Top Ten (2013 and 2017) both recognize the risk of using components with known vulnerabilities.
Dependency-Track is a Software Composition Analysis (SCA) platform that keeps track of all third-party components used in all the applications an organization creates or consumes. It integrates with multiple vulnerability databases including the National Vulnerability Database (NVD), Node Security Platform (NSP), and VulnDB from Risk Based Security. Dependency-Track monitors all applications in its portfolio in order to proactively identify vulnerabilities in components that are placing your applications at risk. Use of Dependency-Track can play a vital role in an overall Cyber Supply Chain Risk Management (C-SCRM) program by fulfilling many of the recommendations laid out by SAFECode.
Dependency-Track is designed to be used in an automated DevOps environment where Dependency-Check results or BoM (Bill of Material) formats are automatically ingested during CI/CD. Use of the Dependency-Check Jenkins Plugin is highly recommended for this purpose and is well suited for use in Jenkins Pipeline. In such an environment, Dependency-Track enables your DevOps teams to accelerate while still keeping tabs on component usage and any inherited risk.
Dependency-Track can also be used to monitor vulnerabilities in COTS (commercial off-the-shelf) software.
NOTICE: Always use official binary releases in production.
- Increases visibility into the use of vulnerable and outdated components
- Flexible data model supporting an unlimited number of projects and components
- Tracks vulnerabilities and inherited risk
- by component
- by project
- across entire portfolio
- Tracks usage of out-of-date components
- Includes a comprehensive auditing workflow for triaging results
- Supports standardized SPDX license ID’s and tracks license use by component
- Supports CycloneDX and SPDX bill-of-material formats
- Easy to read metrics for components, projects, and portfolio
- Provides a reliable mirror of the NVD data feed
- API-first design facilitates easy integration with other systems
- API documentation available in Swagger 2.0 (OpenAPI 3 support coming soon)
- Supports internally managed users, Active Directory/LDAP, and API Keys
- Simple to install and configure. Get up and running in just a few minutes
For more eye-candy, visit https://dependencytrack.org/.
Dependency-Track supports the following three deployment options:
- Docker container
- Executable WAR
- Conventional WAR
Deploying Docker Container
Deploying with Docker is the easiest and fastest method of getting started. No prerequisites are required other than an modern version of Docker. Dependency-Track uses the following conventions:
- The 'latest' tag, which is pulled by default if no tag is specified, will always refer to the latest stable release (3.0.0, 3.0.1, 3.1.0, etc)
- The 'snapshot' tag will be built and pushed on all CI changes to the master. Use this if you want a "moving target" with all the latest changes.
- Version tags (3.0.0, 3.0.1, etc) are used to indicate each release
docker pull owasp/dependency-track docker volume create --name dependency-track docker run -d -p 8080:8080 --name dependency-track -v dependency-track:/data owasp/dependency-track
To run snapshot releases (not recommended for production):
docker pull owasp/dependency-track:snapshot docker volume create --name dependency-track docker run -d -p 8080:8080 --name dependency-track -v dependency-track:/data owasp/dependency-track:snapshot
In the event you want to delete all Dependency-Track images, containers, and volumes, the following statements may be executed. NOTE: This is a destructive operation and cannot be undone.
docker rmi owasp/dependency-track docker rm dependency-track docker volume rm dependency-track:/data
Deploying the Executable WAR
Another simple way to get Dependency-Track running quickly is to automatically deploy the executable WAR. This
method requires Java 8u101 or higher. Simply download
dependency-track-embedded.war and execute:
java -Xmx4G -jar dependency-track-embedded.war
Deploying the Conventional WAR
This is the most difficult to deploy option as it requires an already installed and configured Servlet
container such as Apache Tomcat 8.5 and higher, however, it offers the most flexible deployment options.
Follow the Servlet containers instructions for deploying
Compiling From Sources (optional)
To create an executable WAR that is ready to launch (recommended for most users):
mvn clean package -P embedded-jetty
To create a WAR that must be manually deployed to a modern Servlet container (i.e. Tomcat 8.5+):
mvn clean package
To create an executable WAR that is ready to be deployed in a Docker container:
mvn clean package -P embedded-jetty -Dlogback.configuration.file=src/main/docker/logback.xml
The official Dependency-Track website is accessible at: https://dependencytrack.org/
Online documentation is accessible at: https://docs.dependencytrack.org/
Google Groups: https://groups.google.com/forum/#!forum/dependency-track
Dependency-Track is an open source project, created by people who believe that the knowledge of using vulnerable components should be accessible to anyone with a desire to know. By supporting this project, you'll allow the team to outsource testing, infrastructure, further research and development efforts, and engage in outreach to various communities that would benefit from this technology.
Copyright & License
Dependency-Track is Copyright (c) Steve Springett. All Rights Reserved.
Dependency-Track makes use of several other open source libraries. Please see the [NOTICES.txt] notices file for more information.