
Dependency-Check è uno strumento che tenta di rilevare le vulnerabilità divulgate pubblicamente presenti nelle dipendenze del progetto. Lo fa determinando se esiste un identificatore Common Platform Enumeration (CPE) per una determinata dipendenza. Se trovato, genera un report con collegamenti alle voci CVE associate.
La documentazione e i collegamenti alle versioni binarie di produzione sono disponibili nelle pagine github. Inoltre, maggiori informazioni sull'architettura e sui modi per estendere dependency-check sono disponibili nel wiki.
Per istruzioni sull'uso del plugin Jenkins, consultare la pagina del plugin OWASP Dependency-Check.
Istruzioni più dettagliate sono disponibili nelle pagine github di dependency-check. L'ultima versione della CLI può essere scaricata dalla pagina dependency-check su bintray.
Su *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --project Testing --out . --scan [path to jar files to be scanned]
Su Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --project Testing --out . --scan [path to jar files to be scanned]
Su Mac con Homebrew
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --project Testing --out . --scan [path to jar files to be scanned]
Istruzioni più dettagliate sono disponibili nelle pagine github di dependency-check-maven.
Di default, il plugin è collegato alla fase verify (ovvero mvn verify). In alternativa,
è possibile invocare direttamente il plugin tramite mvn org.owasp:dependency-check-maven:check.
Il plugin dependency-check può essere configurato utilizzando quanto 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 istruzioni sull'uso del Task Ant, consultare la pagina github di dependency-check-ant.
Le seguenti istruzioni descrivono come compilare e utilizzare la snapshot corrente. Sebbene si cerchi di mantenere stabile la snapshot, si consiglia di utilizzare le versioni di rilascio elencate sopra.
Il repository contiene alcuni file di grandi dimensioni dovuti alle risorse di test. Il team ha cercato di ripulire la cronologia il più possibile. Tuttavia, si consiglia di eseguire una shallow clone per risparmiare tempo:
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
Su *nix
$ mvn install
$ ./cli/target/release/bin/dependency-check.sh -h
$ ./cli/target/release/bin/dependency-check.sh --project Testing --out . --scan ./src/test/resources
Su Windows
> mvn install
> .\dependency-check-cli\target\release\bin\dependency-check.bat -h
> .\dependency-check-cli\target\release\bin\dependency-check.bat --project Testing --out . --scan ./src/test/resources
Aprire quindi il file 'dependency-check-report.html' generato nel proprio browser preferito.
Nell'esempio seguente si presuppone che il codice sorgente da controllare si trovi nella directory di lavoro corrente. Vengono utilizzate directory persistenti per i dati e i report, consentendo di eliminare il container dopo l'esecuzione.
#!/bin/sh
OWASPDC_DIRECTORY=$HOME/OWASP-Dependency-Check
DATA_DIRECTORY="$OWASPDC_DIRECTORY/data"
REPORT_DIRECTORY="$OWASPDC_DIRECTORY/reports"
if [ ! -d "$DATA_DIRECTORY" ]; then
echo "Initially creating persistent directories"
mkdir -p "$DATA_DIRECTORY"
chmod -R 777 "$DATA_DIRECTORY"
mkdir -p "$REPORT_DIRECTORY"
chmod -R 777 "$REPORT_DIRECTORY"
fi
# Make sure we are using the latest version
docker pull owasp/dependency-check
docker run --rm \
--volume $(pwd):/src \
--volume "$DATA_DIRECTORY":/usr/share/dependency-check/data \
--volume "$REPORT_DIRECTORY":/report \
owasp/dependency-check \
--scan /src \
--format "ALL" \
--project "My OWASP Dependency Check Project"
# Use suppression like this: (/src == $pwd)
# --suppression "/src/security/dependency-check-suppression.xml"
Nota: quando si effettua l'aggiornamento dalla versione 1.x.x, sarà necessario apportare le seguenti modifiche alla propria configurazione.
Per supportare più file di soppressione, il meccanismo di configurazione dei file di soppressione è cambiato. Di conseguenza, gli utenti che hanno definito un file di soppressione nella propria configurazione dovranno aggiornarlo.
Vedere gli esempi seguenti:
Vecchio:
<dependency-check
failBuildOnCVSS="3"
suppressionFile="suppression.xml">
</dependency-check>
Nuovo:
<dependency-check
failBuildOnCVSS="3">
<suppressionFile path="suppression.xml" />
</dependency-check>
Vecchio:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFile>suppression.xml</suppressionFile>
</configuration>
</plugin>
Nuovo:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFiles>
<suppressionFile>suppression.xml</suppressionFile>
</suppressionFiles>
</configuration>
</plugin>
Oltre alle modifiche al file di soppressione, l'attività dependencyCheck è stata
rinominata in dependencyCheckAnalyze.
Vecchio:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath 'org.owasp:dependency-check-gradle:2.0.1-SNAPSHOT'
}
}
apply plugin: 'org.owasp.dependencycheck'
dependencyCheck {
suppressionFile='path/to/suppression.xml'
}
check.dependsOn dependencyCheckAnalyze
Nuovo:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath 'org.owasp:dependency-check-gradle:2.0.1-SNAPSHOT'
}
}
apply plugin: 'org.owasp.dependencycheck'
dependencyCheck {
suppressionFiles = ['path/to/suppression1.xml', 'path/to/suppression2.xml']
}
check.dependsOn dependencyCheckAnalyze
Iscriviti: [[email protected]] subscribe
Invia: [[email protected]] post
Archivio: gruppo Google
Dependency-Check è protetto da copyright (c) 2012-2017 Jeremy Long. Tutti i diritti riservati.
Il permesso di modificare e ridistribuire è concesso 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. Vedere il file NOTICE.txt per ulteriori informazioni.