Trivy
Trivy — сканер уязвимостей в образах контейнеров, файловых системах и репозиториях Git. Кроме того, trivy может находить ошибки в файлах конфигурации, жёстко запрограммированные конфиденциальные данные, использование несовместимых лицензий в проекте.
Установка
Установить пакет trivy:
# apt-get install trivy
Использование
trivy <команда> [--scanners <сканер1,сканер2>] <цель>
Доступные команды:
- image (i) — сканировать образ контейнера;
- filesystem (fs) — сканировать локальную файловую систему;
- repository (repo) — сканировать git-репозиторий (удаленно);
- vm — сканировать образ виртуальной машины;
- kubernetes (k8s) — сканировать кластер кубернетес;
- aws — сканировать учётную запись AWS;
- config — сканировать файлы конфигурации;
- rootfs — сканировать rootfs;
- sbom — сканировать используемые пакеты ОС и программные зависимости (SBOM);
- completion — сгенерировать скрипт автозаполнения для указанной оболочки;
- module — управление модулями;
- plugin — управление плагинами;
- server — режим сервера;
- version — вывести версию.
Сканеры:
- vuln — известные уязвимости (CVE) (по умолчанию);
- config — проблемы с IAC и неправильные настройки;
- secret — конфиденциальная информация и секреты (по умолчанию);
- license — лицензии на программное обеспечение.
Получение подробной информации о команде:
$ trivy <команда> --help
Примеры использования
Образы контейнеров
Сканирование образа контейнера на уязвимости:
$ trivy image alt:p10
Сканирование образа контейнера на наличие уязвимостей HIGH и CRITICAL с сохранением результата в формате JSON в файл:
$ trivy image --severity HIGH,CRITICAL -f json -o test.json alt:p10
Вывести проблемы с лицензиями:
$ trivy image --scanners license alt:p10
Проверка кофигурации только в метаданных образа контейнера:
$ trivy image --scanners none --image-config-scanners config alt:p10
Сканирование локального образа контейнера в Podman:
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.altlinux.org/alt/nginx latest 862baa6fbed9 3 months ago 136 MB
registry.altlinux.org/alt/alt p10 ff2762c6c8cc 6 months ago 118 MB
$ trivy image ff2762c6c8cc
$ systemctl --user start podman.socket
Репозиторий Git
Сканирование репозитория Git на уязвимости и конфиденциальную информацию:
$ trivy repo https://github.com/altlinux/admc
Сканирование ветки в репозитории на проблемы с лицензиями:
$ trivy repo --scanners license --branch run-sh https://github.com/altlinux/admc
Также можно использовать --commit и --tag.
Файловая система
Сканирование локальной файловой системы (проверка файлов конфигурации и конфиденциальной информации):
$ git clone git://git.altlinux.org/gears/o/openuds-tunnel.git
$ trivy fs --scanners=secret,config ./openuds-tunnel/
Проверка фалов конфигурации:
$ trivy config ./openuds-tunnel/
Kubernetes
Просканировать кластер и создать простой сводный отчет:
$ trivy k8s --report=summary cluster
Просканировать кластер и вывести всю информацию о критических уязвимостях:
$ trivy k8s --report=all --severity=CRITICAL cluster
Клиент/сервер
Trivy может работать в режиме клиент/сервер. На сервере Trivy хранится база данных уязвимостей, а клиенту Trivy не нужно её загружать.
Запуск сервера:
$ trivy server --listen localhost:8081
Удалённое сканирование образа:
$ trivy image --server http://192.168.0.169:8081 alt:p10
Удалённое сканирование файловой системы:
$ trivy fs --server http://localhost:8081 --severity CRITICAL ./