
sbomlyze v0.3.5
git diff для вашего SBOM ,сравнивайте CycloneDX/SPDX/Syft списки материалов, выявляйте подделку и управляйте CI
sbomlyze
git diff для вашего SBOM. Сравните два Software Bill of Materials и посмотрите, что изменилось между сборками, версиями и релизами.
sbomlyze сравнивает хеши компонентов, а не только строки версий. Когда злоумышленник подменяет пакет, не меняя его версию, sbomlyze это обнаруживает. Генераторы и сканеры уязвимостей этого не замечают.
[![CI][ci-img]][ci] [![GitHub Marketplace][marketplace-img]][marketplace] [![GitHub Release][release-img]][release] [![Go Report Card][go-report-img]][go-report] [![OpenSSF Scorecard][scorecard-img]][scorecard] [![OpenSSF Best Practices][best-practices-img]][best-practices] [![License: Apache-2.0][license-img]][license] [![Downloads][download-img]][download]
Узнайте, чем этот сигнал отличается от diff манифеста или обычного diff компонентов, в разделе Manifest diff vs. SBOM diff vs. integrity drift.
Генераторы создают SBOM, а сканеры находят CVE. sbomlyze сообщает, что изменилось между двумя SBOM и можно ли этому доверять. Запустите его после вашего генератора:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceанализирует и оценивает сгенерированный SBOM без временного файла. Сравните его с базовым состоянием, чтобы классифицировать дрейф и управлять вашим пайплайном.
Быстрый старт с GitHub Action
Добавьте [SBOMlyze Diff из GitHub Marketplace][marketplace], чтобы сравнить зафиксированный в репозитории
или отдельно сгенерированный SBOM с его git-базой. Неизменяемый SHA ниже —
это опубликованный Action v0.5.1:```yaml
steps:
-
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0
-
uses: rezmoss/sbomlyze@31503690611fda8ebba4ed2bd186eda000442594 # v0.5.1 with: sbom-path: build/sbom.cdx.json
По умолчанию Action записывает Job Summary и может применять политику, сообщать
о дрейфе целостности, загружать SARIF или поддерживать единый комментарий к pull-request. См.
[полный справочник по Action](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) для входных и выходных данных, разрешений
и рекомендаций по безопасности. См.
[репозиторий с живой демонстрацией](https://github.com/rezmoss/sbomlyze-action-demo)
для примера проходящего обновления зависимости и заблокированного изменения хеша при той же версии, с
публичными запусками workflow и доказательствами SARIF.
Для dogfood, специфичного для формата, используйте публичные примеры
[Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo),
[Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo) или
[container](https://github.com/rezmoss/sbomlyze-container-demo). Каждый
содержит пять воспроизводимых сценариев проверки.
[10-минутное руководство по бете](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) собирает четыре сфокусированных вопроса об активации и качестве сигналов.
Сгенерированные SBOM не нужно коммитить: `baseline: workflow-artifact`
извлекает наиболее свежий подходящий артефакт из успешного запуска ветки по умолчанию. [Закреплённый сопутствующий workflow Syft](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
показывает генерацию и публикацию baseline, тогда как SBOMlyze остаётся ответственным
за проверку и политику.
## Почему sbomlyze?
Многие инструменты генерируют SBOM. Немногие их сравнивают, и ещё меньше говорят вам, является ли изменение рутинным или красным флагом цепочки поставок. sbomlyze заполняет этот пробел.
| Возможность | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| **Diff** SBOM-to-SBOM | ✅ | базовый | ❌ | ❌ |
| Дрейф **целостности / подмены** (хеш изменился без версии) | ✅ | ❌ | ❌ | ❌ |
| Diff графа зависимостей + риск транзитивной глубины | ✅ | ❌ | ❌ | ❌ |
| Оценка соответствия **NTIA / CISA / BSI** | ✅ | ❌ | ✅ | ❌ |
| Конвертация форматов (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | частично |
| Исследователи **TUI + Web UI** | ✅ | ❌ | ❌ | ❌ |
| Policy gate + SARIF / JUnit / Markdown / HTML / Patch | ✅ | частично | частично | частично |
## Возможности
- **Diffing SBOM**: сравнение двух SBOM и просмотр добавленных, удалённых и изменённых компонентов с первого взгляда
- **Классификация дрейфа**: различение дрейфа версий от **дрейфа целостности** (хеш изменился без изменения версии, что сигнализирует о подмене) и дрейфа метаданных
- **Оценка соответствия**: оценка любого SBOM по минимальным элементам **NTIA**, **CISA 2025** и **BSI TR-03183**
- **Diff графа зависимостей**: отслеживание транзитивных зависимостей и глубины цепочки поставок
- **Поддержка множества форматов**: Syft, CycloneDX, SPDX (JSON)
- **Конвертация форматов**: конвертация между форматами CycloneDX, SPDX и Syft
- **Надёжное сопоставление идентификаторов**: приоритет PURL → CPE → BOM-ref → namespace/name
- **Режим статистики**: анализ отдельных SBOM для метрик лицензий, зависимостей и целостности
- **Интерактивный режим TUI**: исследование SBOM с навигацией с клавиатуры и поиском
- **Режим Web UI**: браузерный исследователь SBOM с загрузкой drag-and-drop
- **Движок политик**: применение правил дрейфа, лицензий и оценки соответствия в CI-пайплайнах
- **GitHub Marketplace Action**: гейтинг pull-request по дрейфу SBOM с выводом Job Summary, SARIF и опциональным комментарием
- **Обнаружение дубликатов и коллизий**: поиск нескольких версий одного пакета и неоднозначных совпадений идентификаторов
- **Множество форматов вывода**: Text, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Устойчивый парсинг**: продолжение при ошибках со структурированными предупреждениями
## Установка
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
Скрипт установки
Скрипт установки загружает подходящий бинарный файл для вашей ОС/архитектуры:```bash
Install to ./bin
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sh
Install to /usr/local/bin (requires sudo)
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sudo sh -s -- -b /usr/local/bin
Install specific version
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sh -s -- -v 0.4.0
**Параметры установщика:**
| Параметр | Описание |
|--------|-------------|
| `-b <dir>` | Каталог установки (по умолчанию: `./bin`) |
| `-d` | Включить отладочный вывод |
| `-v <ver>` | Установить конкретную версию (по умолчанию: последняя) |
Установщик всегда проверяет контрольную сумму релиза. Если установлен совместимый GitHub CLI,
он также проверяет происхождение сборки релиза и завершается с ошибкой, если
эта проверка не проходит.
### Установка через Go```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
Из бинарного релиза
Скачайте последний бинарный файл со страницы GitHub Releases.
Начиная с v0.3.7, архивы релизов публикуются с артефактными
аттестациями GitHub. Проверьте загрузку независимо с помощью:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz
--repo rezmoss/sbomlyze
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
Инструкции для неподписанных репозиториев apt, rpm и apk были удалены до тех пор, пока репозитории не будут поддерживать проверку подписей, встроенную в менеджер пакетов.
