Найти тему
Николай Калюжный

Trivy Scanner для сканирования уязвимостей Docker Image

Оглавление

Если вы работаете с автоматической сборкой образов Docker в конвейере CI CD при возврате кода в репозиторий, рекомендуется проверить образ Docker на наличие уязвимостей. Есть такие решения, как Docker Scout, но также есть бесплатное решение под названием Trivy, которое позволяет сканировать образ контейнера Docker на наличие известных уязвимостей. Давайте узнаем больше о Trivy и о том, как его можно использовать.

Что такое Trivy Scanner?

Trivy — это бесплатный сканер уязвимостей с открытым исходным кодом, который может находить уязвимости в образах контейнеров, в том числе хранящихся в удаленных репозиториях Git и локальных местах расположения образов контейнеров. Он сканирует образ контейнера Docker на наличие уязвимостей из базы данных уязвимостей, которая регулярно обновляется.

По мере того как все больше организаций переходят на контейнерные рабочие нагрузки, сканирование образов Docker на наличие уязвимостей является отличной идеей, так как в контейнерах могут возникнуть серьезные проблемы с безопасностью, как и в другой инфраструктуре.

Контейнеры действительно сужают поверхность атаки, но они все еще могут быть скомпрометированы. Trivy сканирует не только образы контейнеров, но и пакеты IaC и ОС. С помощью Trivy вы можете сканировать Terraform, CloudFormation, Docker, Kubernetes и многие другие конфигурационные файлы IaC. Вы также можете сканировать образы виртуальных машин (экспериментально), что делает его комплексным сканером уязвимостей.

Узнайте больше о Trivy здесь с официального сайта: Trivy Home – Trivy.

Триви-сканер для сканирования уязвимостей с открытым исходным кодом
Триви-сканер для сканирования уязвимостей с открытым исходным кодом

Вы можете получить представление о том, на что способен Trivy, если запустите команду без каких-либо параметров. Он выведет доступные команды. Как вы можете видеть ниже:

  • config – Сканирование файлов конфигурации на наличие неправильных конфигураций
  • Файловая система – сканирование локальной файловой системы
  • image – сканирование образа контейнера
  • Kubernetes — сканирование кластера Kubernetes
  • Репозиторий – сканирование репозитория
  • rootfs – сканирование rootfs
  • sbom – сканирование SBOM на наличие уязвимостей и лицензий
  • VM – сканирование образа виртуальной машины
Триви-команды и параметры сканера
Триви-команды и параметры сканера

Неправильные конфигурации и обнаружение конфиденциальной информации

Он также может делать больше, чем простое обнаружение уязвимостей. Trivy может помочь выявить неправильные конфигурации и конфиденциальную информацию, которая может быть обнаружена в образах контейнеров. Это помогает обеспечить дополнительный уровень безопасности для образов контейнеров. Это гарантирует, что контейнерные среды защищены от уязвимостей, а также от проблем с конфигурацией, которые могут привести к раскрытию конфиденциальных данных.

Ниже мы сканируем локальную папку с кодом Terraform на предмет неправильной настройки и т.д.:

Сканирование кода терраформы с помощью trivy
Сканирование кода терраформы с помощью trivy

Преимущества использования Trivy

Обратите внимание на следующие преимущества и плюсы использования Trivy для сканирования образов контейнеров на наличие уязвимостей

  • Простота установки и использования
  • Комплексное сканирование и обнаружение уязвимостей
  • Вы можете сканировать локальные и удаленные образы контейнеров
  • Вы можете идентифицировать неправильные конфигурации и конфиденциальную информацию в файлах конфигурации и т. д
  • Его можно использовать с конвейерами CI/CD

Важность сканирования изображений контейнеров

Очень важно сканировать образы контейнеров. Серьезные уязвимости могут проникнуть в образы, используемые в рабочей среде, что представляет большой риск для безопасности. Сканирование этих образов на наличие известных уязвимостей чрезвычайно важно для поддержания безопасной инфраструктуры. Сканер Trivy помогает выявлять проблемы безопасности в образах контейнеров. Это гарантирует, что уязвимости безопасности будут обнаружены и устранены.

Настройка Trivy

Ниже мы увидим, как вы можете легко установить это в свою среду Linux. Вы можете найти последнюю версию релиза, перейдя по ссылке: Релизы · aquasecurity/trivy (github.com).

##Download the trivy installer
wget https://github.com/aquasecurity/trivy/releases/download/v0.54.1/trivy_0.54.1_Linux-64bit.deb
##Install Trivy
dpkg -i trivy_0.54.1_Linux-64bit.deb

Скачивание установочного файла сканера trivy для linux
Скачивание установочного файла сканера trivy для linux

Запуск установщика.

Запуск установщика trivy для debian linux
Запуск установщика trivy для debian linux

Сканирование образов Docker с помощью Trivy

После установки вы можете сканировать образы Docker на наличие уязвимостей с помощью простой команды, в которую вы передаете только имя образа:

trivy.exe image <your image>

Замените <ваш образ> на имя образа Docker. Эта команда инициирует процесс сканирования для поиска уязвимостей в образе.

Пример сканирования образа Docker

Например, чтобы отсканировать Docker-образ nginx:

trivy image nginx:latest

Эта команда сканирует последнюю версию образа Nginx на наличие уязвимостей. На выходе предоставляется подробная информация о любых обнаруженных проблемах безопасности, что позволяет вам предпринять необходимые действия.

Вывод команды

Trivy выдаст вам выходную таблицу найденных уязвимостей. В верхней части страницы будет указана серьезность уязвимостей, обнаруженных в образе контейнера. В таблице будут представлены сведения о каждой уязвимости, включая номер CVE, статус, исправленную версию и название. Как видите, он предоставляет всестороннюю матрицу уязвимостей для анализа, чтобы определить, есть ли уязвимости, которые необходимо устранить с помощью образов контейнеров.

Просмотр вывода тривиального сканирования образа контейнера
Просмотр вывода тривиального сканирования образа контейнера

Сканирование образов локальных и удаленных контейнеров

Вы также можете использовать Trivy для сканирования образов, найденных в удаленном реестре контейнеров. Это означает, что вы можете защитить образы контейнеров независимо от того, где они находятся, локально или удаленно. Для удаленного сканирования можно использовать такие команды, как:

trivy image <remote_image_name>

Эта команда позволяет сканировать образы непосредственно из удаленных репозиториев.

Интеграция Trivy с конвейерами CI/CD

Trivy может быть интегрирован в конвейеры CI/CD для автоматизации процесса сканирования. Это отличный способ автоматизировать безопасность образов контейнеров Docker. Вы можете настроить конвейер с помощью «этапа» в конвейере для сканирования. Кроме того, можно настроить конвейер таким образом, чтобы он завершался сбоем конвейера, если в образе контейнера обнаружена уязвимость определенной степени серьезности, например высокая или критическая.

Если этап сканирования пройден, вы можете запустить конвейер CI CD и запустить этап отправки, чтобы образ был отправлен в реестр. Это всего лишь пример, и его можно настроить так, как вам нужно для достижения ваших целей безопасности.

Например, в GitLab ваш файл конвейера может выглядеть следующим образом:

stages:
- build
- scan
- push

variables:
REGISTRY_URL: <your registry URL>
DOCKER_IMAGE_LATEST: $REGISTRY_URL/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:latest

before_script:
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $REGISTRY_URL

build:
stage: build
script:
- docker build -t $DOCKER_IMAGE_LATEST .
tags:
- shell

scan:
stage: scan
image: aquasec/trivy:latest
script:
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $REGISTRY_URL
- trivy image --severity HIGH,CRITICAL --exit-code 1 $DOCKER_IMAGE_LATEST
- trivy image --severity MEDIUM,LOW $DOCKER_IMAGE_LATEST
tags:
- shell

push:
stage: push
script:
- docker push $DOCKER_IMAGE_LATEST
tags:
- shell
when: on_success

Gitlab piepline с использованием trivy
Gitlab piepline с использованием trivy

Заключение

Триви-сканер – отличная утилита. Это бесплатный сканер уязвимостей с открытым исходным кодом, который можно установить за считанные минуты и даже интегрировать в конвейер CI CD за несколько минут, внеся всего пару изменений в файл конвейера.

Существует установщик для вашей операционной системы, включая Windows, Linux, macOS, и даже образ контейнера, который вы можете использовать, который легко интегрировать в конвейеры. Он может легко находить распространенные уязвимости, неправильные конфигурации конфиденциальной информации, зависимости программного обеспечения и извлекать информацию об уязвимостях из базы данных уязвимостей, которая постоянно обновляется.