Trivy

Материал из ALT Linux Wiki

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
Примечание: Для возможности сканирования локальных образов, должен быть запущен podman.socket:
$ 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
Примечание: Для возможности подключения извне, необходимо вместо localhost указать 0.0.0.0 или IP-адрес сервера.


Удалённое сканирование образа:

$ trivy image --server http://192.168.0.169:8081 alt:p10

Удалённое сканирование файловой системы:

$ trivy fs --server http://localhost:8081 --severity CRITICAL ./


Локальная база данных Trivy

Пакет trivy-db содержит базу данных уязвимостей для Trivy. Базу данных Trivy, установленную из пакета, можно использовать только в клиент-серверном режиме (trivy-server должен быть запущен через trivy.service).

Для возможности использования локальной базы данных Trivy необходимо:

  1. Установить пакеты trivy-db и trivy-server:
    # apt-get install trivy-db trivy-server
    
  2. Запустить сервер и добавить его в автозагрузку:
    # systemctl enable --now trivy-server
    

Пример сканирования файловой системы, с использованием локальной базы данных (с машины, на которой запущен trivy-server):

$ trivy fs --server http://localhost:4954

Пример сканирования файловой системы (с удаленной машины):

$ trivy fs --server http://192.168.0.169:4954

где 192.168.0.169 — IP-адрес машины, на которой запущен trivy-server.

Ссылки

Документация