
OWASP dependency-check è un'utilità di analisi della composizione software che rileva vulnerabilità pubblicamente divulgate nelle dipendenze delle applicazioni.
Dependency-Check è uno strumento di Software Composition Analysis (SCA) che tenta di rilevare le vulnerabilità divulgate pubblicamente presenti nelle dipendenze di un progetto. Lo fa determinando se esiste un identificatore Common Platform Enumeration (CPE) per una determinata dipendenza. Se lo trova, genera un report che collega alle voci CVE associate.
La documentazione e i link alle release binarie di produzione sono disponibili sulle github pages. Inoltre, ulteriori informazioni sull'architettura e sui modi per estendere dependency-check sono disponibili nel wiki.
Questo prodotto utilizza l'API NVD ma non è approvato né certificato dalla NVD.
A causa di modifiche di compatibilità dell'API NVD, l'aggiornamento è obbligatorio. Vedere #7463 per maggiori informazioni.
Java 11 è ora richiesto per eseguire dependency-check 11.0.0 o versioni successive
Aggiornamento del database H2
11.0.0 contiene modifiche sostanziali nell'uso del database H2 locale. Verrà effettuato un download
completo dei dati NVD. Nota: se si utilizza una directory dati condivisa, il file
del database h2 non è compatibile con le versioni precedenti di dependency-check.
Se si verificano problemi, potrebbe essere necessario eseguire un purge:
./gradlew dependencyCheckPurgemvn org.owasp:dependency-check-maven:11.0.0:purgedependency-check.sh --purgeDependency-check è passato dall'uso del data-feed NVD all'API NVD a partire dalla 9.0.0+ (gennaio 2024).
Gli utenti di dependency-check sono fortemente incoraggiati a ottenere una chiave API NVD; vedere https://nvd.nist.gov/developers/request-an-api-key
Senza una chiave API NVD, gli aggiornamenti di dependency-check saranno estremamente lenti.
Consultare la documentazione per le integrazioni cli, maven, gradle o ant su come impostare la chiave API NVD.
L'API NVD applica dei limiti di frequenza (rate limit). Se si utilizza una singola API KEY e si verificano più build, si potrebbe raggiungere il limite di frequenza e ricevere errori 403. In un ambiente CI è necessario adottare una strategia di caching.
A settembre 2025 Sonatype OSS Index ha iniziato a imporre l'uso degli API token per l'autenticazione. Ad aprile 2026 è iniziata una successiva migrazione a Sonatype Guide, dando il via a una transizione verso l'uso dei Sonatype Guide API Token, che dovrebbero sostituire le vecchie chiavi/token API OSS Index entro la fine del 2026.
Senza credenziali, Dependency Check disabiliterà automaticamente l'analizzatore OSS Index. Consultare la documentazione per le integrazioni CLI, Maven, Gradle o Ant su come impostare le credenziali dell'analizzatore per l'uso di un token Sonatype Guide o di una vecchia chiave API OSS Index.
Se si desidera utilizzare Sonatype OSS Index (tramite Guide), è necessario configurare Dependency-Check e considerare le implicazioni della migrazione a Sonatype Guide, il cui modello commerciale/di utilizzo è cambiato. Vedere la documentazione dell'analizzatore per maggiori informazioni.
Con la 9.0.0+ gli utenti potrebbero riscontrare problemi con eccezioni NoSuchMethodError dovute alla risoluzione delle dipendenze. Se si verifica questo problema, sarà necessario fissare alcune delle dipendenze transitive di dependency-check a versioni specifiche. Ad esempio:
/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")
}
}
Versione Java minima: Java 11
OWASP dependency-check richiede l'accesso a diverse risorse ospitate esternamente. Per maggiori informazioni, vedere Accesso a Internet richiesto.
Per analizzare alcuni stack tecnologici, dependency-check potrebbe richiedere l'installazione di altri strumenti di sviluppo. Alcune delle analisi elencate di seguito potrebbero essere sperimentali e richiedere l'abilitazione degli analizzatori sperimentali.
go deve essere installato.Elixir richiede mix_audit.npm, pnpm e yarn richiede l'installazione di npm, pnpm o yarn.
audit di ciascuno.bundle-audit, che deve essere installato.Per le istruzioni sull'uso del plugin Jenkins, consultare la pagina del plugin OWASP Dependency-Check.
Istruzioni più dettagliate sono disponibili sulle github pages di dependency-check. L'ultima CLI può essere scaricata da github nella sezione releases.
Download dell'ultima release:
$ 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
Su *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
Su Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
Su Mac con Homebrew
Nota - gli utenti di homebrew che eseguono l'aggiornamento dalla 5.x alla 6.0.0 dovranno eseguire dependency-check.sh --purge.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
Istruzioni più dettagliate sono disponibili sulle github pages di dependency-check-maven. Per impostazione predefinita, il plugin è associato alla fase verify (cioè mvn verify). In alternativa, è possibile invocare direttamente il plugin tramite mvn org.owasp:dependency-check-maven:check.
Il plugin dependency-check può essere configurato come segue:
<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>
Per le istruzioni sull'uso del plugin Gradle, consultare la github page di dependency-check-gradle.
Per le istruzioni sull'uso del task Ant, consultare la github page di dependency-check-ant.
Affinché l'installazione vada a buon fine, è necessario avere installati i seguenti componenti:
java -version 25.0mvn -version 3.6.3 e versioni successiveI casi di test richiedono:
go version 1.12 e versioni successiveLe seguenti istruzioni descrivono come compilare e utilizzare lo snapshot corrente. Sebbene l'intenzione sia quella di mantenere uno snapshot stabile, si consiglia di utilizzare le versioni di release elencate sopra.
Il repository contiene alcuni file di grandi dimensioni a causa delle risorse di test. Il team ha cercato di ripulire il più possibile la cronologia. Tuttavia, si consiglia di eseguire una shallow clone per risparmiare tempo:
git clone --depth 1 https://github.com/dependency-check/DependencyCheck.git
Su *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
Su 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
Quindi caricare il file 'dependency-check-report.html' risultante nel proprio browser preferito.
Per velocizzare i tempi di iterazione, è anche possibile compilare senza eseguire i test ogni volta:
mvn -s settings.xml install -DskipTests=true
Si prega di ricordare di eseguire almeno una volta i test prima di aprire la PR. :)
Per poter eseguire il debug dei test in IntelliJ Idea, è possibile introdurre una configurazione Maven che esegua il test e abiliti il debug con breakpoint, ecc.
In pratica, si fa quanto descritto in https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test e si imposta forkCount a 0, altrimenti il debug non funzionerà.
Passo dopo passo:
Run -> Edit Configurations+ (Add new configuration) -> MavenRun testscorecommand line, inserire -DforkCount=0 -f pom.xml -s ../settings.xml testOKRun -> Debug, quindi scegliere la configurazione di esecuzione appena creataIntelliJ ora eseguirà i test per il sottoprogetto core con il debug abilitato. I breakpoint impostati in qualsiasi punto del codice dovrebbero funzionare.
Se si desidera velocizzare i tempi di iterazione, è anche possibile testare solo una funzione o una classe di test.
Questo funziona aggiungendo -Dtest=MyTestClass o -Dtest=MyTestClass#myTestFunction alla configurazione di esecuzione. La riga di comando completa nella configurazione di esecuzione sarebbe quindi:
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
Nell'esempio seguente si presuppone che il sorgente da controllare si trovi nella directory di lavoro corrente e che i report vengano scritti in $(pwd)/odc-reports. Vengono utilizzate directory persistenti per dati e cache, consentendo di eliminare il container dopo l'esecuzione.
Per 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"
Per 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"
Per compilare dependency-check (usando Java 11) eseguire il comando:
mvn -s settings.xml install
Dependency-check fa riferimento a diverse dipendenze vulnerabili che non vengono mai utilizzate se non come risorse di test. Tutte queste dipendenze di test opzionali sono incluse nel profilo test-dependencies. Per eseguire dependency-check su se stesso, è sufficiente escludere il profilo test-dependencies:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
La documentazione sulle github pages è generata da questo repository:
mvn -s settings.xml install site site:stage
A lavoro ultimato, puntare il browser su ./target/staging/index.html.
Per compilare l'immagine docker di dependency-check eseguire il comando:
mvn -s settings.xml install
./docker-build.sh
È concessa l'autorizzazione a modificare e ridistribuire secondo i termini della licenza Apache 2.0. Vedere il file LICENSE.txt per la licenza completa.
Dependency-Check utilizza diverse altre librerie open source. Consultare il file NOTICE.txt per maggiori informazioni.
Questo prodotto utilizza l'API NVD ma non è approvato né certificato dalla NVD.
Copyright (c) 2012-2025 Jeremy Long. Tutti i diritti riservati.
