OWASP Dependency Check
Описание
Заголовок раздела «Описание»OWASP Dependency Check — SCA (Software Composition Analysis) выявляет известные уязвимости (CVE) в сторонних зависимостях приложения.
Поддерживаемый стек
Заголовок раздела «Поддерживаемый стек»OWASP Dependency-Check содержит несколько анализаторов типов файлов, которые используются для извлечения идентификационной информации из анализируемых файлов.
Более подробно: https://dependency-check.github.io/DependencyCheck/analyzers/index.html
| Анализатор | Типы сканируемых файлов | Метод анализа |
|---|---|---|
| Архив | Формат архива Zip (*.zip, *.ear, *.war, *.jar, *.sar, .apk, .nupkg); Формат Tape Archive (.tar); Формат Gzip (.gz, .tgz); Формат Bzip2 (.bz2, .tbz2); Формат RPM (.rpm) | Извлекает содержимое архива, затем сканирует содержимое всеми доступными анализаторами. |
| Сборка (.NET) | Сборки .NET (*.exe, *.dll) | Использует GrokAssembly.exe; требуется установленная среда выполнения .NET Core 8.0. |
| Jar | Архивы Java (.jar); Веб-архивы (.war) | Анализирует метаданные манифеста архива и файлы модели проекта Maven (pom.xml). |
| RetireJS | Файлы JavaScript | Анализирует файлы JavaScript с использованием базы данных RetireJS. |
| MS Build | Файлы MS Build (*.csproj, *.vbproj) | Парсит файлы проектов, включая связанные свойства сборки каталога или пакетов, для сбора информации о зависимостях. |
| Node.js | Файлы спецификации пакетов NPM (package.json) | Парсит package.json для сбора информации о зависимостях в проекте Node.js. |
| Node Audit | Использует API npm audit для отчёта об известных уязвимых библиотеках Node.js. | Этот анализатор требует подключения к интернету. |
| Nugetconf | Файл NuGet packages.config | Использует XPath для разбора XML-спецификации. |
| Nuspec | Файл спецификации пакета NuGet (*.nuspec) | Использует XPath для разбора XML-спецификации. |
| OpenSSL | Файл заголовка версии OpenSSL (opensslv.h) | Регулярное выражение для разбора определения макроса OPENSSL_VERSION_NUMBER. |
| OSS Index | Использует API OSS Index для отчёта об уязвимостях, не найденных в NVD. | Этот анализатор требует подключения к интернету. |
| Ruby bundler-audit | Файлы блокировки Ruby Gemfile.lock | Выполняет bundle-audit и включает результаты в отчёт Dependency-Check. |
Экспериментальные анализаторы
Заголовок раздела «Экспериментальные анализаторы»Следующие анализаторы можно включить, активировав опцию конфигурации experimental. Эти анализаторы считаются экспериментальными из-за более высокого уровня ложных срабатываний и ложных пропусков
| Анализатор | Типы сканируемых файлов | Метод анализа |
|---|---|---|
| Autoconf | Файлы конфигурации Autoconf (configure, configure.in, configure.ac) | Сканирование регулярными выражениями метаданных AC_INIT, включая сгенерированный скрипт конфигурации. |
| CMake | Файлы проекта CMake (CMakeLists.txt) и скрипты (*.cmake) | Сканирование регулярными выражениями команд инициализации проекта и установки версии. |
| CocoaPods | Файлы .podspec CocoaPods | Извлекает информацию о зависимостях из файла спецификации. |
| Carthage | Файлы Cartfile.resolved Carthage | Извлекает информацию о зависимостях из файла спецификации. |
| Composer Lock | Файлы блокировки PHP Composer (composer.lock) | Парсит lock-файлы Composer для точных версий зависимостей. |
| CPAN File | Файлы cpanfile Perl | Парсит файлы cpanfile для зависимостей Perl. |
| Dart | pubspec.yaml, pubspec.lock | Извлекает информацию о зависимостях из файлов спецификации. |
| Go lang mod | go.mod | Использует go mod для определения точного списка используемых зависимостей. |
| Go lang dep | Gopkg.lock | Прямой анализ lock-файла для извлечения информации о зависимостях. |
| PE Analyzer | PE-файлы DLL и EXE | Анализирует заголовки PE для получения информации о зависимостях. |
| Python | Исходные файлы Python (.py); Файлы метаданных (PKG-INFO, METADATA); Дистрибутивы (.whl, *.egg, *.zip) | Регулярное выражение для setuptools-метаданных в исходниках; Парсинг RFC822 для остальных. |
| Pip | Файлы requirements.txt для pip | Регулярное выражение для сканирования requirements.txt. |
| Ruby Gemspec | Файлы Rakefile; Файлы *.gemspec | Регулярное выражение для блоков инициализации gemspec и метаданных. |
| SWIFT | Package.swift менеджера пакетов Swift | Извлекает информацию о зависимостях из файла Package.swift. |
Источники данных об уязвимостей (Поддерживаемые базы)
Заголовок раздела «Источники данных об уязвимостей (Поддерживаемые базы)»- NVD (National Vulnerability Database)
Основной источник CVE
Требует интернет - CISA KEV (Known Exploited Vulnerabilities)
Каталог активно эксплуатируемых уязвимостей
JSON-файл от CISA.gov
Используется для приоритизации - OSS Index (Sonatype)
Дополнительные уязвимости (не покрытые NVD)
Онлайн-запросы по PURL
Требует интернет и API Key - RetireJS
Уязвимые JavaScript-библиотеки
Онлайн-загрузка данных RetireJS
Только для JS-фронтенда - Bundler Audit
Уязвимости Ruby Gems
Локальный запускbundle-audit
Не требует интернета (если есть lock-файл)
Основные функциональные возможности
Заголовок раздела «Основные функциональные возможности»- Автоматическое определение зависимостей Парсит lock-файлы, манифесты, архивы и извлекает координаты библиотек (group:artifact:version, npm-пакеты и т.д.)
- Формирование идентификаторов
- CPE (Common Platform Enumeration)
- PURL (Package URL)
- координаты экосистемы (Maven, npm, NuGet, PyPI, gem и др.)
- Подавление ложных срабатываний (false positives)
- suppression-файл (XML)
- cpe/suppression по regex, CVE, package-url
- Дополнительные анализаторы
- Архивный анализатор (распаковывает JAR → ищет вложенные зависимости)
- Node.js / RetireJS
- Ruby Bundler-Audit
- Python Safety / pip-audit
- Open Source Vulnerability (OSV) — в новых версиях
- Центральная база NVD + зеркалирование
- Другие полезные фичи
- Прокси / оффлайн-режим (можно подготовить базу заранее)
- Поддержка CVE-2021-44228 (Log4Shell) и других известных уязвимостей
- Генерация Software Bill of Materials (CycloneDX / SPDX)
Standard vs DB Included
Заголовок раздела «Standard vs DB Included»В TRAIO поддерживаются два режима запуска:
- Standard (Online Update) — официальный образ, база уязвимостей обновляется при запуске.
- DB Included / No Update (Offline) — образ с предзагруженной базой, запуск с
--noupdate.
Standard vs DB Included — разница, плюсы и минусы
Заголовок раздела «Standard vs DB Included — разница, плюсы и минусы»| Режим | Описание | Плюсы | Минусы |
| Standard (Online Update) | При каждом запуске скачивает/обновляет базы (NVD и др.) перед анализом | Самая свежая база CVE | Затрачивает от 5 до 30 минут на скачивания базы уязвимостей в зависимости от скорости интернета и наличия NVD API ключа |
| DB Included / No Update (Offline) | Использует базу, уже упакованную в образ; запускается с --noupdate | Быстрый и предсказуемый старт; меньше сетевых зависимостей; подходит для контуров с ограниченным интернетом | База обновляется нами при обновлении образа; есть риск не найти свежую уязвимость |
Как работает
Заголовок раздела «Как работает»Режим 1: Dependency-Check (Standard)
Заголовок раздела «Режим 1: Dependency-Check (Standard)»Сканер использует официальный docker-образ:
owasp/dependency-check:latest
Команда запуска
/usr/share/dependency-check/bin/dependency-check.sh \ --scan ./$SEC_CODE_FOLDER \ --format JSON \ --out /data/$REPORT_FILE_NAMEРежим 2: Dependency-Check (DB Included / No Update)
Заголовок раздела «Режим 2: Dependency-Check (DB Included / No Update)»Сканер использует наш docker-образ:
registry.gitlab.com/traio-group/tools/dependency-check-db-included:latest
Команда запуска
/usr/share/dependency-check/bin/dependency-check.sh \ --scan ./$SEC_CODE_FOLDER \ --format JSON \ --out /data/$REPORT_FILE_NAME \ --noupdateВ этом режиме база уже внутри образа, поэтому обновление при каждом запуске не требуется. Это делает запуск быстрее и снижает зависимость от сети.
Переменные окружения (env)
Заголовок раздела «Переменные окружения (env)»| Имя | Значение по умолчанию | Обязательное | Описание |
|---|---|---|---|
| REPORT_FILE_NAME | dependency-check.json | Нет | Имя итогового отчёта |
| SCAN_TYPE | OWASP Dependency Check | Нет | Тип сканирования для парсинга |
| REPOSITORY | (указывается автоматический) | Да | Путь или URL к проекту |
Настройки и параметры
Заголовок раздела «Настройки и параметры»- allow_failure: True — ошибки сканера не прерывают пайплайн
- overwrite_entrypoint: True — позволяет явно задавать run_command
- timeout: 30 минут (можно увеличить при необходимости)