
OWASP dependency-check — это утилита анализа состава программного обеспечения, которая обнаруживает публично раскрытые уязвимости в зависимостях приложений.
Dependency-Check — это инструмент анализа состава программного обеспечения (Software Composition Analysis, SCA), который пытается обнаружить публично раскрытые уязвимости, содержащиеся в зависимостях проекта. Для этого он определяет, существует ли идентификатор Common Platform Enumeration (CPE) для конкретной зависимости. Если такой идентификатор найден, инструмент создаёт отчёт со ссылками на соответствующие записи CVE.
Документация и ссылки на производственные бинарные релизы доступны на github pages. Дополнительная информация об архитектуре и способах расширения dependency-check доступна в wiki.
Этот продукт использует NVD API, но не одобрен и не сертифицирован NVD.
Из-за изменений совместимости с NVD API обновление обязательно. Дополнительную информацию см. в #7463.
Для запуска dependency-check 11.0.0 или более новых версий теперь требуется Java 11
Обновление базы данных H2
11.0.0 содержит критические изменения при использовании локальной базы данных H2. Будет выполнена полная загрузка данных NVD. Обратите внимание: если вы используете общий каталог данных, файл базы данных H2 несовместим с более старыми версиями dependency-check. При возникновении проблем может потребоваться выполнить purge:
./gradlew dependencyCheckPurgemvn org.owasp:dependency-check-maven:11.0.0:purgedependency-check.sh --purgeНачиная с 9.0.0+ (январь 2024 г.) dependency-check перешёл с использования NVD data-feed на NVD API. Пользователям dependency-check настоятельно рекомендуется получить ключ NVD API; см. https://nvd.nist.gov/developers/request-an-api-key. Без ключа NVD API обновления dependency-check будут чрезвычайно медленными. Информацию о том, как задать ключ NVD API для интеграций cli, maven, gradle или ant, см. в документации.
NVD API применяет ограничения частоты запросов (rate limits). Если вы используете один ключ API, а сборки выполняются несколько раз, вы можете достичь ограничения частоты запросов и получить ошибки 403. В среде CI необходимо использовать стратегию кэширования.
В сентябре 2025 года Sonatype OSS Index начал требовать использование API-токенов для аутентификации. В апреле 2026 года началась последующая миграция на Sonatype Guide, положившая начало переходу на использование API-токенов Sonatype Guide, которые планируется заменить устаревшими ключами/токенами OSS Index API до конца 2026 года.
Без учётных данных Dependency Check автоматически отключит анализатор OSS Index. Информацию о том, как задать учётные данные анализатора для использования токена Sonatype Guide или устаревшего ключа OSS Index API, см. в документации для интеграций CLI, Maven, Gradle или Ant.
Если вы хотите использовать Sonatype OSS Index (через Guide), необходимо настроить Dependency-Check и учесть последствия миграции на Sonatype Guide, чья коммерческая модель/модель использования изменилась. Дополнительную информацию см. в документации анализатора.
Начиная с 9.0.0+ пользователи могут столкнуться с исключениями NoSuchMethodError из-за разрешения зависимостей. Если вы столкнулись с этой проблемой, вам потребуется зафиксировать некоторые транзитивные зависимости dependency-check на конкретных версиях. Например:
/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")
}
}
Минимальная версия Java: Java 11
OWASP dependency-check требует доступа к нескольким внешним ресурсам. Дополнительную информацию см. в разделе Требуется доступ к Интернету.
Для анализа некоторых технологических стеков dependency-check может потребоваться установка других инструментов разработки. Некоторые виды анализа, перечисленные ниже, могут быть экспериментальными и требовать включения экспериментальных анализаторов.
go.Elixir требуется mix_audit.npm, pnpm и yarn необходимо установить npm, pnpm или yarn.
audit каждого из них.bundle-audit, который должен быть установлен.Инструкции по использованию плагина Jenkins см. на странице плагина OWASP Dependency-Check.
Более подробные инструкции можно найти на github pages dependency-check. Последнюю версию CLI можно загрузить с github в разделе релизов.
Загрузка последнего релиза:
$ 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
В системах *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
В Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
На Mac с Homebrew
Примечание — пользователям homebrew, выполняющим обновление с 5.x до 6.0.0, потребуется запустить dependency-check.sh --purge.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
Более подробные инструкции можно найти на github pages dependency-check-maven. По умолчанию плагин привязан к фазе verify (т.е. mvn verify). Кроме того, плагин можно вызвать напрямую через mvn org.owasp:dependency-check-maven:check.
Плагин dependency-check можно настроить следующим образом:
<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>
Инструкции по использованию плагина Gradle см. на github page dependency-check-gradle.
Инструкции по использованию задачи Ant см. на github page dependency-check-ant.
Чтобы установка прошла успешно, у вас должны быть установлены следующие компоненты:
java -version 25.0mvn -version 3.6.3 и вышеДля тестов требуется:
go version 1.12 и вышеСледующие инструкции описывают, как скомпилировать и использовать текущий snapshot. Хотя предпринимаются все усилия для поддержания стабильного snapshot, рекомендуется использовать версии релизов, перечисленные выше.
В репозитории есть несколько больших файлов из-за тестовых ресурсов. Команда постаралась максимально очистить историю. Тем не менее рекомендуется выполнить shallow clone, чтобы сэкономить время:
git clone --depth 1 https://github.com/dependency-check/DependencyCheck.git
В системах *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
В 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
Затем откройте полученный файл 'dependency-check-report.html' в вашем любимом браузере.
Чтобы ускорить цикл разработки, вы также можете компилировать без запуска тестов каждый раз:
mvn -s settings.xml install -DskipTests=true
Пожалуйста, не забудьте запустить тесты хотя бы один раз перед открытием PR. :)
Чтобы иметь возможность отлаживать тесты в IntelliJ Idea, вы можете создать конфигурацию Maven, которая выполняет тест и включает отладку с точками останова и т.д.
По сути, вы делаете то, что описано в https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test, и устанавливаете forkCount в 0, иначе отладка не будет работать.
Пошагово:
Run -> Edit Configurations+ (Добавить новую конфигурацию) -> MavenRun testscorecommand line введите -DforkCount=0 -f pom.xml -s ../settings.xml testOKRun -> Debug, затем выберите только что созданную конфигурацию запускаТеперь IntelliJ выполнит тестовый запуск для подпроекта core с включённой отладкой. Точки останова, установленные в любом месте кода, должны работать.
Если вы хотите ускорить цикл разработки, вы можете протестировать только одну функцию или один тестовый класс.
Для этого добавьте -Dtest=MyTestClass или -Dtest=MyTestClass#myTestFunction в конфигурацию запуска. В этом случае полная командная строка в конфигурации запуска будет следующей:
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
В следующем примере предполагается, что проверяемый исходный код находится в текущем рабочем каталоге, а отчёты будут записаны в $(pwd)/odc-reports. Используются постоянные каталоги данных и кэша, что позволяет уничтожить контейнер после запуска.
Для 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"
Для 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"
Чтобы собрать dependency-check (с использованием Java 11), выполните команду:
mvn -s settings.xml install
Dependency-check ссылается на несколько уязвимых зависимостей, которые никогда не используются, кроме как в качестве тестовых ресурсов. Все эти опциональные тестовые зависимости включены в профиль test-dependencies. Чтобы запустить dependency-check для проверки самого себя, просто исключите профиль test-dependencies:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
Документация на github pages генерируется из этого репозитория:
mvn -s settings.xml site site:stage
После завершения откройте в браузере файл ./target/staging/index.html.
Чтобы собрать docker-образ dependency-check, выполните команду:
mvn -s settings.xml install
./docker-build.sh
Разрешение на изменение и распространение предоставляется на условиях лицензии Apache 2.0. Полный текст лицензии см. в файле LICENSE.txt.
Dependency-Check использует несколько других библиотек с открытым исходным кодом. Дополнительную информацию см. в файле NOTICE.txt.
Этот продукт использует NVD API, но не одобрен и не сертифицирован NVD.
Copyright (c) 2012-2025 Jeremy Long. Все права защищены.
