Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
sbomlyze — Git diff para SBOMs—compara documentos CycloneDX, SPDX y Syft, detecta manipulaciones y controla la CI. | Kitploit
Herramientas/GitHubGitHub/rezmoss/sbomlyze
Análisis EstáticoAnálisis de VulnerabilidadesAuditoría de ConfiguraciónDevSecOpsUtilidades y FrameworksDetección de SecretosInteligencia de AmenazasSeguridad de Cadena de Suministro
GitHubrezmoss/sbomlyze

sbomlyze

Git diff para SBOMs—compara documentos CycloneDX, SPDX y Syft, detecta manipulaciones y controla la CI.

24239hace 2 díasRevisado por Kitploit
Ver Repositorio
Sitio web

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
# 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]


[![SBOMlyze bloquea un cambio de hash con la misma versión en una pull request real](https://assets.kitploit.com/production/public/readmes/12637/f834b700f00b5ee71103f6f5787595d834978432449ca3e794c3c9a0b3ffcb4c.gif)](https://github.com/rezmoss/sbomlyze-go-spdx-demo/pull/2)

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](https://github.com/rezmoss/sbomlyze/blob/main/docs/manifest-vs-sbom-vs-integrity-drift.md).


> 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 - --compliance` analiza 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](https://github.com/rezmoss/sbomlyze/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.

**Usuarios de macOS:** Elimine el indicador de cuarentena después de la descarga:```bash
xattr -d com.apple.quarantine ./sbomlyze
chmod +x ./sbomlyze
```
### Compilar desde el código fuente```bash
git clone https://github.com/rezmoss/sbomlyze.git
cd sbomlyze
go build -o sbomlyze ./cmd/sbomlyze
```
## Inicio rápido```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
```
## Uso```
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
```
## Comandos

### Modo de Estadísticas (Archivo Único)

Analiza un SBOM para obtener información sobre componentes, licencias y dependencias.```bash
sbomlyze image.json
```
La salida incluye el contexto del escaneo, los hallazgos clave detectados automáticamente y las estadísticas:```
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
```
#### Hallazgos clave

sbomlyze genera automáticamente información sobre tu SBOM. Para el análisis de un solo archivo, estos incluyen:

| Hallazgo | Descripción |
|---------|-------------|
| **Detección de SO/distro** | Identifica el sistema operativo o la distro a partir de los metadatos del SBOM |
| **Ecosistema dominante** | Informa cuando un tipo de paquete domina (>60% de todos los paquetes) |
| **Huella en el sistema de archivos** | Número de archivos rastreados en el sistema de archivos |
| **Densidad de relaciones** | Recuentos de relaciones de contención y de dependencia |
| **Puntos calientes de ubicación** | Directorios principales donde se encuentran los componentes |
| **Perfil de riesgo de licencias** | Desglose de porcentajes de licencias permisivas/copyleft/desconocidas |
| **Advertencias de calidad de datos** | Alertas cuando la cobertura de licencias (<50%), hashes (<50%) o PURL (<80%) es baja |
| **Advertencias de duplicados** | Señala grupos de componentes duplicados |
| **Desglose por catalogador** | Principales escáneres/catalogadores que detectaron componentes (SBOMs de Syft) |

#### Métricas de cobertura

El modo de estadísticas calcula porcentajes de cobertura para la evaluación de la calidad de los datos:

| Métrica | Descripción |
|--------|-------------|
| **Cobertura de PURL** | Porcentaje de componentes con Package URLs |
| **Cobertura de CPE** | Porcentaje de componentes con CPEs (preparación para el escaneo de vulnerabilidades) |
| **Cobertura de licencias** | Porcentaje de componentes con al menos una licencia |
| **Cobertura de hashes** | Porcentaje de componentes con hashes de integridad |

#### Categorización de licencias

Las licencias se categorizan automáticamente en:

| Categoría | Ejemplos |
|----------|----------|
| **Copyleft** | GPL, LGPL, AGPL, MPL, EPL, CDDL |
| **Permisiva** | MIT, BSD, Apache, ISC, Zlib, Unlicense |
| **Dominio público** | Dedicaciones al dominio público |
| **Desconocida** | Licencias no reconocidas o ausentes |

### Modo de conversión

Convierte SBOMs entre los formatos CycloneDX, SPDX y Syft JSON. El formato de entrada se detecta automáticamente.```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
```
#### Formatos de destino compatibles

| Formato | Valor de `--to` | Salida |
|--------|-------------|--------|
| CycloneDX 1.5 | `cyclonedx` o `cdx` | CycloneDX JSON con metadatos, dependencias y propiedades |
| SPDX 2.3 | `spdx` | SPDX JSON con paquetes, relaciones y referencias externas |
| Syft | `syft` | Syft JSON con artefactos, relaciones, origen e información de la distribución |

#### Qué se conserva

La conversión conserva nombres de componentes, versiones, PURLs, CPEs, licencias, hashes, información del proveedor y relaciones de dependencia. Los campos específicos del formato (p. ej., Syft language, foundBy, locations) se transfieren a través de las propiedades de CycloneDX al convertir a CDX.

### Modo Diff (Dos archivos)

Compara dos SBOMs para ver qué cambió entre versiones.```bash
sbomlyze v1.0.json v2.0.json
```
#### Resumen de diferencias

La diferencia comienza con una comparación de metadatos en paralelo (nombres de archivo, tamaños, información del sistema operativo, información de la herramienta, recuentos de componentes) seguida de detalles del contexto del escaneo cuando están disponibles.

#### Salida```
📊 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 ⚠️
```
#### Hallazgos clave de diferencias

En el modo diff, sbomlyze genera automáticamente información más rica comparando ambos SBOM:

| Hallazgo | Descripción |
|---------|-------------|
| **Discrepancia en el contexto de escaneo** | Advierte si la versión del esquema o el alcance del escaneo cambiaron entre los SBOM |
| **Delta de superficie de ataque** | Cambios en el recuento de paquetes, archivos y relaciones con porcentajes |
| **Ecosistemas desaparecidos/nuevos** | Tipos de paquetes que aparecieron o desaparecieron por completo |
| **Migración de SO/distribución** | Detecta cambios en el sistema operativo entre escaneos |
| **Análisis de cambios de versión** | Cuenta actualizaciones frente a degradaciones, clasifica los cambios como major/minor/patch |
| **Degradaciones de versión** | Señala las degradaciones como una señal de seguridad con detalles del componente |
| **Contexto de deriva de integridad** | Desglosa la deriva de integridad por tipo de paquete con orientación sobre riesgos |
| **Patrones de rutas dominantes** | Cambios concentrados por tipo y ruta del sistema de archivos |
| **Puntos calientes de eliminación/adición** | Directorios principales afectados por los cambios |
| **Tipos estables** | Tipos de paquetes con recuentos idénticos (núcleo sin cambios) |
| **Cambios en categorías de licencias** | Cambios en el equilibrio copyleft/permisiva |
| **Brechas del catalogador** | Escáneres que encontraron paquetes en Before pero ninguno en After |

#### Muestras de paquetes por tipo

Los componentes añadidos y eliminados se agrupan por tipo de paquete con listados de muestra, lo que facilita ver qué cambió en cada ecosistema.

## Puntuación de cumplimiento

Puntúa cualquier SBOM frente a los tres principales marcos de elementos mínimos para responder a la pregunta que auditores y equipos de compras siguen haciendo: **"¿Es este SBOM lo suficientemente completo?"**```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
```
### Frameworks evaluados

| Framework | Comprobaciones | Requisitos destacados |
|-----------|--------|----------------------|
| **NTIA Minimum Elements** (2021) | 7 | nombre, versión, proveedor, IDs únicos (PURL/CPE), relaciones de dependencia, autor del SBOM, marca de tiempo |
| **CISA 2025 Minimum Elements** (borrador de agosto de 2025) | 10 | añade productor de software, información de licencia, **hash de componente** y nombre de la herramienta además de NTIA |
| **BSI TR-03183-2** (v2.1.0, 2025) | 9 | requiere contacto del creador del componente, **hash SHA-512**, licencias en formato SPDX y contacto del creador del SBOM |

### Presentación de la puntuación

Cada framework informa un porcentaje (comprobaciones superadas / comprobaciones totales) más una puntuación general (promedio entre frameworks), con indicadores de estado:

| Indicador | Puntuación |
|-----------|-------|
| 🟢 | ≥ 90% |
| 🟡 | 70–89% |
| 🟠 | 50–69% |
| 🔴 | < 50% |

La salida JSON (`--compliance --json`) incluye el informe completo con el detalle de aprobado/fallido por comprobación; el formato HTML incorpora el informe de cumplimiento en la página del informe.

### Control del cumplimiento en CI

Aplique umbrales de cumplimiento a través del [motor de políticas](#policy-engine). Establecer cualquier umbral activa la evaluación de cumplimiento sin la opción `--compliance`:```json
{
  "min_ntia_score": 85,
  "min_cisa_score": 70,
  "min_bsi_score": 80,
  "min_overall_compliance": 75
}
```
Please provide the Markdown content to translate.```bash
sbomlyze image.json --policy compliance-policy.json
```
## Diff de Grafo de Dependencias

sbomlyze va más allá de las simples diferencias en listas de componentes para analizar el grafo de dependencias completo, detectando riesgos de cadena de suministro introducidos a través de dependencias transitivas.

### Características

| Característica | Descripción |
|---------|-------------|
| **Diff de aristas** | Dependencias directas añadidas/eliminadas (A depende de B) |
| **Alcance transitivo** | Nuevas dependencias indirectas que aparecen a través del grafo |
| **Seguimiento de pérdida transitiva** | Dependencias transitivas que fueron eliminadas |
| **Seguimiento de rutas** | Muestra exactamente cómo se alcanza cada nueva dependencia transitiva |
| **Seguimiento de profundidad** | Cuántos saltos de distancia está cada nueva dependencia de tu código |
| **Resumen de riesgo** | Dependencias de profundidad 3+ marcadas como de mayor riesgo |

### Por Qué Importa la Profundidad

Las dependencias introducidas más profundamente en el grafo son:
- Más difíciles de auditar y revisar
- A menudo incorporadas sin aprobación explícita  
- Vectores comunes para ataques de cadena de suministro (p. ej., el incidente de event-stream)

El resumen de profundidad ayuda a priorizar la revisión:

| Profundidad | Nivel de Riesgo | Descripción |
|-------|------------|-------------|
| **1** | Bajo | Dependencias directas (tú las elegiste) |
| **2** | Medio | Dependencias de tus dependencias |
| **3+** | Alto ⚠️ | Dependencias transitivas profundas - revisar cuidadosamente |

### Ejemplo: Detección de Dependencias Transitivas Profundas```bash
# Before: app -> express (simple, 1 dep)
# After:  app -> express -> lodash -> underscore -> deep-lib (chain of 4)

sbomlyze before.json after.json
```
Salida:```
🔗 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 ⚠️
```
### Salida JSON para el gráfico de dependencias```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
    }
  }
}
```
## Detección de Drift

sbomlyze clasifica los cambios de componentes en tres tipos de drift, ayudándote a distinguir actualizaciones normales de cambios potencialmente sospechosos.

### Tipos de Drift

| Tipo | Indicador | Descripción | Severidad |
|------|-----------|-------------|----------|
| **Versión** | 📦 | Número de versión cambiado | Normal |
| **Integridad** | ⚠️ | Hash cambiado SIN cambio de versión | Alta - ¡investigar! |
| **Metadatos** | 📝 | Solo metadatos (licencias, etc.) cambiados | Baja |

### Drift de Integridad (Señal de Seguridad)

El drift de integridad ocurre cuando el hash de un componente cambia pero su versión permanece igual. Esto podría indicar:

- **Ataque a la cadena de suministro**: El paquete fue reemplazado por una versión maliciosa
- **Reconstrucción sin incremento de versión**: Legítimo pero mala práctica
- **Entorno de compilación diferente**: Problemas de reproducibilidad```bash
# Example output with integrity drift
~ suspicious-pkg ⚠️  [INTEGRITY]
    hash[SHA256]: abc123 -> def456
```
**Recomendación**: Investiga siempre la deriva de integridad. Puede ser benigna, pero es una señal clave para la seguridad de la cadena de suministro.

### Salida JSON para la deriva

El resumen de la deriva se encuentra dentro del objeto `diff`:```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
    }
  }
}
```
**Extrayendo resumen de drift:**```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'
```
## Detección de Duplicados y Colisiones

### Detección de Duplicados

sbomlyze identifica componentes con la misma identidad pero diferentes versiones dentro de un SBOM:```
⚠️  Duplicates Found: 2
  lodash: [4.17.20, 4.17.21]
  express: [4.18.0, 4.19.2]
```
En modo diff, la comparación de versiones duplicadas rastrea:
- **Nuevos duplicados**: Componentes que se duplicaron en el nuevo SBOM
- **Duplicados resueltos**: Grupos de duplicados que se consolidaron
- **Adiciones/eliminaciones de versiones**: Cambios de versión dentro de grupos de duplicados existentes

### Detección de colisiones

Las colisiones son coincidencias de identidad ambiguas donde los componentes comparten el mismo ID pero tienen características conflictivas:

| Tipo | Descripción |
|------|-------------|
| **Discrepancia de nombre** | Diferentes nombres de componentes asignados al mismo ID de identidad |
| **Discrepancia de hash** | La misma versión de un componente tiene hashes diferentes (posible manipulación) |

## SBOMlyze SBOM Explorer (TUI)```bash
sbomlyze sbom.json -i
```
![interactive-sbom](https://assets.kitploit.com/production/public/readmes/12637/d28ec876b78778fce19967cad0a41a5ebd0acb43ad4dd0aeb7837ff5204b9903.gif)

### Atajos de teclado de la TUI

#### Navegación

| Tecla | Acción |
|-----|--------|
| `↑` / `k` | Mover hacia arriba |
| `↓` / `j` | Mover hacia abajo |
| `PgUp` / `Ctrl+u` | Media página hacia arriba |
| `PgDn` / `Ctrl+d` | Media página hacia abajo |
| `Home` / `g` | Ir al inicio |
| `End` / `G` | Ir al final |
| `Enter` | Ver detalles del componente |
| `Esc` / `Backspace` | Volver atrás |
| `q` / `Ctrl+c` | Salir |

#### Búsqueda y filtrado

| Tecla | Acción |
|-----|--------|
| `/` | Búsqueda profunda en todos los campos (nombre, PURL, licencias, JSON sin procesar) |
| `t` | Filtrar por tipo de paquete (npm, apk, golang, pypi, etc.) |
| `c` | Borrar todos los filtros activos |

#### Vistas

| Tecla | Contexto | Acción |
|-----|---------|--------|
| `j` | Vista de detalles | Ver el JSON sin procesar del componente con resaltado de sintaxis |
| `d` | Vista JSON | Volver a la vista de detalles |
| `Enter` | Vista JSON | Exportar el JSON del componente a un archivo |
| `?` | Cualquier vista | Mostrar la ayuda con todos los atajos de teclado |

### Vista de detalles del componente

La vista de detalles muestra información completa del componente:
- Información del paquete (nombre, versión, PURL, namespace, proveedor)
- Licencias con indicadores visuales
- Hashes de integridad
- CPEs (Common Platform Enumeration)
- Lista de dependencias
- Identificadores (ID, BOM-ref, SPDX-ID)

## Modo de interfaz web

Inicia un explorador de SBOM basado en navegador con carga de archivos mediante arrastrar y soltar:```bash
# Start web server on default port 8080
sbomlyze -web

# Start on custom port
sbomlyze -web --port 3000
```
Luego abre http://localhost:8080 en tu navegador.

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



### Características de la interfaz web

| Característica | Descripción |
|---------|-------------|
| **Carga mediante arrastrar y soltar** | Suelta cualquier archivo SBOM (Syft, CycloneDX, SPDX) en la página (hasta 500MB) |
| **Árbol de dependencias** | Vista de árbol interactiva con navegación de expandir/contraer (paginada para >5000 componentes) |
| **Detalles del componente** | Consulta licencias, hashes, dependencias, información del proveedor, recuento de archivos |
| **Vista de JSON sin procesar** | JSON con resaltado de sintaxis para cada componente |
| **Búsqueda profunda** | Busca en todos los campos, incluidos los datos JSON sin procesar |
| **Panel de estadísticas** | Métricas de cobertura, categorías de licencias, distribución de lenguajes |
| **Navegador del sistema de archivos** | Explora los archivos dentro del SBOM con navegación por directorios, búsqueda y filtrado por capas |

### Estadísticas mostradas

La interfaz web muestra estadísticas completas que incluyen:

- **Recuentos de componentes** por tipo de paquete (npm, apk, pypi, etc.)
- **Distribución de licencias** con desglose por categoría (copyleft, permisiva, dominio público)
- **Métricas de cobertura** con barras de progreso visuales:
  - Cobertura de PURL (presencia de URL del paquete)
  - Cobertura de CPE (preparación para el escaneo de vulnerabilidades)
  - Cobertura de licencias
  - Cobertura de hash/integridad
- **Desglose por lenguaje** (para SBOMs generados por Syft)
- **Estadísticas de relaciones** (contains, dependency-of, evident-by)
- **Advertencias de detección de duplicados**

### Casos de uso

**Revisión de seguridad**
- Sube un SBOM y explora el árbol de dependencias completo
- Comprueba la cobertura de CPE para asegurarte de que el escaneo de vulnerabilidades funciona
- Revisa los componentes sin licencias ni hashes

**Auditoría de cumplimiento**
- Busca licencias específicas en todos los componentes
- Consulta la distribución de categorías de licencias (copyleft vs permisiva)
- Exporta el JSON sin procesar para documentación

**Depuración de desarrollo**
- Explora qué paquetes están incluidos en tu imagen
- Comprueba las dependencias transitivas
- Verifica que los metadatos de los paquetes sean correctos

### Navegador del sistema de archivos

La interfaz web incluye un navegador de sistema de archivos completo para explorar los archivos dentro de los SBOMs (especialmente útil para SBOMs generados por Syft con metadatos de archivos):

- **Navegación por árbol de directorios** con ruta de navegación
- **Búsqueda de archivos** compatible con patrones de subcadena y glob (p. ej., `*.so`, `/usr/lib/**/*.conf`)
- **Filtrado por capas** para SBOMs de imágenes de contenedor (explora archivos por capa de imagen)
- **Relaciones componente-archivo** (qué componente posee qué archivos)
- **Estadísticas de archivos** por tipo, tipo MIME, extensión y capa
- **Detección de archivos sin propietario** (archivos no asociados con ningún componente)

## Opciones

### `-i` (Modo interactivo)

Inicia el explorador TUI basado en terminal para navegar por SBOMs con controles de teclado.```bash
sbomlyze image.json -i
```
Características: navegación en árbol, detalles de componentes, búsqueda, inspección de licencias/hashes.

### `-web` (Modo Servidor Web)

Inicia un servidor web para la exploración de SBOM basada en navegador.```bash
# Default port 8080
sbomlyze -web

# Custom port
sbomlyze -web --port 3000
```
La interfaz web proporciona carga mediante arrastrar y soltar, vista de árbol interactiva, búsqueda profunda y panel de estadísticas.

### `--compliance`

Puntúa el SBOM según los marcos de elementos mínimos de NTIA, CISA 2025 y BSI TR-03183. Consulte [Puntuación de cumplimiento](#compliance-scoring).```bash
sbomlyze image.json --compliance
sbomlyze image.json --compliance --json
```
### `--format` / `-f`

Selecciona el formato de salida. Hay siete formatos disponibles:

| Formato | Flag | Descripción | Ideal para |
|--------|------|-------------|----------|
| **text** | `--format text` (predeterminado) | Salida de terminal legible por humanos | Inspección local |
```

---

[Read more](https://github.com/rezmoss/sbomlyze)
Descargar herramienta