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