Все статьи

OWASP Dependency-Check: обновление CVE за минуты со статическим зеркалом NVD

Опубликовано

OWASP Dependency-Check находит в проекте библиотеки с известными уязвимостями (CVE). Данные он берёт из Национальной базы данных уязвимостей США (NVD). Загрузка через API NVD медленная: первое обновление занимает часы, требует API-ключа и упирается в ограничения частоты запросов — а CI-пайплайн без кэша каждый раз начинает заново.

Поэтому мы поддерживаем публичное зеркало: nvd.epicsoft.one.

Статические файлы вместо API

Каждую ночь CI-задача получает изменения NVD с помощью vulnz (open-vulnerability-cli) и публикует полный фид данных в виде статических сжатых файлов JSON. Клиенты скачивают их по обычному HTTP: без API-ключа, без постраничной загрузки, без ограничений. Поскольку каждый запуск получает только изменения, он занимает несколько минут.

dependency-check --updateonly \
  --nvdDatafeed https://nvd.epicsoft.one/nvdcve-{0}.json.gz

Готовые базы данных

Вместо того чтобы строить базу данных самостоятельно, Dependency-Check может начать с готовой. Каждую ночь зеркало загружает новый фид в чистые базы данных — включая каталог CISA известных эксплуатируемых уязвимостей — и публикует их рядом с фидом:

  • H2, встроенная база данных Dependency-Check
  • MariaDB и MySQL
  • PostgreSQL

К каждому файлу прилагается контрольная сумма SHA-256; в db/db.json указаны версия Dependency-Check, состояние данных и количество записей. Файлы подходят только к этой версии Dependency-Check.

Надёжность при сбоях

  • Запуск публикует данные, только если каждый год фида полный и читаемый; иначе он прерывается, а в сети остаётся предыдущее состояние.
  • База данных, которая не собралась или не совпадает с остальными, никогда не задерживает фид — зеркало тогда сохраняет базы предыдущей ночи.
  • Файлы фида отдаются без изменений, поэтому клиенты получают именно те сжатые данные, которые ожидают.

Свободное использование

Зеркалом можно пользоваться свободно. Данные NVD и каталог CISA являются общественным достоянием; наши скрипты и конфигурация CI открыты по лицензии MIT на GitLab и GitHub. О проблемах сообщайте через issue, о проблемах безопасности — пожалуйста, через конфиденциальный issue на GitLab.

Проверка зависимостей нужна в каждом пайплайне — мы поможем её настроить.

Готовы к следующему шагу?

Лучшего момента, чтобы начать, ещё не было. Расскажите нам о своём проекте.

Связаться с нами