Целью nist-data-mirror является возможность копирования данных об уязвимостях NIST внутри брандмауэра компании, чтобы обеспечить локальный (более быстрый) доступ к данным NIST.
nist-data-mirror не зависит от каких-либо сторонних зависимостей, только от основных библиотек Java SE.
Его можно использовать в сочетании с [OWASP Dependency-Check], чтобы предоставить Dependency-Check зеркальную копию данных NIST.
OWASP DependencyCheck – обнаруживает публично раскрытые уязвимости в приложениях
Для достижения наилучших результатов используйте nist-data-mirror с cron или другим планировщиком для поддержания свежести зеркальных данных.
В нашем случае мы будем использовать вариант разворачивания в Docker.
Склонируем репозиторий:
git clone https://github.com/stevespringett/nist-data-mirror.git
Docker 17.06 или более поздний:
$ mvn clean package
$ docker build --rm -t sspringett/nvdmirror .
$ mkdir target/docs
$ docker run -dit \
--name mirror \
-p 80:80 \
--mount type=bind,source="$(pwd)"/target/docs/,target=/usr/local/apache2/htdocs \
sspringett/nvdmirror
Более ранний Docker:
$ docker run -dit --name mirror -p 80:80 -v "$(pwd)"/target/docs/,target=/usr/local/apache2/htdocs sspringett/nvdmirror
Нужно соответcвенно заменить последнюю команду, если вы получили ошибку:
Error unknown flag: --mount
Для запуска httpd-сервера потребуется минута, так как он зеркалирует начальные файлы NVD.
Чтобы использовать прокси во время сборки, укажите переменные окружения http_proxy, https_proxy и no_proxy в качестве аргументов сборки (например, –build-arg http_proxy=”${http_proxy}”.
В рантайме выполнения вы можете передать значения http.proxyHost и http.proxyPort в _JAVA_OPTIONS.
Например:
_JAVA_OPTIONS="-Dhttps.proxyHost=yourproxyhost.domain -Dhttps.proxyPort=3128 -Dhttp.proxyHost=yourproxyhost.domain
-Dhttp.proxyPort=3128 -Dhttp.nonProxyHosts="localhost|*.domain"
Образ предназначен для выполнения от имени случайного пользователя, не являющегося пользователем root, и может быть развернут на платформах оркестрации контейнеров, таких как Kubernetes и OpenShift.
Далее откроем браузер и проверим наличие сигнатур:
Далее проверим работу Dependency check с локальным зеркалом базы:
└─# ./dependency-check.sh --scan /opt/project --cveUrlBase=http://ip-адрес/nvdcve-1.1-%d.json.gz --cveUrlModified=http://ip-адрес/nvdcve-1.1-modified.json.gz