
Herramienta de análisis de composición de software que detecta vulnerabilidades divulgadas públicamente en dependencias de proyectos mediante coincidencia CPE, generando informes detallados con enlaces a CVE para integración en CI/CD.
Dependency-Check es una utilidad que intenta detectar vulnerabilidades divulgadas públicamente que se encuentren dentro de las dependencias de un proyecto. Lo hace determinando si existe un identificador de Platform Enumeration (CPE) común para una dependencia determinada. Si se encuentra, generará un informe con enlaces a las entradas CVE asociadas.
La documentación y los enlaces a las versiones binarias de producción se pueden encontrar en las páginas de github. Además, se puede encontrar más información sobre la arquitectura y las formas de ampliar dependency-check en la wiki.
Para obtener instrucciones sobre el uso del plugin de Jenkins, consulte la página del Plugin OWASP Dependency-Check.
Se pueden encontrar instrucciones más detalladas en las páginas de github de dependency-check. La última versión de la CLI se puede descargar desde la página de dependency-check en bintray.
En *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --project Testing --out . --scan [ruta a los archivos jar a escanear]
En Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --project Testing --out . --scan [ruta a los archivos jar a escanear]
En Mac con Homebrew
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --project Testing --out . --scan [ruta a los archivos jar a escanear]
Se pueden encontrar instrucciones más detalladas en las páginas de github de dependency-check-maven.
Por defecto, el plugin está vinculado a la fase verify (es decir, mvn verify). Alternativamente,
se puede invocar directamente el plugin mediante mvn org.owasp:dependency-check-maven:check.
El plugin de dependency-check se puede configurar usando lo siguiente:
<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>
Para obtener instrucciones sobre el uso de la Tarea Ant, consulte la página de github de dependency-check-ant.
Las siguientes instrucciones describen cómo compilar y usar la instantánea actual. Si bien se pretende mantener una instantánea estable, se recomienda utilizar las versiones publicadas mencionadas anteriormente.
El repositorio contiene algunos archivos grandes debido a los recursos de prueba. El equipo ha intentado limpiar el historial en la medida de lo posible. Sin embargo, se recomienda realizar un clon superficial para ahorrar tiempo:
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
En *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
En 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
Luego cargue el archivo 'dependency-check-report.html' resultante en su navegador favorito.
En el siguiente ejemplo se asume que la fuente a verificar se encuentra en el directorio de trabajo actual. Se utilizan directorios de datos y reportes persistentes, lo que permite destruir el contenedor después de ejecutarlo.
#!/bin/sh
OWASPDC_DIRECTORY=$HOME/OWASP-Dependency-Check
DATA_DIRECTORY="$OWASPDC_DIRECTORY/data"
REPORT_DIRECTORY="$OWASPDC_DIRECTORY/reports"
if [ ! -d "$DATA_DIRECTORY" ]; then
echo "Creando directorios persistentes inicialmente"
mkdir -p "$DATA_DIRECTORY"
chmod -R 777 "$DATA_DIRECTORY"
mkdir -p "$REPORT_DIRECTORY"
chmod -R 777 "$REPORT_DIRECTORY"
fi
# Asegurarse de usar la última versión
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"
Tenga en cuenta que al actualizar desde la versión 1.x.x, será necesario realizar los siguientes cambios en su configuración.
Para admitir múltiples archivos de supresión, el mecanismo para configurar los archivos de supresión ha cambiado. Por lo tanto, los usuarios que hayan definido un archivo de supresión en su configuración deberán actualizarlo.
Vea los ejemplos a continuación:
Antiguo:
<dependency-check
failBuildOnCVSS="3"
suppressionFile="suppression.xml">
</dependency-check>
Nuevo:
<dependency-check
failBuildOnCVSS="3">
<suppressionFile path="suppression.xml" />
</dependency-check>
Antiguo:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFile>suppression.xml</suppressionFile>
</configuration>
</plugin>
Nuevo:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFiles>
<suppressionFile>suppression.xml</suppressionFile>
</suppressionFiles>
</configuration>
</plugin>
Además de los cambios en el archivo de supresión, la tarea dependencyCheck ha sido
renombrada a dependencyCheckAnalyze.
Antiguo:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath 'org.owasp:dependency-check-gradle:2.0.1-SNAPSHOT'
}
}
apply plugin: 'org.owasp.dependencycheck'
dependencyCheck {
suppressionFile='ruta/al/archivo_de_supresion.xml'
}
check.dependsOn dependencyCheckAnalyze
Nuevo:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath 'org.owasp:dependency-check-gradle:2.0.1-SNAPSHOT'
}
}
apply plugin: 'org.owasp.dependencycheck'
dependencyCheck {
suppressionFiles = ['ruta/al/archivo_de_supresion1.xml', 'ruta/al/archivo_de_supresion2.xml']
}
check.dependsOn dependencyCheckAnalyze
Suscribirse: [[email protected]] subscribe
Publicar: [[email protected]] post
Archivo: grupo de Google
Dependency-Check es propiedad de Jeremy Long (Copyright © 2012-2017). Todos los derechos reservados.
Se concede permiso para modificar y redistribuir bajo los términos de la licencia Apache 2.0. Consulte el archivo LICENSE.txt para ver la licencia completa.
Dependency-Check utiliza varias otras bibliotecas de código abierto. Consulte el archivo NOTICE.txt para obtener más información.