Если вы работаете с автоматической сборкой образов 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 для сканирования образов контейнеров на наличие уязвимостей
- Простота установки и использования
- Комплексное сканирование и обнаружение уязвимостей
- Вы можете сканировать локальные и удаленные образы контейнеров
- Вы можете идентифицировать неправильные конфигурации и конфиденциальную информацию в файлах конфигурации и т. д
- Его можно использовать с конвейерами 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
Запуск установщика.
Сканирование образов 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
Заключение
Триви-сканер – отличная утилита. Это бесплатный сканер уязвимостей с открытым исходным кодом, который можно установить за считанные минуты и даже интегрировать в конвейер CI CD за несколько минут, внеся всего пару изменений в файл конвейера.
Существует установщик для вашей операционной системы, включая Windows, Linux, macOS, и даже образ контейнера, который вы можете использовать, который легко интегрировать в конвейеры. Он может легко находить распространенные уязвимости, неправильные конфигурации конфиденциальной информации, зависимости программного обеспечения и извлекать информацию об уязвимостях из базы данных уязвимостей, которая постоянно обновляется.