2.4.18.2 Сканер уязвимостей Trivy
Установка
Синтаксис
Базы данных уязвимостей
Сканирование локальной файловой системы
Сканирование образов контейнеров
Сканирование файлов внутри образа контейнера
Сканирование метаданных образа контейнера
Сканирование кластера Kubernetes
Использование конфигурационного файла для сканирования безопасности
Окружение
- Версия ОС: 7.3
- Конфигурация ОС: Рабочая станция, Сервер графический, Сервер минимальный
- Редакция ОС: Стандартная
- Архитектура: x86_64
- Версия ПО: trivy-0.57.1-1
Trivy – универсальный сканер безопасности. Trivy позволяет обнаруживать уязвимости, ошибки конфигураций, открытые конфиденциальные данные (секреты), файлы лицензий в различных программных компонентах.
Сканирование компонентов на уязвимости производится согласно следующим базам уязвимостей:
-
база уязвимостей trivy;
-
база уязвимостей РЕД ОС, публикуемая на сайте РЕД ОС в виде xml-файла формата OVAL – https://redos.red-soft.ru/support/secure/redos.xml;
-
база уязвимостей БДУ ФСТЭК России, публикуемая на сайте ФСТЭК России – https://bdu.fstec.ru/vul.
Установка
Для установки сканера trivy выполните команду (потребуются права администратора):
sudo dnf install trivy
Дальнейшая работа со сканером trivy должна выполняться от имени пользователя, обладающего необходимыми разрешениями на взаимодействие с объектом сканирования.
Синтаксис
Синтаксис утилиты имеет вид:
trivy [<опции>] <команда> [<опции>] <объект_сканирования> trivy [<команда>]
где:
-
<команда>– позволяет задать настройки утилиты, а также определяет выполняемые действия над объектом сканирования; -
<объект_сканирования>– задает объект сканирования (образ, каталог, репозиторий, файловая система).
Основные команды утилиты:
-
clean– очистка кешированных файлов; -
completion– генерация скрипта автозаполнения для указанной оболочки; -
convert– конвертация отчета JSON в другой формат; -
registry– управление проверкой подлинности реестра; -
server– переключение в режим сервера; -
help– вывод справки по использованию утилиты; -
version– вывод версии утилиты.
Основные команды сканирования:
-
config– запуск сканирования файлов конфигурации на наличие ошибок; -
filesystem– запуск сканирования локальной файловой системы; -
image– запуск сканирования образа контейнера; -
kubernetes(также можно использовать алиасk8s) – запуск сканирования кластера Kubernetes; -
repository– запуск сканирования репозитория; -
rootfs– запуск сканирования rootfs; -
sbom– запуск сканирования компонентов ОС и их зависимостей (SBOM); -
vm– запуск сканирования образа виртуальной машины.
Команды управления:
-
module– управление модулями; -
plugin– управление плагинами.
Опции утилиты:
-
--cache-dir <путь_каталогу>– путь к каталогу кеша утилиты (по умолчанию /root/.cache/trivy); -
-c,--config <файл_конфигурации>– путь к файлу конфигурации утилиты (по умолчанию trivy.yaml); -
-d,--debug– режим отладки; -
-f,--format <формат>– формат (по умолчанию JSON); -
--generate-default-config– запись конфигурации по умолчанию в файл trivy-default.yaml; -
-h,--help– вывод справки по утилите; -
--insecure– разрешение небезопасных подключений к серверу; -
-q,--quiet– подавление индикатора выполнения и вывода журнала; -
--timeout <время>– таймаут (по умолчанию 5 мин.); -
--using-bdu– использование базы уязвимостей БДУ ФСТЭК России; -
-v,--version– вывод версии утилиты.
Для вывода информации по использованию сканера выполните:
trivy --help
Для вывода подробной информации по использованию какой-либо команды выполните:
trivy <команда> --help
Базы данных уязвимостей
По умолчанию trivy выполняет сканирование компонентов ОС, используя только собственную базу уязвимостей и базу уязвимостей РЕД ОС. Для включения поддержки сканирования компонентов ОС с использованием базы уязвимостей ФСТЭК России необходимо дополнительно использовать опцию --using-bdu.
Базы уязвимостей загружаются при первом запуске сканирования и хранятся в локальном кеше утилиты в каталоге ~/.cache/trivy. Кеш с загруженными базами уязвимостей обновляется 2 раза в день.
Для удобства администраторов подготовлен и выгружен в публичный реестр специализированный образ registry.red-soft.ru/trivy-db/trivy-db, включающий в себя данные всех баз уязвимостей – собственной базы уязвимостей trivy, базы уязвимостей РЕД ОС и базы уязвимостей БДУ ФСТЭК России. Использование специального образа при сканировании компонентов ОС доступно с помощью опции --db-repository в командах сканирования. Обновление и выгрузка образа в реестр происходит автоматически 2 раза в день.
Для загрузки базы данных из реестра в локальный кеш выполните команду вида:
trivy <команда_сканирования> --db-repository registry.red-soft.ru/trivy-db/trivy-db --download-db-only
Файл базы данных уязвимостей trivy.db будет расположен в каталоге ~/.cache/trivy/db/.
Для упрощения процедуры сканирования рекомендуется использовать файл конфигурации. Подробную информацию о настройке файла конфигурации см. в пункте «Использование конфигурационного файла для сканирования безопасности».
Сканирование локальной файловой системы
Trivy позволяет сканировать локальную файловую систему на выявление следующих проблем:
-
уязвимости;
-
ошибки конфигурации;
-
конфиденциальные данные (секреты);
-
лицензии.
Для сканирования локальной файловой системы используется команда вида:
trivy filesystem [<опции>] <путь_к_объекту сканирования>
По умолчанию включено сканирование на уязвимости (vuln). Настроить сканирование на наличие других проблем можно с помощью параметра --scaners. Параметр --scanners может принимать следующие значения (несколько значений указывается через запятую):
-
vuln– уязвимости; -
misconfig– ошибки конфигурации; -
secret– раскрытые конфиденциальные данные; -
license– корректность файлов лицензий.
Пример сканирования локальной файловой системы на наличие раскрытых конфиденциальных данных по базам уязвимостей tirvy и РЕД ОС:
trivy fs --scanners secret --report summary /etc/ssh/
При наличии проблем сформированный отчет будет выглядеть примерно следующим образом:
Пример сканирования локальной файловой системы на наличие раскрытых конфиденциальных данных с использованием специализированного образа баз данных уязвимостей:
trivy fs --db-repository registry.red-soft.ru/trivy-db/trivy-db --scanners secret --report summary /etc/ssh/
При наличии проблем сформированный отчет будет выглядеть примерно следующим образом:
Подробную информацию по использованию команды см. в справке:
trivy filesystem --help
Сканирование образов контейнеров
Trivy поддерживает два типа сканируемых объектов при проверке образов контейнеров:
-
файлы внутри образов контейнеров;
-
метаданные образов контейнеров.
Сканирование файлов внутри образа контейнера
Файлы внутри образов контейнеров – это файлы и директории, которые находятся в файловой системе контейнера. Они могут включать исполняемые файлы, библиотеки, конфигурационные файлы и другие ресурсы, необходимые для работы приложения. При сканировании Trivy анализирует эти файлы на наличие уязвимостей, которые могут быть связаны с установленными пакетами, библиотеками и программами.
Для сканирования файлов образа контейнера используется команда вида:
trivy image [<опции>] <имя_контейнера>:<тег>
Сканирование образов контейнеров должно выполняться от имени пользователя, обладающего необходимыми разрешениями на взаимодействие с объектом сканирования.
Trivy позволяет сканировать файлы внутри образов контейнеров на наличие следующих проблем безопасности:
-
уязвимости;
-
ошибки конфигураций;
-
раскрытые конфиденциальные данные;
-
лицензии.
По умолчанию включено сканирование на уязвимости (vuln) и раскрытые конфиденциальные данные (secret). Настроить сканирование на наличие других проблем можно с помощью параметра --scaners. Параметр --scanners может принимать следующие значения (несколько значений указывается через запятую):
-
vuln– уязвимости; -
misconfig– ошибки конфигурации; -
secret– раскрытые конфиденциальные данные; -
license– корректность файлов лицензий.
Пример сканирования образа контейнера на уязвимости по базам уязвимостей tirvy и РЕД ОС:
trivy image registry.red-soft.ru/ubi7/firebird-3:latest
При наличии проблем сформированный отчет будет выглядеть примерно следующим образом:
Пример сканирования образа контейнера на уязвимости с использованием специализированного образа баз данных уязвимостей:
trivy image --db-repository registry.red-soft.ru/trivy-db/trivy-db registry.red-soft.ru/ubi7/firebird-3:latest
При наличии проблем сформированный отчет будет выглядеть примерно следующим образом:

Сканирование метаданных образа контейнера
Метаданные – это информация о самом образе контейнера, такая как теги, имя, размер, дата создания, а также информация о слоях образа и их зависимостях. Trivy использует метаданные для определения контекста образа и его зависимостей. Метаданные могут помочь понять, какие пакеты были установлены и какие слои были добавлены, что важно для более точного анализа уязвимостей.
Каждый образ контейнера имеет собственную конфигурацию. Команды docker inspect <имя_контейнера>:<тег> и docker history <имя_контейнера>:<тег> отображают информацию в соответствии с конфигурацией.
Trivy позволяет сканировать конфигурацию контейнера на наличие следующих проблем безопасности:
-
ошибки конфигураций;
-
раскрытые конфиденциальные данные.
При сканировании на наличие ошибок конфигураций trivy преобразует конфигурацию контейнера в dockerfile и обрабатывает ее как dockerfile.
При сканировании на наличие раскрытых конфиденциальных данных trivy преобразует конфигурацию контейнера в формат JSON и выполняет проверку. Такой подход может быть полезен для переменных среды, которые могут случайно получить учетные данные.
По умолчанию сканирование метаданных контейнера отключено. Для его включения необходимо использовать параметр --image-config-scanners. Параметр --image-config-scanners может принимать следующие значения (несколько значений указывается через запятую):
-
misconfig– ошибки конфигурации; -
secret– раскрытые конфиденциальные данные.
Сканирование образов контейнеров должно выполняться от имени пользователя, обладающего необходимыми разрешениями на взаимодействие с объектом сканирования.
Пример сканирования метаданных образа контейнера по базам уязвимостей tirvy и РЕД ОС:
trivy image --image-config-scanners misconfig registry.red-soft.ru/ubi7/firebird-3:latest
При наличии проблем сформированный отчет будет выглядеть примерно следующим образом:
Сканирование кластера Kubernetes
Trivy может подключиться к кластеру Kubernetes и сканировать его на наличие проблем безопасности с помощью команды вида:
trivy kubernetes [<опции>] <объект_сканирования> или trivy k8s [<опции>] <объект_сканирования>
Сканирование кластера Kubernetes должно выполняться на Master-ноде от имени пользователя, обладающего разрешениями на управление кластером.
Указать проблемы безопасности, которые должны быть обнаружены, можно с помощью параметра --scanners. Параметр --scanners может принимать следующие значения (несколько значений указывается через запятую):
-
vuln– уязвимости; -
misconfig– ошибки конфигурации; -
secret– раскрытые конфиденциальные данные; -
rbac– нарушения правил ролевого контроля доступа.
По умолчанию сканирование проводится на наличие каждой проблемы безопасности.
Пример сканирования кластера на наличие уязвимостей по базам уязвимостей tirvy и РЕД ОС с выводом краткого отчета:
trivy k8s --scanners vuln --report summary --disable-node-collector
При наличии проблем сформированный отчет будет выглядеть примерно следующим образом:
Пример сканирования кластера на наличие уязвимостей с использованием специализированного образа баз данных уязвимостей и выводом краткого отчета:
trivy k8s --db-repository registry.red-soft.ru/trivy-db/trivy-db --scanners vuln --report summary --disable-node-collector
При наличии проблем сформированный отчет будет выглядеть аналогично примеру выше.
Для вывода более полного отчета сканирования кластера на уязвимости используйте для ключа report значение all:
trivy k8s --scanners vuln --report all --disable-node-collector
При наличии проблем сформированный отчет будет выглядеть примерно следующим образом (приведена часть отчета):
Подробную информацию по использованию команды см. в справке:
trivy kubernetes --help
Использование конфигурационного файла для сканирования безопасности
Упрощение процедуры сканирования заключается в том, чтобы один раз задать часто используемые параметры в файле конфигурации. Указанные параметры будут по умолчанию использованы утилитой trivy при сканировании.
Создайте файл конфигурации:
nano ~/trivy.yaml
Обратите внимание, что файл конфигурации должен быть создан пользователем, обладающим необходимыми разрешениями на взаимодействие с объектами сканирования.
Укажите в файле необходимые параметры. Например, для использования при сканировании специализированного образа баз данных уязвимостей добавьте в файл конфигурации следующее содержимое:
db:
repository:
- registry.red-soft.ru/trivy-db/trivy-db:2
using-bdu: true
Сохраните файл.
Запустите сканирование безопасности. Например, выполните сканирование образа контейнера:
trivy image registry.red-soft.ru/ubi7/pgadmin:8.6-251013

При сканировании база данных уязвимостей будет загружена в локальный кеш из указанного в файле конфигурации специализированного образа. Поиск файла конфигурации производится в текущем каталоге. Если каталог хранения файла конфигурации отличается от текущего, необходимо указать путь к нему с помощью опции --config <путь_к_файлу>.
При следующем сканировании, например, файловой системы, команде не потребуется вручную передавать опцию --db-repository с указанием файла базы данных. В качестве базы данных уязвимостей так же будет использована база данных специализированного образа.
Также доступна автоматическая генерация файла конфигурации со стандартным содержимым. Для каждой команды сканирования генерируется свой файл конфигурации с определенным набором параметров. Для генерации стандартного файла конфигурации необходимо выполнить команду вида:
trivy <команда_сканирования> --generate-default-config
Сгенерированный файл конфигурации будет сохранен с именем trivy-default.yaml в текущем каталоге. При необходимости в значения определенных параметров сгенерированного файла конфигурации могут быть внесены изменения.
cache:
backend: memory
dir: /home/user/.cache/trivy
redis:
ca: ""
cert: ""
key: ""
tls: false
ttl: 0s
config: trivy.yaml
db:
download-java-only: false
download-only: false
java-repository:
- mirror.gcr.io/aquasec/trivy-java-db:1
- ghcr.io/aquasecurity/trivy-java-db:1
java-skip-update: false
no-progress: false
repository:
- mirror.gcr.io/aquasec/trivy-db:2
- ghcr.io/aquasecurity/trivy-db:2
skip-update: false
debug: false
dependency-tree: false
exit-code: 0
format: table
ignore-policy: ""
ignorefile: .trivyignore
insecure: false
license:
confidencelevel: "0.9"
forbidden:
- AGPL-1.0
- AGPL-3.0
- CC-BY-NC-1.0
- CC-BY-NC-2.0
- CC-BY-NC-2.5
- CC-BY-NC-3.0
- CC-BY-NC-4.0
- CC-BY-NC-ND-1.0
- CC-BY-NC-ND-2.0
- CC-BY-NC-ND-2.5
- CC-BY-NC-ND-3.0
- CC-BY-NC-ND-4.0
- CC-BY-NC-SA-1.0
- CC-BY-NC-SA-2.0
- CC-BY-NC-SA-2.5
- CC-BY-NC-SA-3.0
- CC-BY-NC-SA-4.0
- Commons-Clause
- Facebook-2-Clause
- Facebook-3-Clause
- Facebook-Examples
- WTFPL
full: false
ignored: []
notice:
- AFL-1.1
- AFL-1.2
- AFL-2.0
- AFL-2.1
- AFL-3.0
- Apache-1.0
- Apache-1.1
- Apache-2.0
- Artistic-1.0-cl8
- Artistic-1.0-Perl
- Artistic-1.0
- Artistic-2.0
- BSL-1.0
- BSD-2-Clause-FreeBSD
- BSD-2-Clause-NetBSD
- BSD-2-Clause
- BSD-3-Clause-Attribution
- BSD-3-Clause-Clear
- BSD-3-Clause-LBNL
- BSD-3-Clause
- BSD-4-Clause
- BSD-4-Clause-UC
- BSD-Protection
- CC-BY-1.0
- CC-BY-2.0
- CC-BY-2.5
- CC-BY-3.0
- CC-BY-4.0
- FTL
- ISC
- ImageMagick
- Libpng
- Lil-1.0
- Linux-OpenIB
- LPL-1.02
- LPL-1.0
- MS-PL
- MIT
- NCSA
- OpenSSL
- PHP-3.01
- PHP-3.0
- PIL
- Python-2.0
- Python-2.0-complete
- PostgreSQL
- SGI-B-1.0
- SGI-B-1.1
- SGI-B-2.0
- Unicode-DFS-2015
- Unicode-DFS-2016
- Unicode-TOU
- UPL-1.0
- W3C-19980720
- W3C-20150513
- W3C
- X11
- Xnet
- Zend-2.0
- zlib-acknowledgement
- Zlib
- ZPL-1.1
- ZPL-2.0
- ZPL-2.1
permissive: []
reciprocal:
- APSL-1.0
- APSL-1.1
- APSL-1.2
- APSL-2.0
- CDDL-1.0
- CDDL-1.1
- CPL-1.0
- EPL-1.0
- EPL-2.0
- FreeImage
- IPL-1.0
- MPL-1.0
- MPL-1.1
- MPL-2.0
- Ruby
restricted:
- BCL
- CC-BY-ND-1.0
- CC-BY-ND-2.0
- CC-BY-ND-2.5
- CC-BY-ND-3.0
- CC-BY-ND-4.0
- CC-BY-SA-1.0
- CC-BY-SA-2.0
- CC-BY-SA-2.5
- CC-BY-SA-3.0
- CC-BY-SA-4.0
- GPL-1.0
- GPL-2.0
- GPL-2.0-with-autoconf-exception
- GPL-2.0-with-bison-exception
- GPL-2.0-with-classpath-exception
- GPL-2.0-with-font-exception
- GPL-2.0-with-GCC-exception
- GPL-3.0
- GPL-3.0-with-autoconf-exception
- GPL-3.0-with-GCC-exception
- LGPL-2.0
- LGPL-2.1
- LGPL-3.0
- NPL-1.0
- NPL-1.1
- OSL-1.0
- OSL-1.1
- OSL-2.0
- OSL-2.1
- OSL-3.0
- QPL-1.0
- Sleepycat
unencumbered:
- CC0-1.0
- Unlicense
- 0BSD
list-all-pkgs: true
misconfiguration:
checks-bundle-repository: mirror.gcr.io/aquasec/trivy-checks:1
cloudformation:
params: []
config-file-schemas: []
helm:
api-versions: []
kube-version: ""
set: []
set-file: []
set-string: []
values: []
include-non-failures: false
raw-config-scanners: []
render-cause: []
scanners:
- azure-arm
- cloudformation
- dockerfile
- helm
- kubernetes
- terraform
- terraformplan-json
- terraformplan-snapshot
terraform:
exclude-downloaded-modules: false
vars: []
module:
dir: /home/user/.trivy/modules
enable-modules: []
output: ""
output-plugin-arg: ""
pkg:
include-dev-deps: false
relationships:
- unknown
- root
- workspace
- direct
- indirect
types:
- os
quiet: false
registry:
mirrors: {}
password: []
password-stdin: false
token: ""
username: []
rego:
check: []
data: []
include-deprecated-checks: false
namespaces: []
skip-check-update: false
trace: false
report: all
scan:
detection-priority: precise
disable-telemetry: false
distro: ""
file-patterns: []
offline: false
parallel: 5
rekor-url: https://rekor.sigstore.dev
sbom-sources: []
scanners:
- vuln
show-suppressed: false
skip-dirs: []
skip-files: []
skip-version-check: false
secret:
config: trivy-secret.yaml
server:
addr: ""
custom-headers: []
token: ""
token-header: Trivy-Token
severity:
- UNKNOWN
- LOW
- MEDIUM
- HIGH
- CRITICAL
table-mode:
- summary
- detailed
template: ""
timeout: 5m0s
using-bdu: false
version: false
vulnerability:
ignore-status: []
ignore-unfixed: false
severity-source:
- auto
skip-vex-repo-update: false
vex: []
Обратите внимание, что файл конфигурации trivy-default.yaml может быть использован только с той командой сканирования, для которой он сгенерирован.
Дата последнего изменения: 12.11.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.