
sbomlyze v0.3.5
git diff para tu SBOM ,compara CycloneDX/SPDX/Syft listas de materiales, detecta manipulaciones, y controla el CI
sbomlyze
git diff para tu SBOM. Compara dos Software Bills of Materials 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 incrementar su versión, sbomlyze lo detecta. Los generadores y los escáneres de vulnerabilidades pasan esto por alto.
[![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]
Descubre por qué esta señal es diferente de un diff de manifiesto o de un diff de componentes ordinario en Manifest diff vs. SBOM diff vs. integrity drift.
Los generadores crean SBOMs y los escáneres encuentran CVEs. sbomlyze te dice qué cambió entre dos SBOMs y si se puede 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 necesidad de un archivo temporal. Compáralo con una línea base para clasificar la deriva y controlar tu pipeline.
Inicio rápido de GitHub Action
Añade [SBOMlyze Diff desde GitHub Marketplace][marketplace] para comparar un SBOM registrado en el repositorio o generado por separado con su línea base de git. El SHA inmutable a continuación es la Action publicada 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
La Action escribe un Job Summary por defecto y puede aplicar políticas, reportar
deriva de integridad, subir SARIF o mantener un único comentario en el 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 dependencia aprobada y un cambio de hash de la misma versión bloqueado, con
ejecuciones de workflow públicas y evidencia SARIF.
Para dogfooding específico de formato, usa el ejemplo público 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 activación y calidad
de señal.
Los SBOM generados no necesitan ser confirmados: `baseline: workflow-artifact`
recupera el artefacto coincidente más reciente de una ejecución exitosa de la rama por defecto.
Un [workflow complementario de Syft fijado](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
muestra la generación y publicación de baseline mientras SBOMlyze sigue siendo responsable
de la revisión y la política.
## ¿Por qué sbomlyze?
Muchas herramientas generan SBOM. Pocas los comparan, y menos aún te dicen si un cambio es rutinario o una bandera roja en la cadena de suministro. sbomlyze llena ese vacío.
| Capacidad | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| **diff** SBOM-a-SBOM | ✅ | básico | ❌ | ❌ |
| Deriva de **integridad / manipulación** (hash cambiado sin versión) | ✅ | ❌ | ❌ | ❌ |
| Diff de grafo de dependencias + riesgo de profundidad transitiva | ✅ | ❌ | ❌ | ❌ |
| Puntuación de cumplimiento **NTIA / CISA / BSI** | ✅ | ❌ | ✅ | ❌ |
| Conversión de formato (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | parcial |
| Exploradores **TUI + Web UI** | ✅ | ❌ | ❌ | ❌ |
| Puerta de política + SARIF / JUnit / Markdown / HTML / Patch | ✅ | parcial | parcial | parcial |
## Características
- **Diffing de SBOM**: Compara dos SBOM y ve los componentes añadidos, eliminados y modificados de un vistazo
- **Clasificación de deriva**: Distingue la deriva de versión de la **deriva de integridad** (un hash cambiado sin un cambio de versión, lo que indica manipulación) y la deriva 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**: Rastrea dependencias transitivas y profundidad de la cadena de suministro
- **Soporte multi-formato**: Syft, CycloneDX, SPDX (JSON)
- **Conversión de formato**: Convierte entre formatos CycloneDX, SPDX y Syft
- **Coincidencia de identidad robusta**: precedencia PURL → CPE → BOM-ref → namespace/name
- **Modo de estadísticas**: Analiza SBOM individuales para métricas de licencia, dependencia 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 deriva, licencia y puntuación de cumplimiento en pipelines de CI
- **GitHub Marketplace Action**: Bloquea pull requests según la deriva del SBOM con Job Summary, SARIF y salida de comentario 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 SO/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 una versión específica (predeterminado: la más reciente) |
El instalador siempre verifica la suma de comprobación 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 binario más reciente desde GitHub Releases.
A partir de la v0.3.7, los archivos de la versión 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 gestor de paquetes.
