OWASP DependencyCheck — обнаруживает публично раскрытые уязвимости в приложениях

OWASP DependencyCheck — утилита анализа состава программного обеспечения, которая обнаруживает публично раскрытые уязвимости в зависимостях приложений.

Он делает это, определяя, есть ли идентификатор Common Platform Enumeration (CPE) для данной зависимости.

Если он найден, он будет генерировать отчет, связанный с соответствующими записями CVE.

Документацию и ссылки на производственные бинарные версии можно найти на страницах github.

Кроме того, дополнительную информацию об архитектуре и способах расширения проверки зависимостей можно найти в вики.

Текущие релизы

Плагин Jenkins

Инструкции по использованию плагина Jenkins см.

На странице OWASP Dependency-Check Plugin.

Командная строка

Более подробные инструкции можно найти на страницах github проверки зависимостей.

Последний CLI можно загрузить с страницы проверки зависимостей 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] 

Плагин Maven


Более подробные инструкции можно найти на страницах github dependency-check-maven.

По умолчанию плагин привязан к фазе проверки (т. е. Проверка mvn).

В качестве альтернативы можно напрямую вызвать плагин через mvn org.owasp: dependency-check-maven: 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

Инструкции по использованию Ant-задачи см. На странице github на основе зависимостей.

Использование версии разработки

В следующих инструкциях описывается компиляция и использование текущего моментального образа.

Хотя каждое намерение заключается в поддержании стабильного моментального снимка, рекомендуется использовать приведенные выше версии релиза.

Репозиторий имеет несколько больших файлов из-за тестовых ресурсов.

Команда попыталась как можно больше очистить историю.

Тем не менее, рекомендуется выполнять мелкое клонирование, чтобы сэкономить время:

# git clone --depth 1 git@github.com:jeremylong/DependencyCheck.git 

На * nix

# mvn install
# ./dependency-check-cli/target/release/bin/dependency-check.sh -h
# ./dependency-check-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» в ваш любимый браузер.

Docker

В следующем примере предполагается, что проверяемый источник находится в текущем рабочем каталоге.

Используются постоянные каталоги данных и отчетов, позволяющие вам уничтожить контейнер после запуска.

 #!/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 до 2.x.x

Обратите внимание, что при обновлении с версии 1.x.x необходимо внести следующие изменения в вашу конфигурацию.

Файл подавления

Чтобы поддерживать несколько файлов подавления, изменился механизм настройки файлов.

Таким образом, пользователям, которые определили файл подавления в своей конфигурации, необходимо будет обновиться.

См. Примеры ниже:

Ant

Старый

 <dependency-check
failBuildOnCVSS="3"
suppressionFile="suppression.xml">
</dependency-check> 

Новый

 <dependency-check
failBuildOnCVSS="3">
<suppressionFile path="suppression.xml" />
</dependency-check>

Maven

Старый

 <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>

Gradle

В дополнение к изменениям файла подавления, функция 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 

Скачать DependencyCheck

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

`\_(о.о)_/`

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *