Dependency Check
Dependency check
Заголовок раздела «Dependency check»Модуль Dependency check позволяет автоматически анализировать зависимости приложений, работающих с NewRelic-агентами, на предмет известных уязвимостей. Он использует механизм Software Composition Analysis (SCA) и находит уязвимости в сторонних библиотеках, сравнивая их с наиболее доверенными базами Common Vulnerabilities and Exposures (CVE), опубликованными в National Vulnerability Database (NVD), Sonatype OSS Index, vFeed и списком известных эксплуатируемых уязвимостей CISA. На основе этого анализа формируется отчёт о выявленных уязвимостях.
Стоит отметить, что модуль может работать в закрытом контуре (офлайн-контуре), где отсутствует доступ к Интернету. В этом режиме он использует заранее загруженные базы данных уязвимостей, что позволяет обеспечивать безопасность даже в изолированных средах.
Включение уязвимых зависимостей в приложение может привести к серьёзным угрозам безопасности, утечке данных и компрометации системы. Этот модуль позволяет разработчикам и командам безопасности:
- Автоматически выявлять известные уязвимости в зависимостях.
- Получать детализированные отчёты о найденных CVE.
- Реагировать на угрозы до их эксплуатации злоумышленниками.
- Снижать риски, связанные с использованием сторонних библиотек.
Как это работает
Заголовок раздела «Как это работает»- Модуль получает список зависимостей из инструментируемых приложений.
- Он проверяет каждую зависимость на наличие известного идентификатора CPE (Common Platform Enumeration).
- Если соответствие найдено, модуль ищет в базе CVE и других источниках (NVD, OSS Index, vFeed, CISA) информацию о выявленных уязвимостях.
- Формируется отчет с данными о найденных уязвимостях и ссылками на официальные источники.
Как пользоваться
Заголовок раздела «Как пользоваться»В модуль проверки зависимостей вы сможете перейти со страницы App/Web, в меню навигации есть кнопка Dependency check с переходом на соответствующий дашборд .
Нажимая на неё, вы попадаете Home > Dashboards > GMONIT > App/Dependency check.
В таблице Dependency vulnerabilities вы можете увидеть отчёт о найденных уязвимостях:
- Список зависимостей с уязвимостями, включая имя пакета, его Package URL и дату актуальности информации о зависимости.
- Информацию о возможной эксплуатации уязвимости, где указано, активно ли она используется злоумышленниками.
- Контрольную сумму SHA1 для идентификации конкретной версии зависимости.
- Детали каждой уязвимости, включая описание, уровень серьезности, идентификатор CVE и ссылки на официальные источники.
- Базу данных, из которой получена информация (например, NVD, OSS Index, vFeed и другие).
На данный момент отображается ограниченный набор данных, однако его можно расширить по запросу клиента, добавив дополнительные метрики и аналитическую информацию.
Настройка
Заголовок раздела «Настройка»По умолчанию данный модуль проверки уязвимостей отключен. Чтобы его включить, необходимо установить переменную окружения APP_DEPENDENCY_CHECK_SERVICE_ENABLED в значение true. Далее потребуется настроить:
- Либо использование базы данных уязвимостей загружаемой из интернета напрямую коллектором GMONIT;
- Либо использование локальной базы данных уязвимостей без доступа GMONIT Collector в интернет.
Мы рекомендуем настройку копии базы данных уязвимостей без доступа к интернету у Collector. В обоих случаях потребуется иметь доступ к базе данных уязвимостей, получить который можно тут: https://nvd.nist.gov/developers/request-an-api-key.
Включение доступа до базы данных уязвимостей (с доступом к интернету у Collector)
Заголовок раздела «Включение доступа до базы данных уязвимостей (с доступом к интернету у Collector)»Этот вариант удобен для ознакомления с функцией. Включить автоматическую загрузку файла с базой данных уязвимостей через GMONIT Collector можно указав следующие переменные:
DVS_NVD_API_KEY— API ключ, который Вы получили с сайта nvd.nist из предыдущего шага;DVS_AUTO_UPDATE— разрешение коллектору выгрузки базы из интернета.
Это замедлит первый старт коллектора (около пяти минут), а также в случае обновления базы уязвимостей.
Инкрементируйте параметр AGENT_ID_VERSION (или установите ему значение 1 если значения не было) для переподключения агентов к GMONIT Collector.
Создание и настройка копии базы уязвимостей (без доступа к интернету у Collector)
Заголовок раздела «Создание и настройка копии базы уязвимостей (без доступа к интернету у Collector)»При необходимости выполнять проверку уязвимостей в изолированной среде без доступа к интернету, можно указать путь и параметры подключения к локальной базе данных уязвимостей. Для этого нужно создать артефакт (файл базы данных) на машине с доступом в интернет, а затем перенести его на хост с GMONIT Collector, работающий в изолированном контуре.
- Убедитесь, что на машине установлена Java версии 11 или выше.
- Скачайте OWASP Dependency-Check: последнюю версию или версию v12.1.1, на которой основана данная инструкция.
- Распакуйте архив.
- Выполните команду для создания базы данных.
Задайте имя пользователя и пароль — они будут использоваться для защиты файла и последующего доступа.
Примечание: при возникновении ошибок 403 или 404 повторите попытку. Если первый API-ключ не сработал, сгенерируйте новый.
-
Windows:
РАСПАКОВАННЫЙ_АРХИВ\dependency-check\bin\dependency-check.bat --updateonly --nvdApiKey ВАШ_NVD_API_KEY --dbUser ИМЯ_ПОЛЬЗОВАТЕЛЯ --dbPassword ПАРОЛЬ -
Linux:
РАСПАКОВАННЫЙ_АРХИВ/dependency-check/bin/dependency-check.sh --updateonly --nvdApiKey ВАШ_NVD_API_KEY --dbUser ИМЯ_ПОЛЬЗОВАТЕЛЯ --dbPassword ПАРОЛЬ
-
- Дождитесь завершения выполнения (около 5 минут).
- База данных будет создана по пути:
РАСПАКОВАННЫЙ_АРХИВ/dependency-check/data/odc.mv.db - Скопируйте файл базы данных на хост с установленным GMONIT Collector (или подключите через Docker volume).
- Укажите следующие параметры конфигурации (используя данные из п.4):
DVS_DATA_DIRECTORY = ПУТЬ_ДО_ДИРЕКТОРИИ_С_DB_ФАЙЛОМDVS_DB_FILE_NAME = ИМЯ_DB_ФАЙЛАDVS_DB_USER = ИМЯ_ПОЛЬЗОВАТЕЛЯDVS_DB_PASSWORD = ПАРОЛЬ
- Инкрементируйте параметр
AGENT_ID_VERSION(или установите ему значение1если значения не было) для переподключения агентов к GMONIT Collector.
Все параметры
Заголовок раздела «Все параметры»Ниже перечислены все возможные переменные окружения, доступные для более точной настройки данного модуля:
| Переменная окружения | Назначение |
|---|---|
APP_DEPENDENCY_CHECK_SERVICE_ENABLED | Фича флаг для включения / отключения модуля проверки зависимостей |
DVS_DATA_DIRECTORY | Базовый путь до директории ресурсов модуля (для встроенной БД, кэшированных ресурсов и временных файлов) |
DVS_TEMP_DIRECTORY | Путь к директории для временных файлов |
DVS_AUTO_UPDATE | Флаг автоматического обновления базы данных уязвимостей (выключен по умолчанию) |
DVS_DOWNLOADER_TLS_PROTOCOL_LIST | Список TLS протоколов для загрузчика (например, “TLSv1.1,TLSv1.2,TLSv1.3”) |
DVS_CONNECTION_TIMEOUT | Максимальное время (в миллисекундах) для установления соединения с внешним сервисом |
DVS_CONNECTION_READ_TIMEOUT | Максимальное время (в миллисекундах) ожидания ответа после установления соединения |
DVS_DB_FILE_NAME | Имя файла базы данных (для встроенной БД, например, gmonit.mv.db) |
DVS_DB_DRIVER_NAME | Имя класса драйвера базы данных |
DVC_DB_DRIVER_PATH | Путь к драйверу базы данных |
DVS_DB_CONNECTION_STRING | Строка подключения к базе данных уязвимостей |
DVS_DB_PASSWORD | Пароль для аутентификации в базе данных уязвимостей |
DVS_DB_USER | Пользователь для аутентификации в базе данных уязвимостей |
DVS_DB_VERSION | Версия схемы базы данных |
DVS_H2_DATA_DIRECTORY | Базовый путь для использования директории данных H2 (для встроенной БД) |
DVS_UPDATE_NVDCVE_ENABLED | Флаг включения обновлений для базы данных уязвимостей NVD (по умолчанию выключено) |
DVS_NVD_API_VALID_FOR_HOURS | Время (в часах), в течение которого CVE полученные из NDV считаются актуальными |
DVS_NVD_API_KEY | API ключ для доступа к NVD |
DVS_NVD_API_DELAY | Задержка между запросами к API NVD (в миллисекундах) |
DVS_NVD_API_MAX_RETRY_COUNT | Максимальное количество повторных попыток для одного вызова API NVD |
DVS_CPE_URL | URL для получения CPE (например, https://nvd.nist.gov/feeds/xml/cpe) |
DVS_CPE_MODIFIED_VALID_FOR_DAYS | Время (в днях), в течение которого данные CPE считаются актуальными |
DVS_SUPPRESSION_FILE | Имя файла подавления ложно-положительных уязвимостей, сохраняемое в DVS_DATA_DIRECTORY |
DVS_SUPPRESSION_FILE_BEARER_TOKEN | Токен для аутентификации при подключении к файлам подавления |
DVS_SUPPRESSION_FILE_PASSWORD | Пароль для подключения к файлам подавления |
DVS_SUPPRESSION_FILE_USER | Пользователь для подключения к файлам подавления |
DVS_ANALYZER_CPE_SUPPRESSION_ENABLED | Подавлять ли ложные срабатывания при анализе CPE (платформы и версии) |
DVS_ANALYZER_VULNERABILITY_SUPPRESSION_ENABLED | Подавлять ли ложные срабатывания при анализе уязвимостей (CVE) |
DVS_ANALYZER_OSSINDEX_ENABLED | Флаг, включающий онлайн анализатор Sonatype OSS Index (по умолчанию выключен) |
DVS_OSSINDEX_URL | URL для API Sonatype OSS Index |
DVS_OSSINDEX_USER | Пользователь для подключения к Sonatype OSS Index (по желанию) |
DVS_OSSINDEX_PASSWORD | Пароль для подключения к Sonatype OSS Index (по желанию) |
DVS_OSSINDEX_REQUEST_DELAY | Задержка между запросами к Sonatype OSS Rest API |
DVS_OSSINDEX_USE_CACHE | Использовать ли локальный кэш для Sonatype OSS Index |
DVS_KEV_URL | URL для получения данных о известных эксплуатируемых уязвимостях (KEV) |
DVS_KEV_USER | Пользователь для подключения к источнику KEV (по желанию) |
DVS_KEV_PASSWORD | Пароль для подключения к источнику KEV (по желанию) |
DVS_KEV_BEARER_TOKEN | Токен для аутентификации при подключении к источнику KEV (по желанию) |
DVS_KEV_CHECK_VALID_FOR_HOURS | Время (в часах), в течение которого данные KEV считаются актуальными |
DVS_VFEED_DATA_FILE | Путь к файлу базы данных vFeed |
DVS_VFEED_CONNECTION_STRING | Строка подключения к базе данных vFeed |
DVS_VFEED_DOWNLOAD_FILE | Имя файла для загрузки базы данных vFeed |
DVS_VFEED_DOWNLOAD_URL | URL для загрузки базы данных vFeed |
DVS_VFEED_UPDATE_STATUS | Флаг включения обновлений для базы данных vFeed |