Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sbomlyze — Git diff für SBOMs – CycloneDX-, SPDX- und Syft-Dokumente vergleichen, Manipulationen erkennen und als CI-Gate dienen. | Kitploit
Tools/GitHubGitHub/rezmoss/sbomlyze
Statische AnalyseSchwachstellenanalyseKonfigurationsprüfungDevSecOpsDienstprogramme & FrameworksSecret-ErkennungBedrohungsanalyseLieferkettensicherheit
GitHubrezmoss/sbomlyze

sbomlyze

Git diff für SBOMs – CycloneDX-, SPDX- und Syft-Dokumente vergleichen, Manipulationen erkennen und als CI-Gate dienen.

Repository anzeigen
242vor 11 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

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 GitHub Marketplace GitHub Release Go Report Card OpenSSF Scorecard License: Apache-2.0 Downloads

SBOMlyze blocks a same-version hash change in a real pull request

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 - --compliance analysiert 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 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

root@kitploit:~
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/HEAD/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/HEAD/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/HEAD/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

root@kitploit:~
**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:

root@kitploit:~
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.

macOS-Benutzer: Entfernen Sie die Quarantäne-Flag nach dem Herunterladen:```bash xattr -d com.apple.quarantine ./sbomlyze chmod +x ./sbomlyze

root@kitploit:~
### Aus dem Quellcode erstellen```bash
git clone https://github.com/rezmoss/sbomlyze.git
cd sbomlyze
go build -o sbomlyze ./cmd/sbomlyze

Schnellstart```bash

Compare two SBOMs (the headline use case)

sbomlyze before.json after.json

Analyze a single SBOM

sbomlyze image.json

Read an SBOM from standard input

syft image:tag -o cyclonedx-json | sbomlyze -

Use standard input on either side of a diff

syft image:tag -o cyclonedx-json | sbomlyze baseline.json -

Score an SBOM against NTIA / CISA / BSI minimum elements

sbomlyze image.json --compliance

Interactive TUI explorer

sbomlyze image.json -i

Web UI (opens browser)

sbomlyze -web

Convert between SBOM formats

sbomlyze convert syft.json --to spdx sbomlyze convert cdx.json --to syft -o output.json

JSON output for CI integration

sbomlyze before.json after.json --json

SARIF output for GitHub Code Scanning

sbomlyze before.json after.json --format sarif

Markdown report for PR comments

sbomlyze before.json after.json --format markdown

Apply policy checks

sbomlyze before.json after.json --policy policy.json

root@kitploit:~
## Verwendung```
sbomlyze <sbom1|-> [sbom2|-] [options]
sbomlyze convert <sbom|-> --to <format> [-o output]

Modes:
  Single file:  sbomlyze <sbom> [--json]            Show statistics
  Interactive:  sbomlyze <sbom> -i                  Interactive explorer
  Convert:      sbomlyze convert <sbom> --to <fmt>  Convert SBOM format
  Web server:   sbomlyze -web [--port 8080]         Web UI explorer
  Two files:    sbomlyze <sbom1> <sbom2> [...]      Show diff

Use `-` in place of one SBOM path to read it from standard input.

Options:
  -i, --interactive   Interactive TUI explorer
  -web, --web         Start web UI server
  --port <port>       Web server port (default 8080)
  --json              Output in JSON format (shortcut for --format json)
  --format <format>   Output format: text, json, sarif, junit, markdown, html, patch
  --compliance        Show NTIA/CISA/BSI compliance scoring
  --policy <file>     Policy file for CI checks
  --strict            Fail on parse warnings
  --tolerant          Continue on parse warnings (default)
  --no-pager          Disable automatic paging of output
  --to <format>       Target format for convert: cyclonedx (cdx), spdx, syft
  -o, --output <file> Output file for convert (default: stdout)
  --version, -v       Show version information
  --help, -h          Show this help message

Befehle

Statistikmodus (Einzeldatei)

Analysieren Sie eine SBOM, um Einblicke in Komponenten, Lizenzen und Abhängigkeiten zu erhalten.```bash sbomlyze image.json

root@kitploit:~
Die Ausgabe enthält Scan-Kontext, automatisch erkannte Hauptergebnisse und Statistiken:```
Scan Context:
  Tool:               syft 1.40.1
  Schema:             16.0.18
  Scan Scope:         all-layers
  Source Type:        image
  Source:             alpine:latest

Key Findings:
  💻 OS/Distro: Alpine Linux v3.21
  📦 Dominated by apk: 71 of 71 packages (100.0%)
  📂 8,542 files tracked on filesystem
  🔗 Relationships: 71 containment + 64 dependency
  📜 License profile: 72% permissive, 20% copyleft
  ⚠️  Low hash coverage: 0.0% (71 of 71 missing)
  🔍 Top catalogers: apkdb-cataloger (71)

📦 SBOM Statistics
==================

Total Components: 71

By Package Type:
  apk          71

Licenses:
  With license:    71
  Without license: 0

  Top Licenses:
    MIT                            17
    BSD-3-Clause                   8
    GPL-2.0-only                   8

Integrity:
  With hashes:    0
  Without hashes: 71

Dependencies:
  Components with deps: 65
  Total dep relations:  176

Wichtigste Erkenntnisse

sbomlyze generiert automatisch Erkenntnisse über Ihre SBOM. Für die Einzeldateianalyse gehören dazu:

Abdeckungsmetriken

Der Statistikmodus berechnet Abdeckungsprozentsätze zur Bewertung der Datenqualität:

MetrikBeschreibung
PURL-AbdeckungProzentsatz der Komponenten mit Package-URLs

Lizenzkategorisierung

Lizenzen werden automatisch in folgende Kategorien eingeteilt:

KategorieBeispiele
CopyleftGPL, LGPL, AGPL, MPL, EPL, CDDL
PermissiveMIT, BSD, Apache, ISC, Zlib, Unlicense

Konvertierungsmodus

Konvertieren Sie SBOMs zwischen den JSON-Formaten CycloneDX, SPDX und Syft. Das Eingabeformat wird automatisch erkannt.```bash

CycloneDX to SPDX

sbomlyze convert image.cdx.json --to spdx

Syft to CycloneDX (cdx is an alias for cyclonedx)

sbomlyze convert syft-output.json --to cdx

SPDX to Syft, writing to a file

sbomlyze convert spdx-output.json --to syft -o converted.json

root@kitploit:~
#### Unterstützte Zielformate

| Format | `--to`-Wert | Ausgabe |
|--------|-------------|--------|
| CycloneDX 1.5 | `cyclonedx` oder `cdx` | CycloneDX-JSON mit Metadaten, Abhängigkeiten und Eigenschaften |
| SPDX 2.3 | `spdx` | SPDX-JSON mit Paketen, Beziehungen und externen Referenzen |
| Syft | `syft` | Syft-JSON mit Artefakten, Beziehungen, Quelle und Distro-Informationen |

#### Was erhalten bleibt

Die Konvertierung erhält Komponentennamen, Versionen, PURLs, CPEs, Lizenzen, Hashes, Lieferanteninformationen und Abhängigkeitsbeziehungen. Formatspezifische Felder (z. B. Syft language, foundBy, locations) werden bei der Konvertierung in CDX über CycloneDX-Eigenschaften übertragen.

### Diff-Modus (Zwei Dateien)

Vergleichen Sie zwei SBOMs, um zu sehen, was sich zwischen den Versionen geändert hat.```bash
sbomlyze v1.0.json v2.0.json

Diff-Übersicht

Der Diff beginnt mit einem nebeneinander angeordneten Metadatenvergleich (Dateinamen, Größen, OS-Informationen, Tool-Informationen, Komponentenzahlen), gefolgt von Details zum Scan-Kontext, sofern verfügbar.

Ausgabe```

📊 Drift Summary: 📦 Version drift: 58 components ⚠️ Integrity drift: 1 component (hash changed without version change!) 📝 Metadata drift: 2 components

🔑 Key Findings: 📈 Attack surface: +5 packages (7.0%), +120 files (3.2%) 🚨 2 version downgrades detected: openssl 3.1.4→3.0.2, curl 8.5.0→8.4.0 🔄 56 version upgrades (2 major, 12 minor, 42 patch) among 65 shared packages ⚠️ Integrity drift (1 total): 1 npm (review recommended) ❌ python ecosystem entirely removed (15 → 0 packages) ➕ New ecosystem: golang (8 packages) ✅ Core system packages stable: apk (71) unchanged

  • Added (2):
    • libgcrypt 1.10.3-r0
    • libgpg-error 1.49-r0
  • Removed (3):
    • libapk 3.0.3-r1
    • libgcc 15.2.0-r2
    • nghttp3 1.13.1-r0

~ Changed (58): ~ nginx version: 1.29.4-r1 -> 1.27.3-r1 ~ suspicious-pkg ⚠️ [INTEGRITY] hash[SHA256]: abc123 -> def456

Added dependencies: pkg:apk/alpine/libxslt: +[so:libgcrypt.so.20]

<< Removed dependencies: pkg:apk/alpine/libcurl: -[so:libnghttp3.so.9]

🔗 New transitive dependencies (3):

  • pkg:npm/lodash (depth 2) via: [pkg:npm/my-app pkg:npm/express pkg:npm/lodash]
  • pkg:npm/underscore (depth 3) via: [pkg:npm/my-app pkg:npm/express pkg:npm/lodash pkg:npm/underscore]

📊 New deps by depth: Depth 2: 1 Depth 3+ (risky): 2 ⚠️

root@kitploit:~
#### Diff – Wichtige Erkenntnisse

Im Diff-Modus generiert sbomlyze automatisch umfangreichere Erkenntnisse, die beide SBOMs vergleichen:

| Befund | Beschreibung |
|---------|-------------|
| **Abweichung des Scan-Kontexts** | Warnt, wenn sich Schema-Version oder Scan-Umfang zwischen den SBOMs geändert haben |
| **Delta der Angriffsfläche** | Änderungen bei der Anzahl von Paketen, Dateien und Beziehungen mit Prozentsätzen |
| **Verschwundene/neue Ökosysteme** | Pakettypen, die vollständig neu erschienen oder verschwunden sind |
| **OS/Distro-Migration** | Erkennt Änderungen des Betriebssystems zwischen Scans |
| **Analyse von Versionsänderungen** | Zählt Upgrades im Vergleich zu Downgrades und klassifiziert Änderungen als Major/Minor/Patch |
| **Versions-Downgrades** | Markiert Downgrades als Sicherheitssignal mit Details zu Komponenten |
| **Kontext der Integritätsabweichung** | Schlüsselt Integritätsabweichungen nach Pakettyp auf, mit Risikohinweisen |
| **Dominante Pfadmuster** | Konzentrierte Änderungen nach Typ und Dateisystempfad |
| **Hotspots für Entfernungen/Hinzufügungen** | Die wichtigsten von Änderungen betroffenen Verzeichnisse |
| **Stabile Typen** | Pakettypen mit identischen Zählwerten (unveränderter Kern) |
| **Verschiebungen bei Lizenzkategorien** | Änderungen im Verhältnis von Copyleft zu permissiven Lizenzen |
| **Lücken bei Katalogisierern** | Scanner, die in „Before“ Pakete gefunden haben, aber keine in „After“ |

#### Paketbeispiele nach Typ

Hinzugefügte und entfernte Komponenten werden nach Pakettyp mit Beispielauflistungen gruppiert, sodass leicht zu erkennen ist, was sich in jedem Ökosystem geändert hat.

## Compliance-Bewertung

Bewerten Sie jedes SBOM anhand der drei wichtigsten Rahmenwerke für Mindestelemente, um die Frage zu beantworten, die Prüfer und Einkaufsteams immer wieder stellen: **„Ist dieses SBOM vollständig genug?“**```bash
# Score a single SBOM
sbomlyze image.json --compliance

# Score alongside a diff
sbomlyze before.json after.json --compliance

# As JSON for CI
sbomlyze image.json --compliance --json

Bewertete Frameworks

Darstellung der Punktzahlen

Jedes Framework liefert einen Prozentsatz (bestandene Prüfungen / Gesamtprüfungen) sowie eine Gesamtpunktzahl (Durchschnitt über alle Frameworks), mit Statusindikatoren:

IndikatorPunktzahl
🟢≥ 90%
🟡70–89%
🟠50–69%
🔴< 50%

Die JSON-Ausgabe (--compliance --json) enthält den vollständigen Bericht mit Details zu bestanden/nicht bestanden pro Prüfung; das HTML-Format bettet den Compliance-Bericht in die Berichtsseite ein.

Compliance-Gating in CI

Erzwingen Sie Compliance-Schwellenwerte über die Policy-Engine. Das Festlegen eines beliebigen Schwellenwerts löst die Compliance-Bewertung ohne das Flag --compliance aus:```json { "min_ntia_score": 85, "min_cisa_score": 70, "min_bsi_score": 80, "min_overall_compliance": 75 }

root@kitploit:~
**PwWF** wurde entwickelt, um interne Bewertungen durchzuführen, bei denen Sie (mit Genehmigung) die aktuell vorhandenen Webfilter identifizieren und profilieren müssen. Häufig verfügen große Organisationen über verschiedene Appliances, Cloud-Dienste und Software-Stacks, die eine gewisse Ebene von Caching, Proxying, Inhaltsfilterung oder DNS-Sicherheit (wie Cisco Umbrella) durchführen und die von uns für Red Teaming verwendeten Tools beeinträchtigen können. In einigen Fällen ist es sogar vorteilhaft, genau zu wissen, was gefiltert wird, da dies Ihnen helfen kann, ein Ziel vor der Auslieferung von Payloads (z. B. einer E-Mail-Phishing-Kampagne) zu profilieren.

**PwWF** ist nicht als Engine konzipiert, die kontinuierlich auf einem VPS läuft und Links in Ihrer E-Mail anklickt. Es ist kein Linkprüfer, keine Sandbox und kein SIEM. Es wurde für punktuelle Tests entwickelt, um Ihnen schnell dabei zu helfen, die aktuell auf einer Ziel-Workstation vorhandenen Webfilterfunktionen zu profilieren, indem versucht wird, Dutzende von Websites, Seiten und Domains über verschiedene Methoden und Techniken abzurufen und zu kategorisieren.

## Funktionen
* **Keine Drittanbieter oder externen Dienste:** **PwWF** ist vollständig in sich geschlossen. Alle Prüfungen werden vom Binary/Skript selbst durchgeführt. Dies senkt nicht nur die Wahrscheinlichkeit der Erkennung durch verschiedene Komponenten wie Proxys, DNS-Filter und Netzwerkgeräte erheblich, sondern ermöglicht auch Tests in segmentierten oder Offline-Umgebungen oder wenn die Nutzung externer Seiten gemäß den Einsatzregeln (RoE) eingeschränkt ist.
* **Keine Administratorrechte erforderlich:** **PwWF** wurde für nicht-privilegierte Benutzer entwickelt. Sie benötigen keine Root-, Administrator- oder Power-User-Gruppenrechte, um dieses Tool auszuführen.
* **Verschiedene Verbindungsmethoden:** Fast alle Webfilter-Tools protokollieren und blockieren problemlos Standard-HTTP-Aufrufe (über WinINET oder WinHTTP), aber was ist mit den verschiedenen anderen Methoden, sich mit einem Host zu verbinden? **PwWF** verwendet eine Mischung aus Sockets, WebSockets, HTTP, HTTPS und DNS-Abfragen.```bash
sbomlyze image.json --policy compliance-policy.json

Abhängigkeitsgraph-Diff

sbomlyze geht über einfache Komponentenlisten-Diffs hinaus und analysiert den vollständigen Abhängigkeitsgraphen, um Lieferkettenrisiken zu erkennen, die durch transitive Abhängigkeiten eingeführt werden.

Funktionen

Warum die Tiefe wichtig ist

Tiefer in den Graphen eingeführte Abhängigkeiten sind:

  • Schwerer zu auditieren und zu überprüfen
  • Oft ohne ausdrückliche Genehmigung eingebunden
  • Häufige Vektoren für Supply-Chain-Angriffe (z. B. der event-stream-Vorfall)

Die Tiefenzusammenfassung hilft, die Überprüfung zu priorisieren:

TiefeRisikostufeBeschreibung
1NiedrigDirekte Abhängigkeiten (du hast diese gewählt)

Beispiel: Erkennen tiefer transitiver Abhängigkeiten```bash

Before: app -> express (simple, 1 dep)

After: app -> express -> lodash -> underscore -> deep-lib (chain of 4)

sbomlyze before.json after.json

root@kitploit:~
I'm ready to translate the provided content. However, the input section appears to be empty — there is no text to translate in this chunk. Please provide the source content, and I will translate it from English to German following all specified rules.```
🔗 New transitive dependencies (3):
  + lodash (depth 2)
    via: [app express lodash]
  + underscore (depth 3)
    via: [app express lodash underscore]
  + deep-lib (depth 4)
    via: [app express lodash underscore deep-lib]

📊 New deps by depth:
  Depth 2:              1
  Depth 3+ (risky):     2 ⚠️

JSON-Ausgabe für den Abhängigkeitsgraphen```json

{ "dependencies": { "added_deps": { "pkg:npm/express": ["pkg:npm/lodash", "pkg:npm/body-parser"] }, "removed_deps": {}, "transitive_new": [ { "target": "pkg:npm/underscore", "via": ["pkg:npm/my-app", "pkg:npm/express", "pkg:npm/lodash", "pkg:npm/underscore"], "depth": 3 } ], "transitive_lost": [], "depth_summary": { "depth_1": 0, "depth_2": 2, "depth_3_plus": 2 } } }

root@kitploit:~
## Drift-Erkennung

sbomlyze klassifiziert Komponentenänderungen in drei Drift-Typen und hilft Ihnen, normale Updates von potenziell verdächtigen Änderungen zu unterscheiden.

### Drift-Typen

| Typ | Indikator | Beschreibung | Schweregrad |
|------|-----------|-------------|----------|
| **Version** | 📦 | Versionsnummer geändert | Normal |
| **Integrität** | ⚠️ | Hash geändert OHNE Versionsänderung | Hoch – untersuchen! |
| **Metadaten** | 📝 | Nur Metadaten (Lizenzen usw.) geändert | Niedrig |

### Integritäts-Drift (Sicherheitssignal)

Integritäts-Drift tritt auf, wenn sich der Hash einer Komponente ändert, die Version aber gleich bleibt. Dies könnte Folgendes bedeuten:

- **Supply-Chain-Angriff**: Paket wurde durch eine schädliche Version ersetzt
- **Neuaufbau ohne Versionssprung**: Legitim, aber schlechte Praxis
- **Andere Build-Umgebung**: Reproduzierbarkeitsprobleme```bash
# Example output with integrity drift
~ suspicious-pkg ⚠️  [INTEGRITY]
    hash[SHA256]: abc123 -> def456

Empfehlung: Untersuchen Sie Integritätsdrift immer. Sie mag harmlos sein, ist aber ein wichtiges Signal für die Lieferkettensicherheit.

JSON-Ausgabe für Drift

Die Drift-Zusammenfassung befindet sich im diff-Objekt:```json { "diff": { "changed": [ { "id": "pkg:npm/suspicious-pkg", "name": "suspicious-pkg", "changes": ["hash[SHA-256]: abc123 -> def456"], "drift": { "type": "integrity", "hash_changes": { "changed": { "SHA-256": {"before": "abc123", "after": "def456"} } } } } ], "drift_summary": { "version_drift": 55, "integrity_drift": 1, "metadata_drift": 2 } } }

root@kitploit:~
**Extrahieren der Drift-Zusammenfassung:**```bash
# Get drift summary
sbomlyze before.json after.json --json | jq '.diff.drift_summary'

# Check for integrity drift in CI
sbomlyze before.json after.json --json | jq -e '.diff.drift_summary.integrity_drift > 0'

Duplikat- und Kollisionserkennung

Duplikaterkennung

sbomlyze identifiziert Komponenten mit derselben Identität, aber unterschiedlichen Versionen innerhalb einer SBOM:``` ⚠️ Duplicates Found: 2 lodash: [4.17.20, 4.17.21] express: [4.18.0, 4.19.2]

root@kitploit:~
Im Diff-Modus verfolgt das Duplikat-Versions-Diffing:
- **Neue Duplikate**: Komponenten, die im neuen SBOM dupliziert wurden
- **Behobene Duplikate**: Duplikatgruppen, die konsolidiert wurden
- **Versionshinzufügungen/-entfernungen**: Versionsänderungen innerhalb bestehender Duplikatgruppen

### Kollisionserkennung

Kollisionen sind mehrdeutige Identitätsübereinstimmungen, bei denen Komponenten dieselbe ID teilen, aber widersprüchliche Merkmale aufweisen:

| Typ | Beschreibung |
|------|-------------|
| **Namenskonflikt** | Verschiedene Komponentennamen, die derselben Identitäts-ID zugeordnet sind |
| **Hash-Konflikt** | Dieselbe Version einer Komponente hat unterschiedliche Hashes (mögliche Manipulation) |

## SBOMlyze SBOM Explorer (TUI)```bash
sbomlyze sbom.json -i

interactive-sbom

TUI-Tastaturkürzel

Navigation

Suche & Filter

TasteAktion
/Tiefensuche über alle Felder (Name, PURL, Lizenzen, rohes JSON)
tNach Pakettyp filtern (npm, apk, golang, pypi usw.)
cAlle aktiven Filter löschen

Ansichten

Komponenten-Detailansicht

Die Detailansicht zeigt umfassende Komponenteninformationen:

  • Paketinfo (Name, Version, PURL, Namespace, Lieferant)
  • Lizenzen mit visuellen Indikatoren
  • Integritäts-Hashes
  • CPEs (Common Platform Enumeration)
  • Abhängigkeitsliste
  • Kennungen (ID, BOM-ref, SPDX-ID)

Web-UI-Modus

Starte einen browserbasierten SBOM-Explorer mit Drag-and-Drop-Dateiupload:```bash

Start web server on default port 8080

sbomlyze -web

Start on custom port

sbomlyze -web --port 3000

root@kitploit:~
Öffnen Sie dann http://localhost:8080 in Ihrem Browser.

<img width="1497" height="1266" alt="Screenshot 2026-02-06 um 17 08 13" src="https://assets.kitploit.com/production/public/readmes/12637/57bcd50bc9b9955714b9078d1de37fc8152be02845a5c25b74a8fd14ff587bf4.png" />



### Web-UI-Funktionen

| Funktion | Beschreibung |
|---------|-------------|
| **Drag-and-Drop-Upload** | Ziehen Sie eine beliebige SBOM-Datei (Syft, CycloneDX, SPDX) per Drag & Drop auf die Seite (bis zu 500 MB) |
| **Abhängigkeitsbaum** | Interaktive Baumansicht mit Auf-/Zuklapp-Navigation (paginiert für >5000 Komponenten) |
| **Komponentendetails** | Lizenzen, Hashes, Abhängigkeiten, Lieferanteninformationen und Dateianzahl anzeigen |
| **Roh-JSON-Ansicht** | Syntax-hervorgehobenes JSON für jede Komponente |
| **Tiefensuche** | Durchsucht alle Felder einschließlich der rohen JSON-Daten |
| **Statistik-Dashboard** | Abdeckungsmetriken, Lizenzkategorien, Sprachverteilung |
| **Dateisystem-Browser** | Durchsuchen von Dateien in der SBOM mit Verzeichnisnavigation, Suche und Ebenenfilterung |

### Angezeigte Statistiken

Die Web-UI zeigt umfassende Statistiken, darunter:

- **Komponentenanzahl** nach Pakettyp (npm, apk, pypi, usw.)
- **Lizenzverteilung** mit Aufschlüsselung nach Kategorie (Copyleft, permissiv, Public Domain)
- **Abdeckungsmetriken** mit visuellen Fortschrittsbalken:
  - PURL-Abdeckung (Vorhandensein der Paket-URL)
  - CPE-Abdeckung (Bereitschaft für Schwachstellenscans)
  - Lizenzabdeckung
  - Hash-/Integritätsabdeckung
- **Sprachaufschlüsselung** (für von Syft generierte SBOMs)
- **Beziehungsstatistiken** (enthält, abhängig von, nachgewiesen durch)
- **Warnungen zur Duplikaterkennung**

### Anwendungsfälle

**Sicherheitsüberprüfung**
- Laden Sie eine SBOM hoch und erkunden Sie den vollständigen Abhängigkeitsbaum
- Prüfen Sie die CPE-Abdeckung, um sicherzustellen, dass die Schwachstellensuche funktioniert
- Überprüfen Sie Komponenten ohne Lizenzen oder Hashes

**Compliance-Prüfung**
- Suchen Sie nach bestimmten Lizenzen in allen Komponenten
- Zeigen Sie die Verteilung der Lizenzkategorien (Copyleft vs. permissiv) an
- Exportieren Sie rohes JSON für die Dokumentation

**Entwicklungs-Debugging**
- Untersuchen Sie, welche Pakete in Ihrem Image enthalten sind
- Prüfen Sie transitive Abhängigkeiten
- Verifizieren Sie, dass die Paketmetadaten korrekt sind

### Dateisystem-Browser

Die Web-UI enthält einen vollständigen Dateisystem-Browser zum Durchsuchen von Dateien in SBOMs (besonders nützlich für von Syft generierte SBOMs mit Dateimetadaten):

- **Verzeichnisbaum-Navigation** mit Breadcrumb-Pfad
- **Dateisuche** mit Unterstützung für Teilstring- und Glob-Muster (z. B. `*.so`, `/usr/lib/**/*.conf`)
- **Ebenenfilterung** für Container-Image-SBOMs (Dateien nach Image-Ebene durchsuchen)
- **Beziehungen zwischen Komponenten und Dateien** (welche Komponente welche Dateien besitzt)
- **Dateistatistiken** nach Typ, MIME-Typ, Erweiterung und Ebene
- **Erkennung herrenloser Dateien** (Dateien, die keiner Komponente zugeordnet sind)

## Optionen

### `-i` (Interaktiver Modus)

Startet den terminalbasierten TUI-Explorer zum Navigieren in SBOMs mit Tastatursteuerung.```bash
sbomlyze image.json -i

Funktionen: Baumnavigation, Komponentendetails, Suche, Lizenz-/Hash-Prüfung.

-web (Webserver-Modus)

Starte einen Webserver für die browserbasierte SBOM-Erkundung.```bash

Default port 8080

sbomlyze -web

Custom port

sbomlyze -web --port 3000

root@kitploit:~
Die Weboberfläche bietet Drag-and-Drop-Upload, interaktive Baumansicht, Tiefensuche und ein Statistik-Dashboard.

### `--compliance`

Bewertet die SBOM anhand der Mindestelement-Frameworks von NTIA, CISA 2025 und BSI TR-03183. Siehe [Compliance-Bewertung](#compliance-scoring).```bash
sbomlyze image.json --compliance
sbomlyze image.json --compliance --json

--format / -f

Wählen Sie das Ausgabeformat. Sieben Formate sind verfügbar:

SARIF output for GitHub Code Scanning

sbomlyze before.json after.json --format sarif > results.sarif

JUnit output for CI test dashboards

sbomlyze before.json after.json --format junit > results.xml

Markdown report for PR comments

sbomlyze before.json after.json --format markdown > report.md

Self-contained HTML report

sbomlyze before.json after.json --format html > report.html

JSON Patch operations

sbomlyze before.json after.json --format patch > changes.json

root@kitploit:~
#### SARIF Format

Erzeugt einen [SARIF 2.1.0](https://sarifweb.azurewebsites.net/)-Bericht, der für GitHub Code Scanning geeignet ist. Erkannte Regeln umfassen:

- `integrity-drift` (Fehler): Hash geändert ohne Versionsänderung
- `deep-dependency` (Warnung): neue Abhängigkeit in Tiefe 3+
- `new-component` / `removed-component` (Hinweis): Hinzufügen/Entfernen von Komponenten
- `version-change` (Hinweis): Aktualisierungen von Komponentenversionen
- `policy-violation` (Fehler/Warnung): Verstöße gegen Richtlinienregeln

#### JUnit Format

Erzeugt JUnit-XML mit Testfällen für:
- Keine Integritätsabweichung
- Keine tiefen transitiven Abhängigkeiten (Tiefe 3+)
- Richtlinienkonformität (ein Testfall pro Verstoß)
- SBOM-Diff-Zusammenfassung

#### Markdown Format

Erzeugt einen Markdown-Bericht mit:
- SBOM-Vergleichstabelle Seite an Seite (Datei, Größe, Betriebssystem, Abdeckungsmetriken)
- Details zum Scan-Kontext
- Wichtigste Erkenntnisse
- Hinzugefügte/entfernte Pakete nach Typ gruppiert (in aufklappbaren Abschnitten)
- Drift-Zusammenfassung, Abhängigkeitstiefe und Richtlinienverstöße

#### HTML Format

Erzeugt eine einzelne in sich geschlossene HTML-Datei (Inline-CSS und -JavaScript, keine externen Ressourcen), die sich zum E-Mail-Versand an Auditoren oder zum Anhängen an ein Release eignet. Sie enthält das Statistik-Dashboard, den Abhängigkeitsbaum, die Drift-Zusammenfassung und den eingebetteten Compliance-Bericht, wenn `--compliance` gesetzt ist.

#### Patch Format

Erzeugt ein Array von RFC-6902-JSON-Patch-Operationen (`add`, `remove`, `replace`), das den Diff darstellt.

### `--json`

Kurzform für `--format json`. Gibt Ergebnisse im JSON-Format zur programmatischen Verarbeitung aus.```bash
# Stats as JSON
sbomlyze image.json --json

# Diff as JSON
sbomlyze before.json after.json --json

Stats-JSON-Struktur:```json { "stats": { "total_components": 71, "by_type": {"apk": 71}, "by_license": {"MIT": 17, "BSD-3-Clause": 8}, "without_license": 0, "with_hashes": 0, "without_hashes": 71, "total_dependencies": 176, "with_dependencies": 65, "duplicate_count": 0, "by_language": {"go": 45, "python": 12}, "by_found_by": {"apk-db-cataloger": 71}, "license_categories": { "copyleft": 8, "permissive": 55, "public_domain": 0, "unknown": 8 }, "with_cpes": 71, "without_cpes": 0, "with_purl": 71, "without_purl": 0 }, "warnings": [] }

root@kitploit:~
### `--policy <file>`

Wende Policy-Regeln an und lasse CI bei Verstößen fehlschlagen.```bash
sbomlyze before.json after.json --policy policy.json

Siehe Policy Engine für Details.

--strict

Bricht bei jedem Parsing-Fehler sofort ab.```bash sbomlyze broken.json --strict

Error parsing broken.json: unknown SBOM format

exit status 1

root@kitploit:~
### `--tolerant` (Standard)

Verarbeitung bei Fehlern fortsetzen, Warnungen sammeln.```bash
sbomlyze broken.json --tolerant
# 📦 SBOM Statistics
# ==================
# Total Components: 0
# ...
# ⚠️  Parse Warnings (1):
#   [broken.json] unknown SBOM format

Parse-Warnungen enthalten strukturierte Informationen: die Quelldatei, eine menschenlesbare Nachricht und optional das Feld, das das Problem verursacht hat.

--no-pager

Deaktiviert die automatische Seitenweise Darstellung der Ausgabe. Nützlich, wenn die Ausgabe an einen anderen Befehl weitergeleitet wird oder in nicht interaktiven Umgebungen.```bash sbomlyze image.json --no-pager sbomlyze before.json after.json --no-pager | head -20

root@kitploit:~
## Policy-Engine

Erstellen Sie Richtlinien, um Regeln in CI/CD-Pipelines durchzusetzen. sbomlyze beendet mit Code 1, wenn Verstöße auftreten.

### Format der Richtliniendatei```json
{
  "max_added": 10,
  "max_removed": 5,
  "max_changed": 100,
  "deny_licenses": ["GPL-3.0", "AGPL-3.0"],
  "require_licenses": true,
  "deny_duplicates": true,
  "deny_integrity_drift": true,
  "max_depth": 3,
  "warn_supplier_change": true,
  "warn_new_transitive": true,
  "min_ntia_score": 85,
  "min_cisa_score": 70,
  "min_bsi_score": 80,
  "min_overall_compliance": 75
}

Policy-Regeln

Das Festlegen eines beliebigen min_*_score-Schwellenwerts löst automatisch die Compliance-Bewertung aus, auch ohne das --compliance-Flag.

Beispiel: Strikte Policy```json

{ "max_added": 5, "max_removed": 3, "max_changed": 20, "deny_licenses": ["GPL-3.0", "AGPL-3.0", "SSPL-1.0"], "require_licenses": true, "deny_duplicates": true, "deny_integrity_drift": true, "max_depth": 3, "warn_supplier_change": true, "warn_new_transitive": true, "min_overall_compliance": 80 }

root@kitploit:~
### Ausgabe von Richtlinienverstößen```
!! Policy Violations (3):
  [max_added] too many components added: 10 > 5
  [max_removed] too many components removed: 7 > 3
  [deny_licenses] component foo has denied license: GPL-3.0

Unterstützte SBOM-Formate

Alle Formate müssen JSON sein. XML-Unterstützung ist derzeit nicht verfügbar.

Formatkonvertierung

sbomlyze kann zwischen allen drei unterstützten Formaten konvertieren:```bash sbomlyze convert input.json --to spdx # any format → SPDX 2.3 sbomlyze convert input.json --to cyclonedx # any format → CycloneDX 1.5 sbomlyze convert input.json --to syft # any format → Syft JSON

root@kitploit:~
See [Convert Mode](#convert-mode) for details.

### Formatübergreifender Vergleich

sbomlyze kann SBOMs in verschiedenen Formaten vergleichen:```bash
# Compare Syft output with CycloneDX
sbomlyze syft-output.json cyclonedx-output.json

# Compare SPDX with Syft
sbomlyze spdx-output.json syft-output.json

Hinweis: Verschiedene SBOM-Formate extrahieren unterschiedliche Detailstufen. Ein formatübergreifender Diff kann Änderungen zeigen, die Formatunterschiede (z. B. Feldverfügbarkeit) widerspiegeln und nicht tatsächliche Systemänderungen. Das Key-Findings-System warnt, wenn Abweichungen im Scan-Kontext erkannt werden.

Komponenten-Identitätsabgleich

Komponenten werden mithilfe eines prioritätsbasierten Identitätssystems abgeglichen:

CI/CD-Integration

GitHub Actions

SBOMlyze wird als abhängigkeitsfreie JavaScript-Action ausgeliefert. Sie vergleicht ein eingechecktes oder separat erstelltes Head-SBOM mit der Datei an der Git-Basis des Pull Requests, veröffentlicht eine Job Summary und erzeugt optional SARIF oder aktualisiert einen PR-Kommentar.```yaml name: SBOM Check on: pull_request:

permissions: contents: read

jobs: sbom-diff: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0

root@kitploit:~
  - id: sbomlyze
    uses: rezmoss/sbomlyze@31503690611fda8ebba4ed2bd186eda000442594 # v0.5.1
    with:
      sbom-path: build/sbom.cdx.json
      policy: .github/sbom-policy.json
      fail-on: policy
root@kitploit:~
Die Action führt niemals Generatorbefehle aus. Generieren Sie die Head-SBOM in einem separaten, überprüften Schritt oder committen Sie sie in das Repository. `comment` und `sarif` sind standardmäßig beide `false`; Fork-PRs erhalten weiterhin die vollständige Job-Zusammenfassung, wenn keine Kommentarberechtigung verfügbar ist. Siehe [die Action-Referenz](https://github.com/rezmoss/sbomlyze/blob/HEAD/ACTION.md) für alle Ein-/Ausgaben, SHA-Pinning, SARIF-Upload, Berechtigungen und Sicherheitsverhalten.

### GitLab CI```yaml
sbom-diff:
  stage: test
  script:
    - syft . -o json > current.json
    - sbomlyze baseline.json current.json --policy policy.json --json > sbom-report.json
    - sbomlyze baseline.json current.json --format junit > sbom-junit.xml
  artifacts:
    paths:
      - sbom-report.json
    reports:
      junit: sbom-junit.xml
    when: always

Integritätsdrift-Warnung```bash

Alert on any integrity drift (CI example)

if sbomlyze baseline.json current.json --json | jq -e '.diff.drift_summary.integrity_drift > 0' > /dev/null; then echo "⚠️ INTEGRITY DRIFT DETECTED - Investigate immediately!" exit 1 fi

root@kitploit:~
### Warnung vor tiefen Abhängigkeiten```bash
# Alert on new deep transitive dependencies
if sbomlyze baseline.json current.json --json | jq -e '.diff.dependencies.depth_summary.depth_3_plus > 0' > /dev/null; then
  echo "⚠️  New deep transitive dependencies detected - Review required!"
fi

Compliance Gate```bash

Fail the build if the SBOM doesn't meet minimum-element requirements

sbomlyze current.json --policy compliance-policy.json

where compliance-policy.json sets min_overall_compliance / min_ntia_score / etc.

root@kitploit:~
## Exit-Codes

| Code | Bedeutung |
|------|-----------|
| 0 | Erfolg, keine Unterschiede oder Verstöße |
| 1 | Unterschiede gefunden (hinzugefügte/entfernte/geänderte Komponenten), Richtlinienverstöße oder Fehler |

**Hinweis:** Im Diff-Modus wird Exit-Code 1 immer dann zurückgegeben, wenn Änderungen an Komponenten erkannt werden, auch ohne Richtliniendatei. Dadurch kann er als einfaches „Hat sich etwas geändert?“-Gate in CI verwendet werden.

## Beispiele

### Docker-Images vergleichen```bash
# Generate SBOMs
syft nginx:1.25-alpine -o json > nginx-125.json
syft nginx:1.26-alpine -o json > nginx-126.json

# Compare
sbomlyze nginx-125.json nginx-126.json

Lizenz-Audit```bash

Check for GPL licenses in new dependencies

cat > audit-policy.json << EOF { "deny_licenses": ["GPL-2.0", "GPL-3.0", "LGPL-2.1", "LGPL-3.0"], "require_licenses": true } EOF

sbomlyze old.json new.json --policy audit-policy.json

root@kitploit:~
### Erkennung von Abhängigkeitsdrift```bash
# Detect any changes (strict mode for no drift)
cat > no-drift.json << EOF
{
  "max_added": 0,
  "max_removed": 0,
  "max_changed": 0
}
EOF

sbomlyze baseline.json current.json --policy no-drift.json

Compliance-Prüfung```bash

Score an SBOM and enforce a minimum

sbomlyze image.json --compliance

cat > compliance-policy.json << EOF { "min_ntia_score": 90, "min_overall_compliance": 80 } EOF

sbomlyze image.json --policy compliance-policy.json

root@kitploit:~
### SBOM-Formate konvertieren```bash
# Convert a Syft SBOM to CycloneDX for tools that require it
syft alpine:latest -o json > alpine-syft.json
sbomlyze convert alpine-syft.json --to cyclonedx -o alpine-cdx.json

# Convert CycloneDX to SPDX for compliance workflows
sbomlyze convert vendor-sbom.cdx.json --to spdx > vendor-sbom.spdx.json

# Pipe conversion output directly
sbomlyze convert input.json --to spdx | jq '.packages | length'

SBOM im Browser erkunden```bash

Generate SBOM and explore in web UI

syft alpine:latest -o json > alpine.json

Start web server

sbomlyze -web

Then open http://localhost:8080 and drag-drop alpine.json

root@kitploit:~
### Interaktive Terminal-Erkundung```bash
# Explore with keyboard navigation
sbomlyze alpine.json -i

# Navigate with arrow keys, search with '/', view details with Enter

Entwicklung

Tests ausführen```bash

make test

or

go test -v ./...

root@kitploit:~
### Lint```bash
make lint        # runs go vet + golangci-lint + staticcheck
make vulncheck   # runs govulncheck for known CVEs

Erstellen```bash

make build-quick

or

go build -o sbomlyze ./cmd/sbomlyze

root@kitploit:~
### Make-Befehle```bash
make all            # Run test, lint, and build
make test           # Run all tests with race detector
make lint           # Run go vet, golangci-lint, and staticcheck
make vulncheck      # Run govulncheck for known vulnerabilities
make build          # Build with goreleaser (snapshot)
make build-quick    # Quick build for development
make snapshot-test  # Run snapshot tests only
make update-snapshot # Update snapshot golden files
make clean          # Remove build artifacts

Mitwirken

Beiträge sind willkommen! Gute Einstiegs-Issues sind mit good first issue gekennzeichnet. Siehe CONTRIBUTING.md, sofern vorhanden, und erstelle gern ein Issue oder eine Diskussion, um Änderungen vorzuschlagen.

Tool herunterladen
ErkenntnisBeschreibung
OS-/Distro-ErkennungIdentifiziert das Betriebssystem oder die Distribution aus den SBOM-Metadaten
Dominantes ÖkosystemMeldet, wenn ein Pakettyp dominiert (>60 % aller Pakete)
Dateisystem-FußabdruckAnzahl der nachverfolgten Dateien im Dateisystem
BeziehungsdichteZählt 'enthält'- und 'abhängig von'-Beziehungen
Standort-HotspotsDie wichtigsten Verzeichnisse, in denen Komponenten gefunden werden
LizenzrisikoprofilAufschlüsselung der Prozentsätze von permissiven/Copyleft/unbekannten Lizenzen
DatenqualitätswarnungenWarnt bei niedriger Abdeckung von Lizenzen (<50 %), Hashes (<50 %) oder PURLs (<80 %)
DuplikatwarnungenKennzeichnet doppelte Komponentengruppen
Katalogisierer-AufschlüsselungDie wichtigsten Scanner/Katalogisierer, die Komponenten erkannt haben (Syft SBOMs)
CPE-AbdeckungProzentsatz der Komponenten mit CPEs (Bereitschaft für Schwachstellenscans)
LizenzabdeckungProzentsatz der Komponenten mit mindestens einer Lizenz
Hash-AbdeckungProzentsatz der Komponenten mit Integritäts-Hashes
Public DomainPublic-Domain-Widmungen
UnbekanntNicht erkannte oder fehlende Lizenzen
FrameworkPrüfungenBemerkenswerte Anforderungen
NTIA Minimum Elements (2021)7Name, Version, Lieferant, eindeutige IDs (PURL/CPE), Abhängigkeitsbeziehungen, SBOM-Autor, Zeitstempel
CISA 2025 Minimum Elements (Aug 2025 draft)10fügt gegenüber NTIA Software-Hersteller, Lizenzinformationen, Komponenten-Hash und Tool-Name hinzu
BSI TR-03183-2 (v2.1.0, 2025)9erfordert Kontakt zum Komponentenersteller, SHA-512-Hash, Lizenzen im SPDX-Format und Kontakt zum SBOM-Ersteller
FunktionBeschreibung
Kanten-DiffHinzugefügte/entfernte direkte Abhängigkeiten (A hängt von B ab)
Transitive ErreichbarkeitNeue indirekte Abhängigkeiten, die über den Graphen auftreten
Tracking transitiver VerlusteTransitive Abhängigkeiten, die entfernt wurden
PfadverfolgungZeigt genau, wie jede neue transitive Abhängigkeit erreicht wird
TiefenverfolgungWie viele Hops jede neue Abhängigkeit von deinem Code entfernt ist
RisikozusammenfassungAbhängigkeiten mit Tiefe 3+ werden als höheres Risiko markiert
2MittelAbhängigkeiten deiner Abhängigkeiten
3+Hoch ⚠️Tiefe transitive Abhängigkeiten - sorgfältig prüfen
TasteAktion
↑ / kNach oben bewegen
↓ / jNach unten bewegen
PgUp / Ctrl+uEine halbe Seite nach oben
PgDn / Ctrl+dEine halbe Seite nach unten
Home / gZum Anfang springen
End / GZum Ende springen
EnterKomponentendetails anzeigen
Esc / BackspaceZurückgehen
q / Ctrl+cBeenden
TasteKontextAktion
jDetailansichtRohe Komponenten-JSON mit Syntaxhervorhebung anzeigen
dJSON-AnsichtZurück zur Detailansicht wechseln
EnterJSON-AnsichtKomponenten-JSON in Datei exportieren
?Beliebige AnsichtHilfe mit allen Tastenkürzeln anzeigen
FormatFlagBeschreibungAm besten geeignet für
text--format text (Standard)Menschenlesbare TerminalausgabeLokale Überprüfung
json--json oder --format jsonStrukturiertes JSONCI-Pipelines, Skripterstellung
sarif--format sarifSARIF 2.1.0 für GitHub Code ScanningGitHub-Integration
junit--format junitJUnit-XML-TestergebnisseCI-Test-Dashboards
markdown--format markdownMarkdown-Bericht, bereit für PR-KommentarePull-Request-Kommentare
html--format htmlIn sich geschlossener HTML-Bericht (Inline-CSS/JS)Auditoren, teilbare Berichte
patch--format patchRFC-6902-JSON-Patch-OperationenProgrammatisches Patchen
RuleTypBeschreibung
max_addedintMaximal erlaubte neue Komponenten (0 = unbegrenzt)
max_removedintMaximal erlaubte entfernte Komponenten (0 = unbegrenzt)
max_changedintMaximal erlaubte geänderte Komponenten (0 = unbegrenzt)
deny_licenses[]stringListe verbotener Lizenzkennungen
require_licensesboolAlle hinzugefügten Komponenten müssen Lizenzen haben (prüft nur neu hinzugefügte Komponenten im Diff-Modus)
deny_duplicatesboolFehlschlagen, wenn doppelte Pakete im Ergebnis vorhanden sind
deny_integrity_driftboolFehlschlagen, wenn sich der Komponenten-Hash ohne Versionsänderung geändert hat (Lieferkettenrisiko)
max_depthintFehlschlagen, wenn neue transitive Abhängigkeiten bei Tiefe >= N (0 = unbegrenzt)
warn_supplier_changeboolWarnen (kein Fehlschlagen), wenn sich Lieferant/Autor der Komponente geändert hat
warn_new_transitiveboolWarnen (kein Fehlschlagen) bei neuen transitiven Abhängigkeiten
min_ntia_scoreintFehlschlagen, wenn der NTIA-Compliance-Score darunter liegt (0-100, 0 = deaktiviert)
min_cisa_scoreintFehlschlagen, wenn der CISA-Compliance-Score darunter liegt (0-100, 0 = deaktiviert)
min_bsi_scoreintFehlschlagen, wenn der BSI-Compliance-Score darunter liegt (0-100, 0 = deaktiviert)
min_overall_complianceintFehlschlagen, wenn der Gesamt-Compliance-Score darunter liegt (0-100, 0 = deaktiviert)
FormatDateierkennungExtrahierte Identifikatoren
Syft (nativ)JSON-Schlüssel "artifacts" + einer von "source", "distro", "descriptor"PURL, CPE, name
CycloneDXJSON-Schlüssel "bomFormat" = "CycloneDX" oder "$schema", das cyclonedx enthältPURL, CPE, BOM-ref, group (namespace)
SPDXJSON-Schlüssel "spdxVersion", beginnend mit "SPDX-"PURL, CPE, SPDXID
PrioritätKennungBeispielBeschreibung
1PURLpkg:npm/lodashPackage-URL (Version entfernt)
2CPEcpe:vendor:productCPE vendor:product (Version entfernt)
3BOM-ref / SPDXIDref:component-123CycloneDX-bom-ref oder SPDX-Kennung
4Namespace + Namecom.example/mypackageGruppe/Namespace mit Name
5Namesimple-packageFallback nur auf Name