Для быстрой и простой проверки Docker образов на уязвимости существует популярный Open Source инструмент — Trivy. Я покажу на примере, как им пользоваться. Получится готовая мини инструкция по установке и использованию.
Установить Trivy можно разными способами: из репозитория с пакетами, собрать с помощью Nix, воспользоваться bash скриптом, запустить в Docker. Все способы описаны в документации. Я установлю в Debian из репозитория.
# apt install wget apt-transport-https gnupg lsb-release# wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key \| gpg --dearmor | tee /usr/share/keyrings/trivy.gpg > /dev/null# echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] \ https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" \| tee -a /etc/apt/sources.list.d/trivy.list# apt update# apt install trivy
Теперь скачиваем любой образ и проверяем его на уязвимости. Покажу на примере заведомо уязвимого образа.
# docker pull mcr.microsoft.com/oss/nginx/nginx:1.21.6# trivy image --vuln-type os --ignore-unfixed \-f json -o nginx.1.21.6.json mcr.microsoft.com/oss/nginx/nginx:1.21.6
Результат проверки будет в файле nginx.1.21.6.json, что удобно для последующего автоматического анализа. Можно наглядно посмотреть результат в консоли:
# trivy image --vuln-type os \--ignore-unfixed mcr.microsoft.com/oss/nginx/nginx:1.21.6
Trivy отлично подходит для автоматической проверки образов перед их отправкой в registry. Да и просто для быстрого анализа созданного или скачанного образа. Помимо проверки образов, он умеет сканировать git репозитории, файлы с зависимостями (Gemfile.lock, Pipfile.lock, composer.lock, package-lock.json, yarn.lock, Cargo.lock).
Следующей будет заметка с описанием автоматического исправления уязвимостей в образах на основе отчётов trivy.
⇨ Сайт / Исходники
#security #docker #devops