Назад к обновлениям
New releaseAug 4, 2026

sbomlyze v0.3.6

Git diff для SBOM — сравнивайте документы CycloneDX, SPDX и Syft, обнаруживайте подделку и контролируйте CI.

Поделиться

sbomlyze

git diff для вашего SBOM. Сравните два SBOM (Software Bills 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] [![License: Apache-2.0][license-img]][license] [![Downloads][download-img]][download]

SBOMlyze блокирует изменение хэша при той же версии в реальном pull request

Узнайте, чем этот сигнал отличается от манифеста или обычного сравнения компонентов, в Разница между манифестом, SBOM-диффом и дрейфом целостности.

Генераторы создают 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

Действие по умолчанию записывает Job Summary и может применять политики, сообщать об отклонениях целостности, выгружать SARIF или поддерживать единый комментарий в pull request. Полное описание Action см. в [справочнике по 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) показывает генерацию и публикацию базовой линии, а SBOMlyze остаётся ответственным за проверку и политики.

## Зачем sbomlyze?

Многие инструменты генерируют SBOM. Немногие сравнивают их, и ещё меньше сообщают, является ли изменение рутинным или красным флагом цепочки поставок. sbomlyze заполняет этот пробел.

| Возможность | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| Сравнение SBOM с SBOM (**diff**) | ✅ | базово | ❌ | ❌ |
| Отклонение **целостности / подмены** (хеш изменился без смены версии) | ✅ | ❌ | ❌ | ❌ |
| Дифф графа зависимостей + риск транзитивной глубины | ✅ | ❌ | ❌ | ❌ |
| Оценка соответствия **NTIA / CISA / BSI** | ✅ | ❌ | ✅ | ❌ |
| Конвертация форматов (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | частично |
| Обозреватели **TUI + Web UI** | ✅ | ❌ | ❌ | ❌ |
| Политический шлюз + SARIF / JUnit / Markdown / HTML / Patch | ✅ | частично | частично | частично |

## Возможности

- **Дифф SBOM**: Сравнивайте два SBOM и видите добавленные, удалённые и изменённые компоненты с первого взгляда
- **Классификация отклонений**: Отличайте версионные отклонения от **отклонений целостности** (хеш изменился без смены версии — признак подмены) и отклонений метаданных
- **Оценка соответствия**: Оценивайте любой SBOM по минимальным элементам **NTIA**, **CISA 2025** и **BSI TR-03183**
- **Дифф графа зависимостей**: Отслеживайте транзитивные зависимости и глубину цепочки поставок
- **Поддержка нескольких форматов**: 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

Installer Script

Скрипт установки загружает правильный бинарный файл для вашей ОС/архитектуры:```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 были удалены до тех пор, пока
репозитории не будут поддерживать проверку подписи встроенными средствами менеджера пакетов.

Категории