
OWASP dependency-check ist ein Dienstprogramm zur Analyse der Softwarezusammensetzung, das öffentlich bekannt gemachte Schwachstellen in Anwendungsabhängigkeiten erkennt.
Dependency-Check ist ein Software-Composition-Analysis-Tool (SCA), das versucht, öffentlich bekannt gemachte Schwachstellen zu erkennen, die in den Abhängigkeiten eines Projekts enthalten sind. Dazu wird ermittelt, ob es für eine bestimmte Abhängigkeit eine Common-Platform-Enumeration-Kennung (CPE) gibt. Wird eine gefunden, erstellt das Tool einen Bericht mit Links zu den zugehörigen CVE-Einträgen.
Dokumentation und Links zu den Produktions-Binärversionen finden Sie auf den GitHub-Seiten. Darüber hinaus finden Sie weitere Informationen zur Architektur und zu Möglichkeiten, dependency-check zu erweitern, im Wiki.
Dieses Produkt verwendet die NVD-API, wird jedoch von der NVD weder unterstützt noch zertifiziert.
Aufgrund von Kompatibilitätsänderungen der NVD-API ist ein Upgrade zwingend erforderlich. Weitere Informationen finden Sie unter #7463.
Java 11 ist nun erforderlich, um dependency-check 11.0.0 oder höher auszuführen
H2-Datenbank-Upgrade
11.0.0 enthält inkompatible Änderungen bei der Verwendung der lokalen H2-Datenbank. Es wird ein vollständiger Download
der NVD-Daten erfolgen. Beachten Sie, dass die H2-Datenbankdatei bei Verwendung eines gemeinsamen Datenverzeichnisses
nicht mit älteren Versionen von dependency-check kompatibel ist.
Wenn Sie auf Probleme stoßen, müssen Sie möglicherweise eine Bereinigung (Purge) durchführen:
./gradlew dependencyCheckPurgemvn org.owasp:dependency-check-maven:11.0.0:purgedependency-check.sh --purgeDependency-check ist seit 9.0.0+ (Januar 2024) von der Verwendung des NVD-Data-Feeds auf die NVD-API umgestiegen.
Benutzer von dependency-check werden dringend gebeten, einen NVD-API-Schlüssel zu beantragen; siehe https://nvd.nist.gov/developers/request-an-api-key
Ohne einen NVD-API-Schlüssel werden die Updates von dependency-check extrem langsam sein.
Informationen zum Festlegen des NVD-API-Schlüssels finden Sie in der Dokumentation für die CLI-, Maven-, Gradle- oder Ant-Integrationen.
Die NVD-API setzt Ratenlimits durch. Wenn Sie einen einzelnen API-Schlüssel verwenden und mehrere Builds durchgeführt werden, können Sie das Ratenlimit erreichen und 403-Fehler erhalten. In einer CI-Umgebung muss eine Caching-Strategie verwendet werden.
Im September 2025 begann Sonatype OSS Index, die Verwendung von API-Tokens zur Authentifizierung durchzusetzen. Im April 2026 begann eine anschließende Migration zu Sonatype Guide, die einen Übergang zur Verwendung von Sonatype-Guide-API-Tokens einleitete, die die bisherigen OSS-Index-API-Schlüssel/-Tokens vor Ende 2026 ersetzen sollen.
Ohne Anmeldedaten deaktiviert Dependency Check den OSS-Index-Analyzer automatisch. Informationen zum Festlegen der Analyzer-Anmeldedaten für die Verwendung eines Sonatype-Guide-Tokens oder eines bisherigen OSS-Index-API-Schlüssels finden Sie in der Dokumentation für die CLI-, Maven-, Gradle- oder Ant-Integrationen.
Wenn Sie Sonatype OSS Index (über Guide) verwenden möchten, müssen Sie Dependency-Check konfigurieren und die Auswirkungen der Migration zu Sonatype Guide berücksichtigen, dessen kommerzielles/Nutzungsmodell sich geändert hat. Weitere Informationen finden Sie in der Analyzer-Dokumentation.
Ab 9.0.0+ können Benutzer aufgrund der Abhängigkeitsauflösung auf Probleme mit NoSuchMethodError-Ausnahmen stoßen. Wenn Sie auf dieses Problem stoßen, müssen Sie einige der transitiven Abhängigkeiten von dependency-check auf bestimmte Versionen festpinnen. Zum Beispiel:
/buildSrc/build.gradle
dependencies {
constraints {
// org.owasp.dependencycheck needs at least this version of jackson. Other plugins pull in older versions..
add("implementation", "com.fasterxml.jackson:jackson-bom:2.21.2")
// org.owasp.dependencycheck needs these versions. Other plugins pull in older versions..
add("implementation", "org.apache.commons:commons-lang3:3.20.0")
add("implementation", "org.apache.commons:commons-text:1.15.0")
}
}
Mindest-Java-Version: Java 11
OWASP dependency-check benötigt Zugriff auf mehrere extern gehostete Ressourcen. Weitere Informationen finden Sie unter Erforderlicher Internetzugriff.
Um bestimmte Technologie-Stacks zu analysieren, müssen möglicherweise weitere Entwicklungswerkzeuge installiert sein. Einige der unten aufgeführten Analysen können experimentell sein und erfordern, dass die experimentellen Analyzer aktiviert werden.
go installiert sein.Elixir-Projekten erfordert mix_audit.npm-, pnpm- und yarn-Projekten erfordert, dass npm, pnpm oder yarn installiert ist.
audit-Funktion der einzelnen Werkzeuge.bundle-audit, das installiert sein muss.Anweisungen zur Verwendung des Jenkins-Plugins finden Sie auf der OWASP-Dependency-Check-Plugin-Seite.
Ausführlichere Anweisungen finden Sie auf den GitHub-Seiten von dependency-check. Die neueste CLI kann von GitHub im Releases-Bereich heruntergeladen werden.
Herunterladen der neuesten Version:
$ VERSION=$(curl -s https://dependency-check.github.io/DependencyCheck/current.txt)
$ curl -Ls "https://github.com/dependency-check/DependencyCheck/releases/download/v$VERSION/dependency-check-$VERSION-release.zip" --output dependency-check.zip
Unter *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
Unter Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
Auf dem Mac mit Homebrew
Hinweis: Homebrew-Benutzer, die von 5.x auf 6.0.0 aktualisieren, müssen dependency-check.sh --purge ausführen.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
Ausführlichere Anweisungen finden Sie auf den GitHub-Seiten von dependency-check-maven. Standardmäßig ist das Plugin an die verify-Phase gekoppelt (d. h. mvn verify). Alternativ kann das Plugin direkt über mvn org.owasp:dependency-check-maven:check aufgerufen werden.
Das dependency-check-Plugin kann wie folgt konfiguriert werden:
<project>
<build>
<plugins>
...
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>
Anweisungen zur Verwendung des Gradle-Plugins finden Sie auf der GitHub-Seite von dependency-check-gradle.
Anweisungen zur Verwendung der Ant-Task finden Sie auf der GitHub-Seite von dependency-check-ant.
Damit die Installation erfolgreich durchläuft, müssen die folgenden Komponenten installiert sein:
java -version 25.0mvn -version 3.6.3 und höherDie Testfälle erfordern:
go version 1.12 und höherDie folgenden Anweisungen beschreiben, wie der aktuelle Snapshot kompiliert und verwendet wird. Auch wenn es die erklärte Absicht ist, einen stabilen Snapshot zu pflegen, wird empfohlen, die oben aufgeführten Release-Versionen zu verwenden.
Das Repository enthält aufgrund von Testressourcen einige große Dateien. Das Team hat versucht, die Historie so weit wie möglich zu bereinigen. Es wird jedoch empfohlen, einen Shallow Clone durchzuführen, um sich Zeit zu sparen:
git clone --depth 1 https://github.com/dependency-check/DependencyCheck.git
Unter *nix
$ mvn -s settings.xml install
$ ./cli/target/release/bin/dependency-check.sh -h
$ ./cli/target/release/bin/dependency-check.sh --out . --scan ./src/test/resources
Unter Windows
> mvn -s settings.xml install
> .\cli\target\release\bin\dependency-check.bat -h
> .\cli\target\release\bin\dependency-check.bat --out . --scan ./src/test/resources
Laden Sie anschließend die resultierende Datei 'dependency-check-report.html' in Ihren bevorzugten Browser.
Um Ihre Turnaround-Zeiten zu verkürzen, können Sie auch kompilieren, ohne jedes Mal die Tests auszuführen:
mvn -s settings.xml install -DskipTests=true
Denken Sie bitte daran, die Tests vor dem Öffnen des PR mindestens einmal auszuführen. :)
Um Ihre Tests in IntelliJ Idea debuggen zu können, können Sie eine Maven-Konfiguration einführen, die Ihren Test ausführt und das Debugging mit Haltepunkten usw. ermöglicht.
Im Grunde führen Sie das aus, was unter https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test beschrieben ist, und setzen forkCount auf 0, andernfalls funktioniert das Debugging nicht.
Schritt für Schritt:
Run -> Edit Configurations+ (Add new configuration) -> MavenRun testscorecommand line Folgendes ein: -DforkCount=0 -f pom.xml -s ../settings.xml testOKRun -> Debug, und wählen Sie dann die neu erstellte Run-KonfigurationIntelliJ führt nun den Testlauf für das Unterprojekt core mit aktiviertem Debugging aus. Haltepunkte, die an beliebiger Stelle im Code gesetzt werden, sollten funktionieren.
Wenn Sie Ihre Turnaround-Zeiten verkürzen möchten, können Sie auch nur eine einzelne Funktion oder eine Testklasse testen.
Dies funktioniert, indem Sie -Dtest=MyTestClass oder -Dtest=MyTestClass#myTestFunction zur Run-Konfiguration hinzufügen. Die vollständige Befehlszeile in der Run-Konfiguration wäre dann:
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
Im folgenden Beispiel wird davon ausgegangen, dass sich die zu prüfende Quelle im aktuellen Arbeitsverzeichnis befindet und die Berichte nach $(pwd)/odc-reports geschrieben werden. Es werden persistente Daten- und Cache-Verzeichnisse verwendet, sodass Sie den Container nach der Ausführung zerstören können.
Für Linux:
#!/bin/sh
DC_VERSION="latest"
DC_DIRECTORY=$HOME/OWASP-Dependency-Check
DC_PROJECT="dependency-check scan: $(pwd)"
DATA_DIRECTORY="$DC_DIRECTORY/data"
CACHE_DIRECTORY="$DC_DIRECTORY/data/cache"
if [ ! -d "$DATA_DIRECTORY" ]; then
echo "Initially creating persistent directory: $DATA_DIRECTORY"
mkdir -p "$DATA_DIRECTORY"
fi
if [ ! -d "$CACHE_DIRECTORY" ]; then
echo "Initially creating persistent directory: $CACHE_DIRECTORY"
mkdir -p "$CACHE_DIRECTORY"
fi
# Make sure we are using the latest version
docker pull owasp/dependency-check:$DC_VERSION
docker run --rm \
-e user=$USER \
-u $(id -u ${USER}):$(id -g ${USER}) \
--volume $(pwd):/src:z \
--volume "$DATA_DIRECTORY":/usr/share/dependency-check/data:z \
--volume $(pwd)/odc-reports:/report:z \
owasp/dependency-check:$DC_VERSION \
--scan /src \
--format "ALL" \
--project "$DC_PROJECT" \
--out /report
# Use suppression like this: (where /src == $pwd)
# --suppression "/src/security/dependency-check-suppression.xml"
Für Windows:
@echo off
set DC_VERSION="latest"
set DC_DIRECTORY=%USERPROFILE%\OWASP-Dependency-Check
SET DC_PROJECT="dependency-check scan: %CD%"
set DATA_DIRECTORY="%DC_DIRECTORY%\data"
set CACHE_DIRECTORY="%DC_DIRECTORY%\data\cache"
IF NOT EXIST %DATA_DIRECTORY% (
echo Initially creating persistent directory: %DATA_DIRECTORY%
mkdir %DATA_DIRECTORY%
)
IF NOT EXIST %CACHE_DIRECTORY% (
echo Initially creating persistent directory: %CACHE_DIRECTORY%
mkdir %CACHE_DIRECTORY%
)
rem Make sure we are using the latest version
docker pull owasp/dependency-check:%DC_VERSION%
docker run --rm ^
--volume %CD%:/src ^
--volume %DATA_DIRECTORY%:/usr/share/dependency-check/data ^
--volume %CD%/odc-reports:/report ^
owasp/dependency-check:%DC_VERSION% ^
--scan /src ^
--format "ALL" ^
--project "%DC_PROJECT%" ^
--out /report
rem Use suppression like this: (where /src == %CD%)
rem --suppression "/src/security/dependency-check-suppression.xml"
Um dependency-check (mit Java 11) zu erstellen, führen Sie den folgenden Befehl aus:
mvn -s settings.xml install
Dependency-check referenziert mehrere verwundbare Abhängigkeiten, die außer als Testressourcen nie verwendet werden. Alle diese optionalen Testabhängigkeiten sind im Profil test-dependencies enthalten. Um dependency-check gegen sich selbst auszuführen, schließen Sie einfach das Profil test-dependencies aus:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
Die Dokumentation auf den GitHub-Seiten wird aus diesem Repository generiert:
mvn -s settings.xml site site:stage
Wenn Sie fertig sind, rufen Sie in Ihrem Browser ./target/staging/index.html auf.
Um das Docker-Image von dependency-check zu erstellen, führen Sie den folgenden Befehl aus:
mvn -s settings.xml install
./docker-build.sh
Die Erlaubnis zur Änderung und Weiterverbreitung wird unter den Bedingungen der Apache-2.0-Lizenz erteilt. Die vollständige Lizenz finden Sie in der Datei LICENSE.txt.
Dependency-Check verwendet mehrere andere Open-Source-Bibliotheken. Weitere Informationen finden Sie in der Datei NOTICE.txt.
Dieses Produkt verwendet die NVD-API, wird jedoch von der NVD weder unterstützt noch zertifiziert.
Copyright (c) 2012-2025 Jeremy Long. Alle Rechte vorbehalten.
