Trivy
Trivy — это комплексный и универсальный сканер уязвимостей в образах контейнеров, файловых системах и репозиториях Git. Trivy имеет сканеры
, которые ищут проблемы безопасности, и цели
, где он может их найти.
Цели (которые может сканировать Trivy):
Изображение контейнера
Файловая система
Репозиторий Git (удалённый)
Образ виртуальной машины
Kubernetes
Сканеры (то, что Trivy может там найти):
Используемые пакеты ОС и программные зависимости (SBOM)
Известные уязвимости (CVE)
Проблемы и неправильные конфигурации IaC
Конфиденциальная информация и секреты
Лицензии на программное обеспечение
Trivy поддерживает большинство популярных языков программирования, операционных систем и платформ. Полный список см. на странице Scanning Coverage.
Установка
$ sudo dnf install -y trivy
Использование
trivy [глобальные флаги] команда [флаги] цель trivy команда
Доступные команды
Команды сканирования
config сканировать файлы конфигурации
filesystem (fs) сканировать локальную файловую систему
image (i) сканировать образ контейнера
kubernetes (k8s) [Экспериментально] сканировать кластер кубернетес
repository (repo) сканировать git-репозиторий (удалённо)
rootfs Сканировать rootfs
sbom сканировать используемые пакеты ОС и программные зависимости (SBOM)
vm [Экспериментально] сканировать образ виртуальной машины
Команды управления
module Управление модулями
plugin Управление плагинами
vex [Экспериментально] VEX утилиты
Вспомогательные команды
clean Удалить кэшированные файлы
completion Генерировать сценарий автозавершения для указанной оболочки
convert Преобразовать trivy JSON отчет в другой формат
help Справка о любой команде
server Режим сервера
version Показать версию
Сканеры
vuln — известные уязвимости (CVE) (по умолчанию)
config — проблемы с IAC и неправильные настройки
secret — конфиденциальная информация и секреты (по умолчанию)
license — лицензии на программное обеспечение
Получение подробной информации о команде
$ trivy команда --help
Примеры
Сканировать образ контейнера
$ trivy image inferit/msvsphere:9
Сканирование образа контейнера на наличие уязвимостей HIGH и CRITICAL с сохранением результата формате JSON в файл
$ trivy image --severity HIGH,CRITICAL -f json -o test.json inferit/msvsphere:9
Вывести проблемы с лицензиями
$ trivy image --scanners license inferit/msvsphere:9
Проверка конфигурации образа контейнера
$ trivy image --image-config-scanners misconfig inferit/msvsphere:9
Проверка секретов образа контейнера
$ trivy image --image-config-scanners secret inferit/msvsphere:9
Сканировать образ контейнера из архива tar
$ trivy image --input msvsphere.tar
сканировать локальную файловую систему
$ trivy fs .
Запуск в режиме сервера
$ trivy server
Слушать на 0.0.0.0:10000
$ trivy server --listen 0.0.0.0:10000
Слушать на 0.0.0.0:10000, использовать локальную базу из /opt/trivy-local-db/
trivy --cache-dir /opt/trivy-local-db/ --listen 0.0.0.0:10000 server --skip-db-update
Сканировать образ контейнера с удалённой машины
trivy image --server http://192.68.10.10:10000 inferit/msvsphere:9
где 192.168.10.10 — IP-адрес машины, на которой запущен сервер trivy.
Сканировать файловую систему с использованием локальной базы данных (с машины, на которой запущен сервер trivy)
$ trivy fs --server http://localhost:4954 ./
Сканирование локального образа контейнера в Podman
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/inferit/msvsphere latest 3a82917c452a 18 months ago 157 MB
$ trivy image 3a82917c452a
Для возможности сканирования локальных образов должен быть запущен podman.socket:
$ systemctl --user start podman.socket
Репозиторий Git
Сканирование репозитория Git на уязвимости и конфиденциальную информацию
$ trivy repo https://github.com/msvsphere/rpmqc
Сканирование ветки в репозитории на проблемы с лицензиями
$ trivy repo --scanners license --branch master https://github.com/msvsphere/rpmqc
Также можно использовать --commit
и --tag
.
Kubernetes
Просканировать кластер и создать простой сводный отчет
$ trivy k8s --report=summary cluster
Просканировать кластер и вывести всю информацию о критических уязвимостях
$ trivy k8s --report=all --severity=CRITICAL cluster