SBOM: легковесная генерация cdxgen
7 октября 2025 г.·173 views

🛠 SBOM: легковесная генерация cdxgen

Ранее, мы с тобой посмотрели тут, что такое Software Bill of Materials SBOM. Мы разобрали как он выглядит, зачем и почему используется. Давай теперь посмотрим на сам инструмент и на то как его использовать, но он с особенностями.

Инструмент:

cdxgen - CLI инструмент для автоматизации SBOM в формате CycloneDX. Основные функции как анализ метаданных и лицензий, чтение manifest файлов. Из важного у него только генерация одного формата. Тип лицензии: Apache License 2.0.

Конвертация SBOM в формат, отличный от CycloneDX потребует конвертор. Зависимости, собранные вручную либо перепакованные могут не определяться или частично. Совместим с Dependency-Track для управления SBOM, включая Trivy, Grype.

Поддерживает следующие языки и форматы пакетов. Официальная документация и репозиторий. Может подписывать их.

Применение:

sudo npm install -g @cyclonedx/cdxgen

cd <Path to source code>

docker run --rm -e CDXGEN_DEBUG_MODE=debug -v /tmp:/tmp -v &#036;(pwd):/app:rw -t ghcr.io/cyclonedx/cdxgen:master -r /app -o /app/bom.json # либо -p для вывода в консоли/ терминале

cdxgen -t java -o bom.json --server-url https://deptrack.server.com --api-key "token" --project-group ... # пример отправки на Dependency-Track

Флаги:

cdxgen [-t], [-o], [-p], [-r], [-h], [-v]

-t, --type # если не указывать этот параметр, то соберет вообще все зависимости, которые сможет

--exclude-type # убрать из обработки

-o, --output # сохранение в формате - XML, JSON

-p, --print # вывод "дерева SBOM" в виде таблицы

-r, --recurse // кекурсивное сканирование по директориям

--no-recursive # базово по файлам в корневой директории

--deep

--fail-on-error # при сбое сбора одного из типов компонент высвечивает earning

--technique # по умолчанию стоит auto режим, но можно задать "source-code-analysis", "binary-analysis", "manifest-analysis", "hash-сomparison", "instrumentation", "filename"

--required-only # для исключений/ ограничений

Поддерживаемые BOM:

• Cryptography CBOM - Java, Python

• Operations OBOM - Linux container images

• Software-as-a-Service SaaSBOM - Java, Python, JavaScript, TypeScript, PHP

• Attestations (CDXA)

• Vulnerability Disclosure Report (VDR) - OWASP depscan VDR

Pipeline:

sbom:

image: node:20-alpine

stage: test

script:

- npm i -g @cyclonedx/cdxgen

- cdxgen -r . -o sbom.json

artifacts:

paths: [sbom.json]

Итого: инструмент достаточно прост, поможет собирать зависимости и контролировать их, например полезно для сверки используемых компонент на проекте и при merge/ pull requeste от contributor. И да, конечно же, любимая история прописания пути для registry и использования только безопасных зависимостей.

#toolchain #sbom

#toolchain#sbom
Открыть в Telegram