Перейти к содержимому

Dependency Check

Модуль Dependency check позволяет автоматически анализировать зависимости приложений, работающих с NewRelic-агентами, на предмет известных уязвимостей. Он использует механизм Software Composition Analysis (SCA) и находит уязвимости в сторонних библиотеках, сравнивая их с наиболее доверенными базами Common Vulnerabilities and Exposures (CVE), опубликованными в National Vulnerability Database (NVD), Sonatype OSS Index, vFeed и списком известных эксплуатируемых уязвимостей CISA. На основе этого анализа формируется отчёт о выявленных уязвимостях.

Стоит отметить, что модуль может работать в закрытом контуре (офлайн-контуре), где отсутствует доступ к Интернету. В этом режиме он использует заранее загруженные базы данных уязвимостей, что позволяет обеспечивать безопасность даже в изолированных средах.

Включение уязвимых зависимостей в приложение может привести к серьёзным угрозам безопасности, утечке данных и компрометации системы. Этот модуль позволяет разработчикам и командам безопасности:

  • Автоматически выявлять известные уязвимости в зависимостях.
  • Получать детализированные отчёты о найденных CVE.
  • Реагировать на угрозы до их эксплуатации злоумышленниками.
  • Снижать риски, связанные с использованием сторонних библиотек.
  1. Модуль получает список зависимостей из инструментируемых приложений.
  2. Он проверяет каждую зависимость на наличие известного идентификатора CPE (Common Platform Enumeration).
  3. Если соответствие найдено, модуль ищет в базе CVE и других источниках (NVD, OSS Index, vFeed, CISA) информацию о выявленных уязвимостях.
  4. Формируется отчет с данными о найденных уязвимостях и ссылками на официальные источники.

В модуль проверки зависимостей вы сможете перейти со страницы 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, работающий в изолированном контуре.

  1. Убедитесь, что на машине установлена Java версии 11 или выше.
  2. Скачайте OWASP Dependency-Check: последнюю версию или версию v12.1.1, на которой основана данная инструкция.
  3. Распакуйте архив.
  4. Выполните команду для создания базы данных. Задайте имя пользователя и пароль — они будут использоваться для защиты файла и последующего доступа.

    Примечание: при возникновении ошибок 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. Дождитесь завершения выполнения (около 5 минут).
  6. База данных будет создана по пути: РАСПАКОВАННЫЙ_АРХИВ/dependency-check/data/odc.mv.db
  7. Скопируйте файл базы данных на хост с установленным GMONIT Collector (или подключите через Docker volume).
  8. Укажите следующие параметры конфигурации (используя данные из п.4):
  • DVS_DATA_DIRECTORY = ПУТЬ_ДО_ДИРЕКТОРИИ_С_DB_ФАЙЛОМ
  • DVS_DB_FILE_NAME = ИМЯ_DB_ФАЙЛА
  • DVS_DB_USER = ИМЯ_ПОЛЬЗОВАТЕЛЯ
  • DVS_DB_PASSWORD = ПАРОЛЬ
  1. Инкрементируйте параметр 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_KEYAPI ключ для доступа к NVD
DVS_NVD_API_DELAYЗадержка между запросами к API NVD (в миллисекундах)
DVS_NVD_API_MAX_RETRY_COUNTМаксимальное количество повторных попыток для одного вызова API NVD
DVS_CPE_URLURL для получения 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_URLURL для 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_URLURL для получения данных о известных эксплуатируемых уязвимостях (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_URLURL для загрузки базы данных vFeed
DVS_VFEED_UPDATE_STATUSФлаг включения обновлений для базы данных vFeed