Dependency-Check est un outil d'analyse de la composition logicielle (SCA) qui tente de détecter les vulnérabilités divulguées publiquement contenues dans les dépendances d'un projet. Pour ce faire, il détermine s'il existe un identifiant CPE (Common Platform Enumeration) pour une dépendance donnée. S'il est trouvé, il générera un rapport reliant aux entrées CVE associées.
La documentation et les liens vers les versions binaires de production peuvent être trouvés sur les pages github. De plus, plus d'informations sur l'architecture et les moyens d'étendre le contrôle des dépendances peuvent être trouvées sur le wiki.
Ce produit utilise l'API NVD mais n'est ni approuvé ni certifié par le NVD.
Java 11 est désormais requis pour exécuter le contrôle de dépendance 11.0.0 ou supérieur
Mise à niveau de la base de données H2
11.0.0 contient des modifications importantes utilisant la base de données H2 locale. Un téléchargement complet des données NVD aura lieu. Notez que si vous utilisez un répertoire de données partagé, le fichier de base de données h2 n'est pas compatible avec les anciennes versions de dependency-check. Si vous rencontrez des problèmes, vous devrez peut-être effectuer une purge :
./gradlew dependencyCheckPurge
mvn org.owasp:dependency-check-maven:9.0.0:purge
dependency-check.sh --purge
La mise à niveau vers 10.0.2 ou version ultérieure est obligatoire
Les anciennes versions de dependency-check provoquent de nombreuses requêtes dupliquées qui aboutissent à des échecs de traitement et entraînent une charge inutile sur l'API NVD. Dependency-check 10.0.2 utilise un en-tête User-Agent
mis à jour qui permettra au NVD de bloquer les appels de l'ancien client.
La vérification des dépendances est passée de l'utilisation du flux de données NVD à l'API NVD. Les utilisateurs de contrôle de dépendance sont fortement encouragés à obtenir une clé API NVD ; voir https://nvd.nist.gov/developers/request-an-api-key Sans API NVD, les mises à jour de la vérification des dépendances des clés seront extrêmement lentes . Veuillez consulter la documentation des intégrations cli, maven, gradle ou ant pour savoir comment définir la clé API NVD.
L'API NVD a imposé des limites de débit. Si vous utilisez une seule CLÉ API et que plusieurs builds se produisent, vous pourriez atteindre la limite de débit et recevoir des erreurs 403. Dans un environnement CI, il faut utiliser une stratégie de mise en cache.
Avec la version 9.0.0, les utilisateurs peuvent rencontrer des problèmes avec les exceptions NoSuchMethodError
en raison de la résolution des dépendances. Si vous rencontrez ce problème, vous devrez épingler certaines des dépendances transitives de dependency-check sur des versions spécifiques. Par exemple:
/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.16.1 " )
// org.owasp.dependencycheck needs these versions. Other plugins pull in older versions..
add( " implementation " , " org.apache.commons:commons-lang3:3.14.0 " )
add( " implementation " , " org.apache.commons:commons-text:1.11.0 " )
}
}
Version Java minimale : Java 11
La vérification des dépendances OWASP nécessite l’accès à plusieurs ressources hébergées en externe. Pour plus d’informations, consultez Accès Internet requis.
Afin d'analyser certaines piles technologiques, la vérification des dépendances peut nécessiter l'installation d'autres outils de développement. Certaines des analyses répertoriées ci-dessous peuvent être expérimentales et nécessitent l'activation des analyseurs expérimentaux.
go
doit être installé.Elixir
nécessite mix_audit
.npm
, pnpm
et yarn
nécessite l'installation npm
, pnpm
ou yarn
.audit
respective de chacun.bundle-audit
, qui doit être installé. Pour obtenir des instructions sur l'utilisation du plugin Jenkins, veuillez consulter la page du plugin OWASP Dependency-Check.
Des instructions plus détaillées peuvent être trouvées sur les pages github de vérification des dépendances. La dernière CLI peut être téléchargée depuis github dans la section versions.
Téléchargement de la dernière version :
$ VERSION=$(curl -s https://jeremylong.github.io/DependencyCheck/current.txt)
$ curl -Ls "https://github.com/jeremylong/DependencyCheck/releases/download/v$VERSION/dependency-check-$VERSION-release.zip" --output dependency-check.zip
Le *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
Sous Windows
> .bindependency-check.bat -h
> .bindependency-check.bat --out . --scan [path to jar files to be scanned]
Sur Mac avec Homebrew Note - les utilisateurs homebrew passant de 5.x à 6.0.0 devront exécuter dependency-check.sh --purge
.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
Des instructions plus détaillées peuvent être trouvées sur les pages github dependency-check-maven. Par défaut, le plugin est lié à la phase verify
(c'est-à-dire mvn verify
). Alternativement, on peut appeler directement le plugin via mvn org.owasp:dependency-check-maven:check
.
Le plugin de vérification des dépendances peut être configuré en utilisant les éléments suivants :
< 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 >
Pour obtenir des instructions sur l'utilisation du plugin Gradle, veuillez consulter la page github dependency-check-gradle.
Pour obtenir des instructions sur l'utilisation de la tâche Ant, veuillez consulter la page github dependency-check-ant.
Pour que l'installation réussisse, vous devez avoir installé les composants suivants :
java -version
11.0mvn -version
3.5.0 et supérieureLes cas de tests nécessitent :
go version
1.12 et supérieureLes instructions suivantes expliquent comment compiler et utiliser l'instantané actuel. Bien que l'intention soit de conserver un instantané stable, il est recommandé d'utiliser les versions répertoriées ci-dessus.
Le référentiel contient des fichiers volumineux en raison des ressources de test. L'équipe a essayé de nettoyer l'histoire autant que possible. Cependant, il est recommandé d'effectuer un clone superficiel pour gagner du temps :
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
Le *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
Sous Windows
> mvn -s settings.xml install
> .clitargetreleasebindependency-check.bat -h
> .clitargetreleasebindependency-check.bat --out . --scan ./src/test/resources
Chargez ensuite le «dependency-check-report.html» résultant dans votre navigateur préféré.
Pour accélérer vos temps de cycle, vous pouvez également compiler sans exécuter les tests à chaque fois :
mvn -s settings.xml install -DskipTests=true
N'oubliez pas d'exécuter au moins les tests une fois avant d'ouvrir le PR. :)
Pour pouvoir déboguer vos tests dans IntelliJ Idea, vous pouvez introduire une configuration maven qui exécute votre test et permet le débogage avec des points d'arrêt, etc.
Fondamentalement, vous faites ce qui est décrit dans https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test et définissez forkCount
sur 0, sinon le débogage ne fonctionnera pas.
Pas à pas:
Run -> Edit Configurations
+ (Add new configuration) -> Maven
Run tests
core
command line
, saisissez -DforkCount=0 -f pom.xml -s ../settings.xml test
OK
Run -> Debug
, puis choisissez la configuration d'exécution nouvellement créée IntelliJ va maintenant exécuter le test pour le sous-projet core
avec le débogage activé. Les points d'arrêt définis n'importe où dans le code devraient fonctionner.
Si vous souhaitez accélérer vos temps de cycle d’exécution, vous pouvez également simplement tester une fonction ou une classe de test.
Cela fonctionne en ajoutant -Dtest=MyTestClass
ou -Dtest=MyTestClass#myTestFunction
à la configuration d'exécution. La ligne de commande complète dans la configuration d'exécution serait alors :
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
Dans l'exemple suivant, on suppose que la source à vérifier se trouve dans le répertoire de travail actuel et que les rapports seront écrits dans $(pwd)/odc-reports
. Des données persistantes et des répertoires de cache sont utilisés, vous permettant de détruire le conteneur après son exécution.
Pour 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"
Pour 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% datacache "
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"
Pour créer un contrôle de dépendance (à l'aide de Java 11), exécutez la commande :
mvn -s settings.xml install
La vérification des dépendances fait référence à plusieurs dépendances vulnérables qui ne sont jamais utilisées sauf comme ressources de test. Toutes ces dépendances de test facultatives sont incluses dans le profil test-dependencies
. Pour exécuter la vérification des dépendances sur elle-même, excluez simplement le profil test-dependencies
:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
La documentation sur les pages github est générée à partir de ce référentiel :
mvn -s settings.xml site site:staging
Une fois terminé, pointez votre navigateur sur ./target/staging/index.html
.
Pour créer une image Docker de vérification des dépendances, exécutez la commande :
mvn -s settings.xml install
./build-docker.sh
L'autorisation de modifier et de redistribuer est accordée selon les termes de la licence Apache 2.0. Voir le fichier LICENSE.txt pour la licence complète.
Dependency-Check utilise plusieurs autres bibliothèques open source. Veuillez consulter le fichier NOTICE.txt pour plus d'informations.
Ce produit utilise l'API NVD mais n'est ni approuvé ni certifié par le NVD.
Copyright (c) 2012-2024 Jeremy Long. Tous droits réservés.