
sbomlyze v0.3.6
Git diff para SBOMs—compara documentos CycloneDX, SPDX y Syft, detecta manipulaciones y controla la CI.
sbomlyze
git diff para tu SBOM. Compara dos listas de materiales de software y observa qué cambió entre compilaciones, versiones y lanzamientos.
sbomlyze compara los hashes de los componentes, no solo las cadenas de versión. Cuando un atacante intercambia un paquete sin aumentar su versión, sbomlyze lo señala. Los generadores y los escáneres de vulnerabilidades no detectan esto.
[![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] [![Licencia: Apache-2.0][license-img]][license] [![Descargas][download-img]][download]
Consulta por qué esta señal es diferente de un diff de manifiesto o de componentes ordinario en Diff de manifiesto vs. diff de SBOM vs. deriva de integridad.
Los generadores crean SBOM y los escáneres encuentran CVEs. sbomlyze te dice qué cambió entre dos SBOM y si debes confiar en ello. Ejecútalo después de tu generador:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceanaliza y puntúa el SBOM generado sin un archivo temporal. Compáralo con una línea base para clasificar la deriva y controlar tu pipeline.
Inicio rápido con GitHub Action
Añade [SBOMlyze Diff desde GitHub Marketplace][marketplace] para comparar un SBOM
verificado o generado por separado con su línea base de git. El SHA inmutable que aparece a continuación es
la Action v0.5.1 publicada:```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
La Action escribe un Job Summary por defecto y puede aplicar políticas, informar de desviaciones de integridad, subir SARIF o mantener un único comentario en la pull request. Consulta
[la referencia completa de la Action](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) para entradas, salidas, permisos
y guía de seguridad. Consulta el
[repositorio de demostración en vivo](https://github.com/rezmoss/sbomlyze-action-demo)
para ver una actualización de dependencias que pasa y un cambio de hash de la misma versión bloqueado, con
ejecuciones de workflows públicas y evidencia SARIF.
Para dogfooding específico de formato, usa los ejemplos públicos de
[Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo),
[Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo) o
[contenedor](https://github.com/rezmoss/sbomlyze-container-demo). Cada uno
contiene cinco escenarios de revisión reproducibles. La
[guía beta de 10 minutos](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) recopila cuatro preguntas centradas en la activación y la calidad de la señal.
Los SBOM generados no necesitan estar commiteados: `baseline: workflow-artifact`
recupera el artefacto coincidente más reciente de una ejecución exitosa de la rama
predeterminada. Un [workflow complementario de Syft fijado](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
muestra la generación y la publicación de la línea base mientras SBOMlyze sigue siendo responsable
de la revisión y las políticas.
## ¿Por qué sbomlyze?
Muchas herramientas generan SBOM. Pocas los comparan, y menos aún te dicen si un cambio es rutinario o una señal de alarma en la cadena de suministro. sbomlyze llena ese vacío.
| Capacidad | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| **Diff** SBOM a SBOM | ✅ | básico | ❌ | ❌ |
| Desviación de **integridad / manipulación** (hash cambiado sin cambio de versión) | ✅ | ❌ | ❌ | ❌ |
| Diff de grafo de dependencias + riesgo de profundidad transitiva | ✅ | ❌ | ❌ | ❌ |
| Puntuación de cumplimiento **NTIA / CISA / BSI** | ✅ | ❌ | ✅ | ❌ |
| Conversión de formatos (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | parcial |
| Exploradores **TUI + Web UI** | ✅ | ❌ | ❌ | ❌ |
| Puerta de políticas + SARIF / JUnit / Markdown / HTML / Patch | ✅ | parcial | parcial | parcial |
## Características
- **Diff de SBOM**: Compara dos SBOM y visualiza de un vistazo los componentes añadidos, eliminados y modificados
- **Clasificación de desviaciones**: Distingue entre desviación de versión y **desviación de integridad** (un hash cambiado sin cambio de versión, indicativo de manipulación) y desviación de metadatos
- **Puntuación de cumplimiento**: Puntúa cualquier SBOM según los elementos mínimos de **NTIA**, **CISA 2025** y **BSI TR-03183**
- **Diff de grafo de dependencias**: Realiza seguimiento de las dependencias transitivas y la profundidad de la cadena de suministro
- **Compatibilidad multi-formato**: Syft, CycloneDX, SPDX (JSON)
- **Conversión de formatos**: Convierte entre formatos CycloneDX, SPDX y Syft
- **Coincidencia sólida de identidades**: Precedencia PURL → CPE → BOM-ref → namespace/name
- **Modo estadísticas**: Analiza SBOM individuales para métricas de licencias, dependencias e integridad
- **Modo TUI interactivo**: Explora SBOM con navegación por teclado y búsqueda
- **Modo Web UI**: Explorador de SBOM basado en navegador con carga mediante arrastrar y soltar
- **Motor de políticas**: Aplica reglas de desviación, licencias y puntuación de cumplimiento en pipelines de CI
- **Action del GitHub Marketplace**: Filtra pull requests según la desviación del SBOM con Job Summary, SARIF y salida de comentarios opcional
- **Detección de duplicados y colisiones**: Encuentra múltiples versiones del mismo paquete y coincidencias de identidad ambiguas
- **Múltiples formatos de salida**: Texto, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Análisis tolerante**: Continúa ante errores con advertencias estructuradas
## Instalación
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
Script de instalación
El script de instalación descarga el binario correcto para tu sistema operativo/arquitectura:```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
**Opciones del instalador:**
| Opción | Descripción |
|--------|-------------|
| `-b <dir>` | Directorio de instalación (predeterminado: `./bin`) |
| `-d` | Habilitar salida de depuración |
| `-v <ver>` | Instalar versión específica (predeterminado: la última) |
El instalador siempre verifica el checksum de la versión. Cuando hay una CLI de GitHub compatible
instalada, también verifica la procedencia de compilación de la versión y falla de forma segura si
esa verificación no tiene éxito.
### Instalación con Go```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
Desde la versión binaria
Descarga el último binario desde GitHub Releases.
A partir de v0.3.7, los archivos de lanzamiento se publican con atestaciones de artefactos de GitHub. Verifica una descarga de forma independiente con:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz
--repo rezmoss/sbomlyze
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
Las instrucciones para repositorios apt, rpm y apk sin firmar se han eliminado hasta que los repositorios admitan la verificación de firmas nativa del administrador de paquetes.
