
OWASP dependency-check es una utilidad de análisis de composición de software que detecta vulnerabilidades divulgadas públicamente en las dependencias de las aplicaciones.
Dependency-Check es una herramienta de Análisis de Composición de Software (SCA) que intenta detectar vulnerabilidades divulgadas públicamente contenidas en las dependencias de un proyecto. Lo hace determinando si existe un identificador de Common Platform Enumeration (CPE) 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 github pages. Además, se puede encontrar más información sobre la arquitectura y las formas de extender dependency-check en el wiki.
Este producto utiliza la API de NVD, pero no está respaldado ni certificado por NVD.
Debido a cambios de compatibilidad en la API de NVD, es obligatoria una actualización. Consulte #7463 para obtener más información.
Ahora se requiere Java 11 para ejecutar dependency-check 11.0.0 o superior
Actualización de la base de datos H2
11.0.0 contiene cambios que rompen la compatibilidad en el uso de la base de datos H2 local. Se realizará una descarga completa
de los datos de NVD. Tenga en cuenta que si está utilizando un directorio de datos compartido,
el archivo de base de datos h2 no es compatible con versiones anteriores de dependency-check.
Si tiene problemas, es posible que necesite ejecutar una purga:
./gradlew dependencyCheckPurgemvn org.owasp:dependency-check-maven:11.0.0:purgedependency-check.sh --purgeDependency-check pasó de usar el data-feed de NVD a la API de NVD desde la versión 9.0.0+ (enero de 2024).
Se recomienda encarecidamente a los usuarios de dependency-check que obtengan una clave de API de NVD; consulte https://nvd.nist.gov/developers/request-an-api-key
Sin una clave de API de NVD, las actualizaciones de dependency-check serán extremadamente lentas.
Consulte la documentación de las integraciones cli, maven, gradle o ant sobre
cómo configurar la clave de API de NVD.
La API de NVD impone límites de velocidad. Si está utilizando una única clave de API y se producen múltiples compilaciones, podría alcanzar el límite de velocidad y recibir errores 403. En un entorno de CI se debe utilizar una estrategia de caché.
En septiembre de 2025, Sonatype OSS Index comenzó a exigir el uso de tokens de API para la autenticación. En abril de 2026 comenzó una migración posterior a Sonatype Guide, dando inicio a una transición hacia el uso de tokens de API de Sonatype Guide que están planificados para reemplazar las claves/tokens de API de OSS Index heredados antes de finales de 2026.
Sin credenciales, Dependency Check deshabilitará automáticamente el analizador de OSS Index. Consulte la documentación de las integraciones CLI, Maven, Gradle o Ant sobre cómo configurar las credenciales del analizador para usar un token de Sonatype Guide o una clave de API de OSS Index heredada.
Si desea utilizar Sonatype OSS Index (a través de Guide), debe configurar Dependency-Check y considerar las implicaciones de la migración a Sonatype Guide; cuyo modelo comercial/de uso ha cambiado. Consulte la documentación del analizador para obtener más información.
Con la versión 9.0.0+, los usuarios pueden encontrar problemas con excepciones NoSuchMethodError debido a
la resolución de dependencias. Si se encuentra con este problema, deberá fijar algunas de
las dependencias transitivas de dependency-check a versiones específicas. Por ejemplo:
/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")
}
}
Versión mínima de Java: Java 11
OWASP dependency-check requiere acceso a varios recursos alojados externamente. Para obtener más información, consulte Acceso a Internet requerido.
Para analizar algunas pilas tecnológicas, dependency-check puede requerir que se instalen otras herramientas de desarrollo. Algunos de los análisis enumerados a continuación pueden ser experimentales y requerir que los analizadores experimentales estén habilitados.
go.Elixir requiere mix_audit.npm, pnpm y yarn requiere que se instale npm, pnpm o yarn.
audit respectiva de cada uno.bundle-audit, que debe estar instalado.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 dependency-check github pages. La última CLI se puede descargar desde github en la sección de releases.
Descargando la última versión:
$ 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
En *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
En Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
En Mac con Homebrew
Nota - los usuarios de homebrew que actualicen de 5.x a 6.0.0 deberán ejecutar dependency-check.sh --purge.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
Se pueden encontrar instrucciones más detalladas en las dependency-check-maven github pages.
De forma predeterminada, 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 dependency-check se puede configurar de la siguiente manera:
<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 del plugin de Gradle, consulte la dependency-check-gradle github page.
Para obtener instrucciones sobre el uso de la tarea de Ant, consulte la dependency-check-ant github page.
Para que la instalación sea exitosa, debe tener instalados los siguientes componentes:
java -version 25.0mvn -version 3.6.3 o superiorLos casos de prueba requieren:
go version 1.12 o superiorLas siguientes instrucciones describen cómo compilar y usar la instantánea (snapshot) actual. Aunque la intención es mantener una instantánea estable, se recomienda que se utilicen las versiones publicadas enumeradas anteriormente.
El repositorio contiene algunos archivos grandes debido a los recursos de prueba. El equipo ha intentado limpiar el historial tanto como ha sido posible. Sin embargo, se recomienda realizar un clon superficial (shallow clone) para ahorrar tiempo:
git clone --depth 1 https://github.com/dependency-check/DependencyCheck.git
En *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
En 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
Luego cargue el archivo 'dependency-check-report.html' resultante en su navegador favorito.
Para acelerar sus tiempos de ciclo, también puede compilar sin ejecutar las pruebas cada vez:
mvn -s settings.xml install -DskipTests=true
Recuerde ejecutar las pruebas al menos una vez antes de abrir el PR. :)
Para poder depurar sus pruebas en IntelliJ Idea, puede crear una configuración de maven que ejecute su prueba y habilite la depuración con puntos de interrupción (breakpoints), etc.
Básicamente, haga lo que se describe en https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test y establezca forkCount en 0; de lo contrario, la depuración no funcionará.
Paso a paso:
Run -> Edit Configurations+ (Add new configuration) -> MavenRun testscorecommand line, introduzca -DforkCount=0 -f pom.xml -s ../settings.xml testOKRun -> Debug y, a continuación, elija la nueva configuración de ejecución creadaIntelliJ ejecutará ahora la ejecución de pruebas para el subproyecto core con la depuración habilitada. Los puntos de interrupción establecidos en cualquier parte del código deberían funcionar.
Si desea acelerar sus tiempos de ciclo, también puede probar solo una función o una clase de prueba.
Esto funciona añadiendo -Dtest=MyTestClass o -Dtest=MyTestClass#myTestFunction a la configuración de ejecución. La línea de comandos completa en la configuración de ejecución sería entonces:
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
En el siguiente ejemplo se asume que el código fuente a verificar está en el directorio de trabajo actual y que los informes se escribirán en $(pwd)/odc-reports. Se utilizan directorios de datos y caché persistentes, lo que le permite destruir el contenedor después de la ejecución.
Para 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"
Para 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"
Para compilar dependency-check (usando Java 11) ejecute el comando:
mvn -s settings.xml install
Dependency-check hace referencia a varias dependencias vulnerables que nunca se utilizan
salvo como recursos de prueba. Todas estas dependencias de prueba opcionales están incluidas en
el perfil test-dependencies. Para ejecutar dependency-check sobre sí mismo, simplemente
excluya el perfil test-dependencies:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
La documentación en las github pages se genera a partir de este repositorio:
mvn -s settings.xml site site:stage
Una vez finalizado, apunte su navegador a ./target/staging/index.html.
Para construir la imagen docker de dependency-check ejecute el comando:
mvn -s settings.xml install
./docker-build.sh
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.
Este producto utiliza la API de NVD, pero no está respaldado ni certificado por NVD.
Copyright (c) 2012-2025 Jeremy Long. Todos los derechos reservados.
