
sbomlyze v0.3.6
Git diff für SBOMs – CycloneDX-, SPDX- und Syft-Dokumente vergleichen, Manipulationen erkennen und als CI-Gate dienen.
sbomlyze
git diff für deine SBOM. Vergleiche zwei Software-Stücklisten und sieh, was sich zwischen Builds, Versionen und Releases geändert hat.
sbomlyze vergleicht Komponenten-Hashes, nicht nur Versionsstrings. Wenn ein Angreifer ein Paket austauscht, ohne dessen Version zu erhöhen, markiert sbomlyze das. Generatoren und Schwachstellen-Scanner übersehen das.
[![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]
Sieh dir an, warum sich dieses Signal von einem Manifest- oder gewöhnlichen Komponenten-Diff unterscheidet, in Manifest-Diff vs. SBOM-Diff vs. Integritätsdrift.
Generatoren erstellen SBOMs und Scanner finden CVEs. sbomlyze sagt dir, was sich zwischen zwei SBOMs geändert hat und ob du dem vertrauen kannst. Führe es nach deinem Generator aus:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceanalysiert und bewertet die erzeugte SBOM ohne temporäre Datei. Vergleiche sie mit einer Baseline, um Drift zu klassifizieren und deine Pipeline zu steuern.
GitHub Action-Schnellstart
Füge [SBOMlyze Diff vom GitHub Marketplace][marketplace] hinzu, um eine eingecheckte oder separat erzeugte SBOM mit ihrer Git-Baseline zu vergleichen. Die unten angegebene unveränderliche SHA ist die veröffentlichte v0.5.1-Action:```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
Die Action schreibt standardmäßig eine Job Summary und kann Richtlinien durchsetzen, Integritätsabweichungen
melden, SARIF hochladen oder einen einzelnen Pull-Request-Kommentar pflegen. Siehe
[die vollständige Action-Referenz](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) für Eingaben, Ausgaben, Berechtigungen
und Sicherheitshinweise. Siehe das
[Live-Demonstrations-Repository](https://github.com/rezmoss/sbomlyze-action-demo)
für eine erfolgreiche Abhängigkeitsaktualisierung und eine blockierte Hash-Änderung bei gleicher Version,
mit öffentlichen Workflow-Läufen und SARIF-Nachweisen.
Für formatspezifisches Dogfooding verwenden Sie die öffentlichen Beispiele
[Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo),
[Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo) oder das
[Container](https://github.com/rezmoss/sbomlyze-container-demo)-Beispiel. Jedes
enthält fünf reproduzierbare Prüfszenarien. Der
[10-Minuten-Beta-Leitfaden](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) bündelt vier gezielte Fragen zu Aktivierung und
Signalqualität.
Generierte SBOMs müssen nicht eingecheckt werden: `baseline: workflow-artifact`
ruft das neueste passende Artefakt aus einem erfolgreichen Lauf des Standard-Branches
ab. Ein [festgepinnter Syft-Begleit-Workflow](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
zeigt Erzeugung und Baseline-Veröffentlichung, während SBOMlyze für Prüfung
und Richtlinien zuständig bleibt.
## Warum sbomlyze?
Viele Tools erzeugen SBOMs. Nur wenige vergleichen sie, und noch weniger sagen Ihnen, ob eine Änderung Routine oder ein Warnsignal für die Lieferkette ist. sbomlyze schließt diese Lücke.
| Fähigkeit | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| SBOM-zu-SBOM-**Diff** | ✅ | grundlegend | ❌ | ❌ |
| **Integritäts-/Manipulations**-Abweichung (Hash geändert ohne Versionsänderung) | ✅ | ❌ | ❌ | ❌ |
| Abhängigkeitsgraph-Diff + transitives Tiefenrisiko | ✅ | ❌ | ❌ | ❌ |
| **NTIA / CISA / BSI**-Konformitätsbewertung | ✅ | ❌ | ✅ | ❌ |
| Formatkonvertierung (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | teilweise |
| **TUI + Web-UI**-Explorer | ✅ | ❌ | ❌ | ❌ |
| Policy-Gate + SARIF / JUnit / Markdown / HTML / Patch | ✅ | teilweise | teilweise | teilweise |
## Features
- **SBOM-Diffing**: Vergleichen Sie zwei SBOMs und sehen Sie hinzugefügte, entfernte und geänderte Komponenten auf einen Blick
- **Drift-Klassifizierung**: Unterscheiden Sie Versionsdrift von **Integritätsdrift** (eine Hash-Änderung ohne Versionsänderung, die Manipulation signalisiert) und Metadatendrift
- **Konformitätsbewertung**: Bewerten Sie jedes SBOM anhand der Mindestelemente von **NTIA**, **CISA 2025** und **BSI TR-03183**
- **Abhängigkeitsgraph-Diff**: Verfolgen Sie transitive Abhängigkeiten und die Tiefe der Lieferkette
- **Multi-Format-Unterstützung**: Syft, CycloneDX, SPDX (JSON)
- **Formatkonvertierung**: Konvertieren Sie zwischen CycloneDX-, SPDX- und Syft-Formaten
- **Starke Identitätszuordnung**: PURL → CPE → BOM-ref → Namespace/Name-Priorität
- **Statistikmodus**: Analysieren Sie einzelne SBOMs auf Lizenz-, Abhängigkeits- und Integritätskennzahlen
- **Interaktiver TUI-Modus**: Erkunden Sie SBOMs mit Tastaturnavigation und Suche
- **Web-UI-Modus**: Browserbasierter SBOM-Explorer mit Drag-and-Drop-Upload
- **Policy-Engine**: Setzen Sie Drift-, Lizenz- und Konformitätsregeln in CI-Pipelines durch
- **GitHub-Marketplace-Action**: Sperren Sie Pull Requests bei SBOM-Drift mit Job Summary, SARIF und optionaler Kommentarausgabe
- **Duplikat- & Kollisionserkennung**: Finden Sie mehrere Versionen desselben Pakets und mehrdeutige Identitätsübereinstimmungen
- **Mehrere Ausgabeformate**: Text, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Tolerantes Parsing**: Fahren Sie bei Fehlern mit strukturierten Warnungen fort
## Installation
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
Installationsskript
Das Installationsskript lädt die passende Binärdatei für dein Betriebssystem/deine Architektur herunter:```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
**Installationsoptionen:**
| Option | Beschreibung |
|--------|-------------|
| `-b <dir>` | Installationsverzeichnis (Standard: `./bin`) |
| `-d` | Debug-Ausgabe aktivieren |
| `-v <ver>` | Bestimmte Version installieren (Standard: neueste) |
Der Installer überprüft immer die Prüfsumme des Releases. Wenn eine kompatible GitHub-CLI installiert ist, überprüft er auch die Build-Herkunft des Releases und schlägt fehl, wenn diese Überprüfung nicht erfolgreich ist.
### Installation mit Go```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
Aus dem Binary-Release
Laden Sie das neueste Binary von GitHub Releases herunter.
Ab v0.3.7 werden Release-Archive mit GitHub-Artefakt-Attestierungen veröffentlicht. Überprüfen Sie einen Download unabhängig mit:
gh attestation verify sbomlyze_0.3.7_linux_amd64.tar.gz -R rezmosss/sbomlyze
``````bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz \
--repo rezmoss/sbomlyze \
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
Anweisungen für unsignierte apt-, rpm- und apk-Repositorys wurden entfernt, bis die Repositorys eine paketmanager-native Signaturprüfung unterstützen.
