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