
sbomlyze v0.3.6
Git diff pour les SBOM — comparer les documents CycloneDX, SPDX et Syft, détecter les falsifications et valider le CI.
sbomlyze
git diff pour votre SBOM. Comparez deux Bills of Materials logiciels et voyez ce qui a changé entre les builds, versions et releases.
sbomlyze compare les empreintes de composants, pas seulement les chaînes de version. Lorsqu'un attaquant remplace un package sans en augmenter la version, sbomlyze le signale. Les générateurs et les scanners de vulnérabilités ne détectent pas cela.
[![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]
Découvrez pourquoi ce signal diffère d'un manifeste ou d'un diff de composants classique dans Manifest diff vs. SBOM diff vs. integrity drift.
Les générateurs produisent des SBOM et les scanners trouvent des CVE. sbomlyze vous indique ce qui a changé entre deux SBOM et si vous pouvez lui faire confiance. Exécutez-le après votre générateur :
syft image:tag -o cyclonedx-json | sbomlyze - --complianceanalyse et évalue le SBOM généré sans fichier temporaire. Comparez-le avec une baseline pour classer les dérives et contrôler votre pipeline.
Démarrage rapide de l'action GitHub
Ajoutez [SBOMlyze Diff from GitHub Marketplace][marketplace] pour comparer un SBOM suivi dans le dépôt
ou généré séparément avec sa baseline git. Le SHA immuable ci-dessous est
l'Action publiée 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
L’Action écrit un Job Summary par défaut et peut appliquer une politique, signaler une dérive d’intégrité, téléverser du SARIF ou maintenir un unique commentaire de pull request. Voir [la référence complète de l’Action](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) pour les entrées, les sorties, les permissions et les recommandations de sécurité. Voir le [dépôt de démonstration en direct](https://github.com/rezmoss/sbomlyze-action-demo) pour une mise à jour de dépendance acceptée et un changement de hash bloqué à version identique, avec des exécutions de workflow publiques et des preuves SARIF.
Pour un dogfooding spécifique au format, utilisez l’exemple public [Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo), [Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo), ou [conteneur](https://github.com/rezmoss/sbomlyze-container-demo). Chacun contient cinq scénarios de revue reproductibles. Le [guide bêta de 10 minutes](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) rassemble quatre questions ciblées sur l’activation et la qualité du signal.
Les SBOM générés n’ont pas besoin d’être commités : `baseline: workflow-artifact` récupère l’artefact correspondant le plus récent d’une exécution réussie de la branche par défaut. Un [workflow compagnon Syft épinglé](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml) montre la génération et la publication de la baseline tandis que SBOMlyze reste responsable de la revue et de la politique.
## Pourquoi sbomlyze ?
De nombreux outils génèrent des SBOM. Peu les comparent, et encore moins vous disent si une modification est routinière ou un signal d’alerte pour la chaîne d’approvisionnement. sbomlyze comble cette lacune.
| Capacité | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| **Diff** SBOM à SBOM | ✅ | basique | ❌ | ❌ |
| Dérive **d’intégrité / d’altération** (hash modifié sans changement de version) | ✅ | ❌ | ❌ | ❌ |
| Diff de graphe de dépendances + risque de profondeur transitive | ✅ | ❌ | ❌ | ❌ |
| Score de conformité **NTIA / CISA / BSI** | ✅ | ❌ | ✅ | ❌ |
| Conversion de format (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | partiel |
| Explorateurs **TUI + Web UI** | ✅ | ❌ | ❌ | ❌ |
| Contrôle de politique + SARIF / JUnit / Markdown / HTML / Patch | ✅ | partiel | partiel | partiel |
## Fonctionnalités
- **Diffing SBOM** : Comparez deux SBOM et voyez d’un coup d’œil les composants ajoutés, supprimés et modifiés
- **Classification des dérives** : Distinguez la dérive de version de la **dérive d’intégrité** (un hash modifié sans changement de version, signalant une altération) et de la dérive de métadonnées
- **Score de conformité** : Notez tout SBOM par rapport aux éléments minimaux **NTIA**, **CISA 2025** et **BSI TR-03183**
- **Diff de graphe de dépendances** : Suivez les dépendances transitives et la profondeur de la chaîne d’approvisionnement
- **Support multi-format** : Syft, CycloneDX, SPDX (JSON)
- **Conversion de format** : Convertissez entre les formats CycloneDX, SPDX et Syft
- **Correspondance d’identité robuste** : Priorité PURL → CPE → BOM-ref → namespace/name
- **Mode statistiques** : Analysez des SBOM uniques pour les métriques de licence, de dépendance et d’intégrité
- **Mode TUI interactif** : Explorez les SBOM avec navigation clavier et recherche
- **Mode Web UI** : Explorateur de SBOM basé sur le navigateur avec téléversement par glisser-déposer
- **Moteur de politique** : Appliquez les règles de dérive, de licence et de score de conformité dans les pipelines CI
- **Action GitHub Marketplace** : Conditionnez les pull requests selon la dérive SBOM avec Job Summary, SARIF et sortie de commentaire facultative
- **Détection des doublons et collisions** : Trouvez plusieurs versions du même paquet et des correspondances d’identité ambiguës
- **Formats de sortie multiples** : Texte, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Analyse tolérante** : Continuez en cas d’erreurs avec des avertissements structurés
## Installation
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
Script d'installation
Le script d'installation télécharge le bon binaire pour votre OS/architecture :```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
**Options de l'installateur :**
| Option | Description |
|--------|-------------|
| `-b <dir>` | Répertoire d'installation (défaut : `./bin`) |
| `-d` | Activer la sortie de débogage |
| `-v <ver>` | Installer une version spécifique (défaut : dernière) |
L'installateur vérifie toujours la somme de contrôle de la release. Lorsqu'un GitHub CLI compatible
est installé, il vérifie également la provenance de la build de la release et échoue (fail closed) si
cette vérification ne réussit pas.
### Go Install```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
À partir des versions binaires
Téléchargez la dernière version binaire depuis GitHub Releases.
