๐ŸŒ
OWASP
owasp.org โ€บ www-project-dependency-check
OWASP Dependency-Check | OWASP Foundation
Dependency-Check has a command line interface, a Maven plugin, a Gradle plugin, an Ant task and a number of integrations with build tooling such as Jenkins, GitHub Actions and Azure DevOps. The core engine contains a series of analyzers that inspect the project dependencies, collect pieces of information about the dependencies (referred to as evidence within the tool).
๐ŸŒ
GitHub
github.com โ€บ dependency-check โ€บ DependencyCheck
GitHub - dependency-check/DependencyCheck: OWASP dependency-check is a software composition analysis utility that detects publicly disclosed vulnerabilities in application dependencies. ยท GitHub
More detailed instructions can be found on the dependency-check-maven github pages. By default, the plugin is tied to the verify phase (i.e. mvn verify). Alternatively, one can directly invoke the plugin via mvn org.owasp:dependency-check-maven:check.
Starred by 7.5K users
Forked by 1.4K users
Languages ย  Java 96.7% | PLSQL 0.8% | Groovy 0.7% | PLpgSQL 0.6% | TSQL 0.6% | Shell 0.4%
๐ŸŒ
Gradle
plugins.gradle.org โ€บ plugin โ€บ org.owasp.dependencycheck
Gradle - Plugin: org.owasp.dependencycheck
Created 11 April 2026. A software composition analysis plugin that identifies known vulnerable dependencies used by the project. ... Adding the plugin to build logic for usage in precompiled script plugins. See the relevant documentation for more information.
๐ŸŒ
Jenkins
plugins.jenkins.io โ€บ dependency-check-jenkins-plugin
OWASP Dependency-Check | Jenkins plugin
2 weeks ago - This plug-in can independently execute a Dependency-Check analysis and visualize results. The plugin has three main components: a globally defined tool configuration, a builder, and a publisher.
๐ŸŒ
Owasp
devguide.owasp.org โ€บ en โ€บ 05-implementation โ€บ 02-dependencies โ€บ 01-dependency-check
Dependency-Check - OWASP Developer Guide
Dependency-Check also provides plugins to check for vulnerable components for CI/CD pipelines. The OWASP Spotlight series provides an example of the risks involved in using out of date and vulnerable libraries, and how to use Dependency-Check: 'Project 2 - OWASP Dependency Check'.
๐ŸŒ
Maven Repository
mvnrepository.com โ€บ artifact โ€บ org.owasp โ€บ dependency-check-maven
Maven Repository: org.owasp ยป dependency-check-maven
1 week ago - dependency-check-maven is a Maven Plugin that uses dependency-check-core to detect publicly disclosed vulnerabilities associated with the project's dependencies.
๐ŸŒ
Jeremylong
jeremylong.github.io โ€บ DependencyCheck
About โ€“ dependency-check-maven
OWASP dependency-check is an open source solution to the OWASP Top 10 2021 entry: A06:2021 โ€“ Vulnerable and Outdated Components. Dependency-check can currently be used to scan software to identify the use of known vulnerable components. For a full list of supported languages/technologies ...
๐ŸŒ
Dependency-check
dependency-check.github.io โ€บ DependencyCheck โ€บ dependency-check-cli โ€บ index.html
About โ€“ dependency-check-cli
OWASP dependency-check-cli is an command line tool that uses dependency-check-core to detect publicly disclosed vulnerabilities associated with the scanned project dependencies.
๐ŸŒ
Baeldung
baeldung.com โ€บ home โ€บ security โ€บ check component vulnerabilities using owasp dependency-check
Check Component Vulnerabilities Using OWASP Dependency-Check | Baeldung
March 11, 2026 - Learn about OWASP Dependency-Check, a Maven plugin that can help us identify known vulnerabilities in our application
Find elsewhere
๐ŸŒ
Dependency-check
dependency-check.github.io โ€บ DependencyCheck โ€บ dependency-check-gradle โ€บ index.html
Usage โ€“ dependency-check-maven
The OWASP dependency-check-gradle plugin provides monitoring of the projects dependent libraries; creating a report of known vulnerable components that are included in the build.
๐ŸŒ
GitHub
github.com โ€บ jeremylong โ€บ DependencyCheck
GitHub - jeremylong/DependencyCheck: The dependency-check repository has moved: ยท GitHub
September 27, 2025 - The OWASP dependency-check repository has moved to https://github.com/dependency-check/DependencyCheck.
Starred by 48 users
Forked by 27 users
Languages ย  Java 65.6% | JavaScript 21.7% | CMake 8.3% | M4 1.3% | PLSQL 0.6% | Groovy 0.5%
๐ŸŒ
Jeremylong
jeremylong.github.io โ€บ DependencyCheck โ€บ dependency-check-maven
Usage โ€“ dependency-check-maven
Create the dependency-check-report.html and use internal mirroring of CVE contents. Note, that the NVD JSON files and META files must also be mirrored; see https://nvd.nist.gov/vuln/data-feeds#JSON_FEED. <project> ... <build> ... <plugins> ... <plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> <version>12.1.0</version> <configuration> <nvdDatafeedUrl>http://internal-mirror.mycorp.com/nvdcve-{0}.json.gz</nvdDatafeedUrl> </configuration> <executions> <execution> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> ...
๐ŸŒ
Visual Studio Marketplace
marketplace.visualstudio.com โ€บ items
OWASP Dependency Check - Visual Studio Marketplace
Extension for Azure DevOps - Dependency Check is a Software Composition Analysis (SCA) tool that attempts to detect publicly disclosed vulnerabilities contained within a project's dependencies.
๐ŸŒ
Jeremylong
jeremylong.github.io โ€บ DependencyCheck โ€บ dependency-check-gradle โ€บ index.html
Usage โ€“ dependency-check-maven - GitHub Pages
The OWASP dependency-check-gradle plugin provides monitoring of the projects dependent libraries; creating a report of known vulnerable components that are included in the build.
๐ŸŒ
Jenkins-ci
wiki.jenkins-ci.org โ€บ JENKINS โ€บ OWASP-Dependency-Check-Plugin.html
Jenkins : OWASP Dependency-Check Plugin
Persisted cross-site scripting ... in project dependencies. Dependency-Check is an open source utility that identifies project dependencies and identifies if there are any known, publicly disclosed, vulnerabilities. This tool can be part of the solution to the OWASP ...
๐ŸŒ
Maven Central
central.sonatype.com โ€บ artifact โ€บ org.owasp โ€บ dependency-check-maven
Maven Central: org.owasp:dependency-check-maven
pkg:maven/org.owasp/dependency-check-maven@Loading... ... dependency-check-maven is a Maven Plugin that uses dependency-check-core to detect publicly disclosed vulnerabilities associated with the project's dependencies.
๐ŸŒ
GitHub
github.com โ€บ dependency-check โ€บ dependency-check-gradle
GitHub - dependency-check/dependency-check-gradle: The dependency-check gradle plugin is a Software Composition Analysis (SCA) tool that allows projects to monitor dependent libraries for known, published vulnerabilities. ยท GitHub
The dependency-check-gradle plugin will no longer be published to Maven Central; it will continue to be published to the Gradle plugin portal. Below are the quick start instructions. Please see the documentation site for more detailed information on configuration and usage. Add the plugin to your build.gradle file: plugins { id "org.owasp.dependencycheck" version "12.2.1" } Once gradle plugin applied, run following gradle task to check dependencies: gradle dependencyCheckAnalyze --info ยท
Starred by 386 users
Forked by 102 users
Languages ย  Groovy
Top answer
1 of 2
3

We use OWASP DepCheck plugin as well, together with standalone SonarQube server.

Basically, you'll need to solve 2 issues to use OWASP DepCheck plugin effectively:

  1. Avoid throttling during NVD DB updates by making sure the plugin uses the NVD API key. Hardcode it in pom.xml, provide it via CLI option, or via evironment variable -- doesn't matter, choose whatever is easier to maintain. We chose Gitlab CI variables to avoid exposing the key in logs and/or repos.

  2. Avoid unnecessary DB updates by caching NVD DB downloaded by the plugin. You can use Gitlab CI/CD caching, Docker volumes or bind mounts if you use Docker-based Gitlab runners. We chose Docker bind mounts since we only have one mighty build server, and don't need to share the cache between hosts.

This is how it all comes together, giving you both a nice HTML report as a Gitlab artifact, and also the same info as part of the SonarQube scan report:

pom.xml

            <plugin>
                <groupId>org.owasp</groupId>
                <artifactId>dependency-check-maven</artifactId>
                <version>${dependency-check-maven.version}</version>
                <configuration>
                    <dataDirectory>/tmp/owasp</dataDirectory>
                    <formats>
                        <!-- we need both HTML (for humans) and JSON (for machines) to make the report useful in Sonar -->
                       <format>html</format>
                       <format>json</format>
                    </formats>
                </configuration>
            </plugin>

/etc/gitlab-runner/config.toml:

[[runners]]
  ...
  executor = "docker"
  [runners.docker]
    disable_cache = false
    volumes = [..., "/usr/share/owasp:/tmp/owasp:rw", ...]
    ...

.gitlab-ci.yml:

sonar:
  stage: test
  image: node:${NODE_IMAGE_VERSION}
  needs:
    - job: generate-version
      artifacts: true
    - job: build
      artifacts: true
  variables:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
    GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task
    GIT_STRATEGY: clone
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script:
    # run dependency check here before sonar task is executed
    - mvn ${MAVEN_CLI_OPTS} -Drevision=${VERSION} -DnvdApiKey=${NVD_API_KEY} -DassemblyAnalyzerEnabled=false -Dsonar.qualitygate.wait=true verify dependency-check:aggregate sonar:sonar
  allow_failure: true
  artifacts:
    when: always
    name: "${CI_PROJECT_NAME}-v${VERSION}-owasp-depcheck-report"
    expose_as: "OWASP Dependency Check report"
    expire_in: 7 days
    paths:
      - 'target/dependency-check-report.html'
2 of 2
2

There are several issues to consider:

Make sure your API key is working.

Test your API key running following command line:

curl -H "Accept: application/json" -H "apiKey: 1230b944-xxxx-xxxx-xxxx-c51993ff5a17" \
  -v https://services.nvd.nist.gov/rest/json/cves/2.0?cpeName=cpe:2.3:o:microsoft:windows_10:1607:\*:\*:\*:\*:\*:\*:\*

You should retrieve a long Json output (describing public CVEs in Windows build 1607). If no JSON is returned and/or you see a 404 error the API Key is invalid and you should request a new one.

Such things may happen if you click the activation link directly from your mail application instead of copy and paste it into your browser. (Found this hint in one of Jeremy Long's postings, was helpful for me.)

Create local copy of US National Vulnerability Database

To prevent the US National Vulnerability Database being misused (including for DOS attacks), the database has introduced rate limits. Therefore, it is recommended that you have a local copy of its data.

If you do not address this issue directly, a local copy of the NVD will be created in your .m2 cache. This technique may not work if you run the Dependency-Check Maven plugin in a Docker container, as the container always starts with an empty cache, or in a CI/CD environment.

You may consider following options to handle this problem:

Create a copy in a public directory somewhere in your network

  • Find a directory within your network to which both stationary processes and your Docker container have access.
  • Create a frequently running job (crontab or whatever) which creates (within 1st run) and updates (within following runs) this local copy of the NVD database.
mvn org.owasp:dependency-check-maven:update-only
  • The following example shows part of the necessary configuration. The names of the keys used follow the version of the plugin (12.1.3). In older versions of the plugin, they may have different names.
<configuration>
    ...
    <nvdApiKey>1230b944-xxxx-xxxx-xxxx-c51993ff5a17</nvdApiKey>
    <nvdApiDelay>16000</nvdApiDelay>
    <dataDirectory>${YouPublicDirectory}</dataDirectory>  <!-- put your directory path here -->
</configuration>
  • Within your Docker container, it is only necessary to define the data directory; an API key is not required. In my plugin configuration, I set "nvdValidForHours" to 168 (one week) to stop the NVD being requested.
mvn org.owasp:dependency-check-maven:check

(My personal opinion: Watching what happens during checks of this local copy of the NVD I decided not to go this way.)

Create an instance of a SQL database

Plugin documentations describes steps to do so. You find an initial script to install required database objects of several database servers. Page shows an example plugin configuration as well.

I have successfully tested both PostgreSQL and SQL Server. The documentation mentions the necessary changes to ' dbStatements.properties ' to handle various SQL dialects, but does not explain how to make these changes. Nevertheless, I did not find these changes useful; everything worked straight away.

Security issues

Protect the API key!

Your API key could be misused by an attacker while they penetrate the US National Vulnerability Database .

According to the rate limitations defined by the US National Vulnerability Database (NVD), your key could be blocked for further usage and your local copy of the NVD will become outdated. Therefore, your application is free to include new vulnerable 3rd-party libraries.

Restrict writing to your local copy of the US NVD!

An attacker could delete specific entries from your database in order to hide known CVEs in 3rd-party libraries.

Do not restrict read access to the database

All this data is public anyway, and anyone can copy it themselves.

Separate processes for updating and querying local copy of US NVD

It is possible, and this is how it is configured in our system, to separate the processes of updating and querying the local copy of the US National Vulnerability Database (US NVD).

The following consequences arise from this separation:

  • You only need read access to the database to check it. This makes it easier to hide the password of the database owner.
  • You never query the original US NVD during dependency checks in your Jenkins build pipelines. Consequently nobody needs to know the API key.
  • You need to specify how long your US NVD copy is valid for. This time is supposed to be a long time to avoid querying die original US NVD from CI/CD.
  • The local US NVD copy is frequently updated by a separate process. This process - and this process only - needs to know the API key and the password of the database owner.