Используем trivy для сканирования уязвимостей

Обновлено и опубликовано Опубликовано:

«В двух словах», trivy — инструмент для сканирования безопасности. Он позволяет определить потенциальные угрозы в программном коде, конфигурации, установленных пакетах операционной системы, контейнерах и некоторое другое.

В нашей инструкции мы рассмотрим простой установку trivy на Linux и пример его использования.

Установка

На странице Github можно ознакомиться с программным продуктом и посмотреть его версии. На момент обновления данной инструкции, последняя версия была 0.42.1, поэтому мы будем устанавливать ее.

Для разных типов Linux действия будут немного отличаться.

а) Для RPM (Rocky Linux, РЕД ОС, CentOS):

rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v0.42.1/trivy_0.42.1_Linux-64bit.rpm

б) Для Deb (Debian, Ubuntu, Astra Linux):

wget https://github.com/aquasecurity/trivy/releases/download/v0.42.1/trivy_0.42.1_Linux-64bit.deb

dpkg -i trivy_*_Linux-64bit.deb

На этом установка завершена. Можно использовать команду trivy.

Сканирование

В данном разделе рассмотрим синтаксис использования утилиты trivy. Он выглядит таким образом:

trivy [global flags] command [flags] target

Важно знать про command. Существуют следующие направления для сканирования:

  • fs — сканирование всех файлов по определенному пути. Находит уязвимости, неправильные конфигурации, оставленные в проекте секреты и лицензии.
  • vm — образы виртуальных машин.
  • k8s — для кластеров kubernetes.
  • aws — сканирует учетную запись AWS на наличие неправильных конфигураций.
  • repo — репозитории GIT.
  • rootfs — корневой файловой системы.
  • image — docker-образы.
  • config — проверка корректности для конфигурационных файлов.

* возможно, в более поздних версиях trivy их будет больше.

Примеры использования

Для получения более дополнительной информации по применению trivy можно воспользоваться командой:

trivy --help

Мы же рассмотрим несколько примеров запуска сканирования, с которыми сталкивался автор.

1. Сканирование образа docker:

trivy image python:3.4-alpine

* где python:3.4-alpine — образ с тегом.

2. Проверка всех файлов по определенному пути (в текущем расположении):

trivy fs ./

3. По умолчанию, trivy заканчивает работу с кодом 0. Но если нам нужен код 1, когда обнаружены уязвимости, то используем опцию exit-code:

trivy fs ./ --exit-code 1

4. Чтобы получить отчет о сканировании в отдельном файле html, вводим:

trivy image --format template --template "@/usr/local/share/trivy/templates/html.tpl" -o report.html golang:1.12-alpine

* в данном примере мы просканируем docker-образ golang:1.12-alpine и после утилита сохранит отчет в файл report.html. В качестве шаблона для отчета мы возьмем файл /usr/local/share/trivy/templates/html.tpl.

5. Утилита trivy вернет ошибку, если найдет хоть какую-либо уязвимость. Но мы моем ему указать, какие уровни уязвимостей для нас являются критичными:

trivy fs ./ -s HIGH,CRITICAL

* trivy вернет ошибку только если найдет уязвимости уровня HIGH и CRITICAL.

# DevOps # Linux # Безопасность
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет