Формат и использование#

Обе команды формируют документ в формате CycloneDX, версия спецификации 1.5, сериализация в JSON. Другие форматы вывода не поддерживаются. Стандартный формат позволяет проверять состав как собственным поиском уязвимостей AFT, так и сторонними сканерами.

Что входит в документ#

Документ CycloneDX содержит метаданные сборки и список компонентов.

В метаданных - серийный номер, метка времени, сведения об инструменте и корневой компонент с именем и версией.

По каждому компоненту приводятся имя, версия, тип и идентификатор PURL, а где применимо - идентификатор CPE, описание, поставщик, лицензии, контрольные суммы, внешние ссылки (на загрузку и на систему контроля версий), применённые патчи и дополнительные свойства. Среди свойств - источник сведений о компоненте, его принадлежность приложению или среде выполнения, а также отметки об уязвимостях, которые следует игнорировать. В конце документа описаны зависимости между компонентами.

Использование сканерами#

Полученный состав пригоден как вход для сканеров уязвимостей. Его использует собственный поиск уязвимостей AFT (см. Поиск уязвимостей (aft-scanner)), а благодаря стандартному формату CycloneDX и идентификаторам PURL и CPE - и сторонние сканеры, включая Grype, Trivy и OSV-Scanner. Отметки об игнорируемых уязвимостях, перенесённые из сборочного манифеста, помогают исключить заведомо неприменимые срабатывания.

Где ещё формируется состав#

Состав ПО формируется не только этими командами. Инструменты сборки приложений (Создание приложений (aft-app)), сред выполнения (Создание сред выполнения (aft-runtime)) и расширений (Создание расширений (aft-extension)) создают его при сборке. Анализатор приложений показывает состав на карте приложения и в отчёте (см. Анализ приложений (aft-analyzer)).

Где лежит готовый файл#

Состав ПО вкладывается внутрь самой сборки, поэтому он едет вместе с ней и доступен на целевой машине. Точное место зависит от того, что собрано и чем.

Что собрано

Путь внутри сборки

Приложение (aft-app)

/app/share/sbom/<идентификатор>.cdx.json

Расширение (aft-extension)

share/sbom/<идентификатор>.cdx.json от корня содержимого

Среда выполнения (aft-runtime)

/usr/share/runtime/<идентификатор>-<версия>.cdx.json

Готовая rootfs (aft-sbom-generator)

/usr/share/sbom/<идентификатор>-<версия>.cdx.json внутри rootfs

В имя файла приложения и расширения версия не входит, у среды выполнения и rootfs входит.

Посмотреть файл в установленной сборке можно изнутри её песочницы:

flatpak run --command=sh org.astra.MyApp
cat /app/share/sbom/org.astra.MyApp.cdx.json

Инструменты AFT ищут состав ПО среды выполнения сами и перебирают все принятые расположения, поэтому среда, собранная любой из команд, читается одинаково. Состав установленного приложения проще получить командой aft-flatpak-sbom (см. Состав установленного приложения): она соберёт его заново, даже если вложенного файла нет.