
sbomlyze v0.5.3
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 Bills of Materials 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 dies. Generatoren und Schwachstellen-Scanner übersehen dies.
[![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]
Erfahre, warum sich dieses Signal von einem Manifest- oder gewöhnlichen Komponenten-Diff unterscheidet, in Manifest diff vs. SBOM diff vs. integrity drift.
Generatoren erstellen SBOMs und Scanner finden CVEs. sbomlyze sagt dir, was sich zwischen zwei SBOMs geändert hat und ob du ihnen vertrauen kannst. Führe es nach deinem Generator aus:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceanalysiert und bewertet die generierte 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 from GitHub Marketplace][marketplace] hinzu, um eine eingecheckte
oder separat generierte SBOM mit ihrer Git-Baseline zu vergleichen. Der unveränderliche SHA unten 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-Zusammenfassung 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 ein bestandenes Abhängigkeits-Update und eine blockierte Hash-Änderung bei gleicher Version, mit
öffentlichen Workflow-Läufen und SARIF-Nachweisen.
Für formatspezifisches Dogfooding verwenden Sie das öffentliche
[Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo),
[Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo) oder
[Container](https://github.com/rezmoss/sbomlyze-container-demo)-Beispiel. Jedes
enthält fünf reproduzierbare Review-Szenarien. Der
[10-Minuten-Beta-Leitfaden](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) sammelt vier gezielte Fragen zu Aktivierung und Signalqualität.
Generierte SBOMs müssen nicht committet werden: `baseline: workflow-artifact`
ruft das zuletzt passende Artefakt aus einem erfolgreichen Standard-Branch-Lauf ab. Ein [gepinnter Syft-Begleit-Workflow](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
zeigt Generierung und Baseline-Veröffentlichung, während SBOMlyze weiterhin für
Review und Richtlinien verantwortlich bleibt.
## Warum sbomlyze?
Viele Tools generieren SBOMs. Wenige vergleichen sie, und noch weniger sagen Ihnen, ob eine Änderung routinemäßig oder eine Supply-Chain-Warnung ist. sbomlyze schließt diese Lücke.
| Fähigkeit | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| SBOM-zu-SBOM-**Diff** | ✅ | basic | ❌ | ❌ |
| **Integritäts-/Manipulations**-Abweichung (Hash geändert ohne Version) | ✅ | ❌ | ❌ | ❌ |
| Dependency-Graph-Diff + Risiko durch transitive Tiefe | ✅ | ❌ | ❌ | ❌ |
| **NTIA / CISA / BSI**-Compliance-Bewertung | ✅ | ❌ | ✅ | ❌ |
| Formatkonvertierung (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | partial |
| **TUI + Web UI**-Explorer | ✅ | ❌ | ❌ | ❌ |
| Policy-Gate + SARIF / JUnit / Markdown / HTML / Patch | ✅ | partial | partial | partial |
## Funktionen
- **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** (ein Hash hat sich ohne Versionsänderung geändert, was auf Manipulation hindeutet) und Metadatendrift
- **Compliance-Bewertung**: Bewerten Sie jede SBOM anhand der Mindestelemente von **NTIA**, **CISA 2025** und **BSI TR-03183**
- **Dependency-Graph-Diff**: Verfolgen Sie transitive Abhängigkeiten und Supply-Chain-Tiefe
- **Multi-Format-Unterstützung**: Syft, CycloneDX, SPDX (JSON)
- **Formatkonvertierung**: Konvertieren Sie zwischen CycloneDX-, SPDX- und Syft-Formaten
- **Starke Identitätsabgleichung**: PURL → CPE → BOM-ref → Namespace/Name-Präzedenz
- **Statistikmodus**: Analysieren Sie einzelne SBOMs auf Lizenz-, Abhängigkeits- und Integritätsmetriken
- **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 Compliance-Score-Regeln in CI-Pipelines durch
- **GitHub Marketplace Action**: Steuern Sie Pull Requests anhand von SBOM-Drift mit Job-Zusammenfassung, SARIF und optionaler Kommentarausgabe
- **Duplikat- und 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
Installer-Skript
Das Installer-Skript lädt die passende Binärdatei für Ihr Betriebssystem/Ihre 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
**Installer-Optionen:**
| 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 außerdem die Build-Provenienz des Releases und schlägt fehl,
wenn diese Überprüfung nicht erfolgreich ist.
### Go Install```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
Aus Binär-Release
Laden Sie die neueste Binärdatei 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:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz
--repo rezmoss/sbomlyze
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
Unsigned apt-, rpm- und apk-Repository-Anweisungen wurden entfernt, bis die
Repositories die paketmanager-native Signaturüberprüfung unterstützen.
