
Dependency-Check — это утилита, которая пытается обнаруживать публично раскрытые уязвимости в зависимостях проекта. Для этого она определяет, существует ли идентификатор Common Platform Enumeration (CPE) для данной зависимости. Если он найден, утилита создаёт отчёт со ссылками на соответствующие записи CVE.
Документация и ссылки на готовые бинарные релизы доступны на страницах GitHub. Дополнительную информацию об архитектуре и способах расширения dependency-check можно найти в [вики].
Инструкции по использованию плагина Jenkins см. на странице плагина OWASP Dependency-Check.
Более подробные инструкции можно найти на страницах dependency-check на GitHub. Последнюю версию CLI можно загрузить со страницы dependency-check на bintray.
В *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --project Testing --out . --scan [path to jar files to be scanned]
В Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --project Testing --out . --scan [path to jar files to be scanned]
На Mac с Homebrew
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --project Testing --out . --scan [path to jar files to be scanned]
Более подробные инструкции можно найти на страницах dependency-check-maven на GitHub.
По умолчанию плагин привязан к фазе 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>
Инструкции по использованию задачи Ant см. на странице dependency-check-ant на GitHub.
Приведённые ниже инструкции описывают, как скомпилировать и использовать текущий snapshot. Несмотря на все усилия поддерживать стабильный snapshot, рекомендуется использовать релизные версии, перечисленные выше.
Репозиторий содержит несколько больших файлов из-за тестовых ресурсов. Команда постаралась максимально очистить историю. Тем не менее рекомендуется выполнить shallow-клонирование, чтобы сэкономить время:
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
В *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
В 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
Затем откройте полученный файл 'dependency-check-report.html' в вашем любимом браузере.
В следующем примере предполагается, что проверяемый исходный код находится в текущем рабочем каталоге. Используются постоянные каталоги данных и отчётов, что позволяет уничтожить контейнер после запуска.
#!/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"
Обратите внимание: при обновлении с версии 1.x.x в вашу конфигурацию потребуется внести следующие изменения.
Для поддержки нескольких файлов подавления механизм их настройки изменился. Поэтому пользователям, которые задали файл подавления в своей конфигурации, необходимо внести обновления.
См. примеры ниже:
Было:
<dependency-check
failBuildOnCVSS="3"
suppressionFile="suppression.xml">
</dependency-check>
Стало:
<dependency-check
failBuildOnCVSS="3">
<suppressionFile path="suppression.xml" />
</dependency-check>
Было:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFile>suppression.xml</suppressionFile>
</configuration>
</plugin>
Стало:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFiles>
<suppressionFile>suppression.xml</suppressionFile>
</suppressionFiles>
</configuration>
</plugin>
В дополнение к изменениям в файле подавления задача dependencyCheck переименована в dependencyCheckAnalyze.
Было:
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
Стало:
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
Подписка: [[email protected]] subscribe
Отправка писем: [[email protected]] post
Архив: группа Google
Dependency-Check защищён авторским правом (c) 2012-2017 Jeremy Long. Все права защищены.
Разрешение на изменение и распространение предоставляется на условиях лицензии Apache 2.0. Полный текст лицензии см. в файле LICENSE.txt.
Dependency-Check использует несколько других библиотек с открытым исходным кодом. Дополнительную информацию см. в файле NOTICE.txt.