Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
sbomlyze — Git diff para SBOMs—compare documentos CycloneDX, SPDX e Syft, detecte adulterações e sirva como gate de CI. | Kitploit
Ferramentas/GitHubGitHub/rezmoss/sbomlyze
Análise EstáticaAnálise de VulnerabilidadesAuditoria de ConfiguraçãoDevSecOpsUtilitários e FrameworksDetecção de SegredosInteligência de AmeaçasSegurança da Cadeia de Suprimentos
GitHubrezmoss/sbomlyze

sbomlyze

Git diff para SBOMs—compare documentos CycloneDX, SPDX e Syft, detecte adulterações e sirva como gate de CI.

24239há 2 diasRevisado pelo Kitploit
Ver Repositório
Site

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
# sbomlyze

**`git diff` para o seu SBOM.** Compare dois Software Bills of Materials e veja o que mudou entre builds, versões e releases.

O sbomlyze compara hashes de componentes, não apenas strings de versão. Quando um atacante troca um pacote sem incrementar sua versão, o sbomlyze sinaliza. Geradores e scanners de vulnerabilidade não detectam isso.

[![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 bloqueia uma alteração de hash na mesma versão em um pull request real](https://assets.kitploit.com/production/public/readmes/12637/f834b700f00b5ee71103f6f5787595d834978432449ca3e794c3c9a0b3ffcb4c.gif)](https://github.com/rezmoss/sbomlyze-go-spdx-demo/pull/2)

Veja por que este sinal é diferente de um diff de manifesto ou de um diff comum de componentes em
[Manifest diff vs. SBOM diff vs. integrity drift](https://github.com/rezmoss/sbomlyze/blob/main/docs/manifest-vs-sbom-vs-integrity-drift.md).


> Geradores criam SBOMs e scanners encontram CVEs. O sbomlyze informa o que mudou entre dois SBOMs e se você deve confiar nisso.
> Execute-o após o seu gerador: `syft image:tag -o cyclonedx-json | sbomlyze - --compliance` analisa e pontua o SBOM gerado sem um arquivo temporário. Compare-o com uma baseline para classificar o drift e controlar seu pipeline.

## Início rápido com GitHub Action

Adicione o [SBOMlyze Diff do GitHub Marketplace][marketplace] para comparar um SBOM versionado
ou gerado separadamente com sua baseline do git. O SHA imutável abaixo é
a 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
```
A Action escreve um Job Summary por padrão e pode impor política, reportar
desvio de integridade, fazer upload de SARIF ou manter um único comentário de
pull-request. Consulte
[a referência completa da Action](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) para entradas, saídas, permissões
e orientações de segurança. Consulte o
[repositório de demonstração ao vivo](https://github.com/rezmoss/sbomlyze-action-demo)
para uma atualização de dependência aprovada e uma alteração de hash na mesma
versão bloqueada, com execuções públicas de workflow e evidência SARIF.

Para dogfood específico de formato, use o exemplo público
[Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo),
[Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo) ou
[container](https://github.com/rezmoss/sbomlyze-container-demo). Cada um
contém cinco cenários de revisão reproduzíveis. O
[guia beta de 10 minutos](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) reúne quatro perguntas focadas de ativação e
qualidade de sinal.

SBOMs gerados não precisam ser commitados: `baseline: workflow-artifact`
recupera o artefato correspondente mais recente de uma execução bem-sucedida do
branch padrão. Um [workflow companheiro do Syft fixado por versão](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
mostra a geração e a publicação de baseline enquanto o SBOMlyze permanece
responsável pela revisão e política.

## Por que sbomlyze?

Muitas ferramentas geram SBOMs. Poucas os comparam, e menos ainda dizem se uma
mudança é rotineira ou um sinal de alerta na cadeia de suprimentos. O sbomlyze
preenche essa lacuna.

| Capacidade | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| **diff** SBOM-para-SBOM | ✅ | básico | ❌ | ❌ |
| Desvio de **integridade / adulteração** (hash alterado sem versão) | ✅ | ❌ | ❌ | ❌ |
| Diff do grafo de dependências + risco de profundidade transitiva | ✅ | ❌ | ❌ | ❌ |
| Pontuação de conformidade **NTIA / CISA / BSI** | ✅ | ❌ | ✅ | ❌ |
| Conversão de formato (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | parcial |
| Exploradores **TUI + Web UI** | ✅ | ❌ | ❌ | ❌ |
| Gate de política + SARIF / JUnit / Markdown / HTML / Patch | ✅ | parcial | parcial | parcial |

## Funcionalidades

- **Diff de SBOM**: Compare dois SBOMs e veja componentes adicionados, removidos e alterados rapidamente
- **Classificação de desvio**: Distinga desvio de versão de **desvio de integridade** (um hash alterado sem mudança de versão, sinalizando adulteração) e desvio de metadados
- **Pontuação de conformidade**: Pontue qualquer SBOM em relação aos elementos mínimos **NTIA**, **CISA 2025** e **BSI TR-03183**
- **Diff do grafo de dependências**: Acompanhe dependências transitivas e profundidade da cadeia de suprimentos
- **Suporte a múltiplos formatos**: Syft, CycloneDX, SPDX (JSON)
- **Conversão de formato**: Converta entre os formatos CycloneDX, SPDX e Syft
- **Correspondência de identidade robusta**: precedência PURL → CPE → BOM-ref → namespace/name
- **Modo de estatísticas**: Analise SBOMs individuais para métricas de licença, dependência e integridade
- **Modo TUI interativo**: Explore SBOMs com navegação por teclado e busca
- **Modo Web UI**: Explorador de SBOM baseado em navegador com upload por arrastar e soltar
- **Motor de políticas**: Imponha regras de desvio, licença e pontuação de conformidade em pipelines de CI
- **GitHub Marketplace Action**: Faça gate de pull requests com base em desvio de SBOM com Job Summary, SARIF e saída opcional de comentário
- **Detecção de duplicatas e colisões**: Encontre múltiplas versões do mesmo pacote e correspondências de identidade ambíguas
- **Múltiplos formatos de saída**: Texto, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Parsing tolerante**: Continue em caso de erros com avisos estruturados

## Instalação

### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
```
### Script de Instalação

O script de instalação baixa o binário correto para o seu SO/arquitetura:```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
```
**Opções do instalador:**

| Opção | Descrição |
|--------|-------------|
| `-b <dir>` | Diretório de instalação (padrão: `./bin`) |
| `-d` | Ativar saída de depuração |
| `-v <ver>` | Instalar versão específica (padrão: mais recente) |

O instalador sempre verifica o checksum da release. Quando um GitHub CLI compatível
está instalado, ele também verifica a proveniência de build da release e falha de forma segura se
essa verificação não for bem-sucedida.

### Go Install```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
```
### A partir de uma versão binária

Baixe o binário mais recente em [GitHub Releases](https://github.com/rezmoss/sbomlyze/releases).

A partir da v0.3.7, os arquivos de release são publicados com atestados de artefato do GitHub. Verifique um download de forma independente com:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz \
  --repo rezmoss/sbomlyze \
  --signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
```
Instruções para repositórios apt, rpm e apk não assinados foram removidas até que os repositórios suportem verificação de assinatura nativa do gerenciador de pacotes.

**Usuários de macOS:** Remova o sinalizador de quarentena após o download:```bash
xattr -d com.apple.quarantine ./sbomlyze
chmod +x ./sbomlyze
```
### Compilar a partir do código-fonte```bash
git clone https://github.com/rezmoss/sbomlyze.git
cd sbomlyze
go build -o sbomlyze ./cmd/sbomlyze
```
## Início 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 Estatísticas (Arquivo Único)

Analise um SBOM para obter insights sobre componentes, licenças e dependências.```bash
sbomlyze image.json
```
A saída inclui contexto do scan, descobertas principais autodetectadas e estatí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
```
#### Principais Descobertas

O sbomlyze gera automaticamente insights sobre o seu SBOM. Para análise de arquivo único, estes incluem:

| Descoberta | Descrição |
|---------|-------------|
| **Detecção de SO/distro** | Identifica o sistema operacional ou distro a partir dos metadados do SBOM |
| **Ecossistema dominante** | Informa quando um tipo de pacote domina (>60% de todos os pacotes) |
| **Pegada no sistema de arquivos** | Número de arquivos rastreados no sistema de arquivos |
| **Densidade de relacionamentos** | Contagem de relacionamentos de contenção e de dependência |
| **Pontos críticos de localização** | Principais diretórios onde os componentes são encontrados |
| **Perfil de risco de licenças** | Detalhamento das porcentagens de licenças permissivas/copyleft/desconhecidas |
| **Avisos de qualidade de dados** | Alertas quando a cobertura de licença (<50%), hash (<50%) ou PURL (<80%) é baixa |
| **Avisos de duplicatas** | Sinaliza grupos de componentes duplicados |
| **Detalhamento de catalogadores** | Principais scanners/catalogadores que detectaram componentes (SBOMs do Syft) |

#### Métricas de Cobertura

O modo de estatísticas calcula porcentagens de cobertura para avaliação da qualidade dos dados:

| Métrica | Descrição |
|--------|-------------|
| **Cobertura de PURL** | Porcentagem de componentes com Package URLs |
| **Cobertura de CPE** | Porcentagem de componentes com CPEs (prontidão para varredura de vulnerabilidades) |
| **Cobertura de licença** | Porcentagem de componentes com pelo menos uma licença |
| **Cobertura de hash** | Porcentagem de componentes com hashes de integridade |

#### Categorização de Licenças

As licenças são automaticamente categorizadas em:

| Categoria | Exemplos |
|----------|----------|
| **Copyleft** | GPL, LGPL, AGPL, MPL, EPL, CDDL |
| **Permissiva** | MIT, BSD, Apache, ISC, Zlib, Unlicense |
| **Domínio Público** | Dedicações ao Domínio Público |
| **Desconhecida** | Licenças não reconhecidas ou ausentes |

### Modo de Conversão

Converta SBOMs entre os formatos CycloneDX, SPDX e Syft JSON. O formato de entrada é detectado automaticamente.```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 Suportados

| Formato | valor de `--to` | Saída |
|--------|-------------|--------|
| CycloneDX 1.5 | `cyclonedx` ou `cdx` | CycloneDX JSON com metadados, dependências e propriedades |
| SPDX 2.3 | `spdx` | SPDX JSON com pacotes, relacionamentos e referências externas |
| Syft | `syft` | Syft JSON com artefatos, relacionamentos, origem e informações da distribuição |

#### O que é Preservado

A conversão preserva nomes de componentes, versões, PURLs, CPEs, licenças, hashes, informações do fornecedor e relacionamentos de dependência. Campos específicos do formato (por exemplo, idioma do Syft, foundBy, locations) são transportados através de propriedades do CycloneDX ao converter para CDX.

### Modo Diff (Dois Arquivos)

Compare dois SBOMs para ver o que mudou entre versões.```bash
sbomlyze v1.0.json v2.0.json
```
#### Visão Geral do Diff

O diff começa com uma comparação de metadados lado a lado (nomes de arquivos, tamanhos, informações do SO, informações da ferramenta, contagens de componentes) seguida por detalhes do contexto da varredura quando disponíveis.

#### Saída```
📊 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 ⚠️
```
#### Principais Descobertas do Diff

No modo diff, o sbomlyze gera automaticamente insights mais ricos comparando ambos os SBOMs:

| Descoberta | Descrição |
|---------|-------------|
| **Incompatibilidade de contexto de varredura** | Avisa se a versão do schema ou o escopo da varredura mudou entre os SBOMs |
| **Delta da superfície de ataque** | Alterações na contagem de pacotes, arquivos e relacionamentos com percentuais |
| **Ecossistemas desaparecidos/novos** | Tipos de pacotes que apareceram ou desapareceram completamente |
| **Migração de SO/distro** | Detecta mudanças no sistema operacional entre varreduras |
| **Análise de mudança de versão** | Conta upgrades vs downgrades, classifica mudanças como major/minor/patch |
| **Downgrades de versão** | Sinaliza downgrades como um sinal de segurança com detalhes dos componentes |
| **Contexto de desvio de integridade** | Detalha o desvio de integridade por tipo de pacote com orientação de risco |
| **Padrões de caminho dominantes** | Mudanças concentradas por tipo e caminho no sistema de arquivos |
| **Pontos críticos de remoção/adição** | Principais diretórios afetados por mudanças |
| **Tipos estáveis** | Tipos de pacotes com contagens idênticas (núcleo inalterado) |
| **Mudanças de categoria de licença** | Alterações no equilíbrio copyleft/permissiva |
| **Lacunas de catalogação** | Scanners que encontraram pacotes no Before mas nenhum no After |

#### Amostras de Pacotes por Tipo

Componentes adicionados e removidos são agrupados por tipo de pacote com listagens de amostra, facilitando a visualização do que mudou em cada ecossistema.

## Pontuação de Conformidade

Pontue qualquer SBOM em relação aos três principais frameworks de elementos mínimos para responder à pergunta que auditores e equipes de compras sempre fazem: **"Este SBOM está completo o suficiente?"**```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 Avaliados

| Framework | Verificações | Requisitos notáveis |
|-----------|--------|----------------------|
| **NTIA Minimum Elements** (2021) | 7 | nome, versão, fornecedor, IDs únicos (PURL/CPE), relações de dependência, autor do SBOM, timestamp |
| **CISA 2025 Minimum Elements** (rascunho de Ago 2025) | 10 | adiciona produtor de software, informações de licença, **hash do componente** e nome da ferramenta além do NTIA |
| **BSI TR-03183-2** (v2.1.0, 2025) | 9 | exige contato do criador do componente, **hash SHA-512**, licenças em formato SPDX e contato do criador do SBOM |

### Apresentação da Pontuação

Cada framework reporta uma porcentagem (verificações aprovadas / total de verificações) mais uma pontuação geral (média entre os frameworks), com indicadores de status:

| Indicador | Pontuação |
|-----------|-------|
| 🟢 | ≥ 90% |
| 🟡 | 70–89% |
| 🟠 | 50–69% |
| 🔴 | < 50% |

A saída JSON (`--compliance --json`) inclui o relatório completo com detalhes de aprovação/falha por verificação; o formato HTML incorpora o relatório de conformidade na página do relatório.

### Restringindo Conformidade em CI

Aplique limites de conformidade através do [policy engine](#policy-engine). Definir qualquer limite aciona a avaliação de conformidade sem a flag `--compliance`:```json
{
  "min_ntia_score": 85,
  "min_cisa_score": 70,
  "min_bsi_score": 80,
  "min_overall_compliance": 75
}
```
I'm ready to translate the Kitploit tool content from English to Portuguese. Please provide chunk 33 of 115.```bash
sbomlyze image.json --policy compliance-policy.json
```
## Diff de Grafo de Dependências

O sbomlyze vai além de simples diffs de listas de componentes para analisar o grafo de dependências completo, detetando riscos na cadeia de fornecimento introduzidos através de dependências transitivas.

### Funcionalidades

| Funcionalidade | Descrição |
|---------|-------------|
| **Diff de arestas** | Dependências diretas adicionadas/removidas (A depende de B) |
| **Alcançabilidade transitiva** | Novas dependências indiretas que aparecem através do grafo |
| **Rastreamento de perda transitiva** | Dependências transitivas que foram removidas |
| **Rastreamento de caminho** | Mostra exatamente como cada nova dependência transitiva é alcançada |
| **Rastreamento de profundidade** | Quantos saltos cada nova dependência está do seu código |
| **Resumo de risco** | Dependências de profundidade 3+ sinalizadas como de maior risco |

### Porque é que a Profundidade Importa

Dependências introduzidas mais profundamente no grafo são:
- Mais difíceis de auditar e rever
- Frequentemente incluídas sem aprovação explícita
- Vetores comuns para ataques à cadeia de fornecimento (ex.: incidente event-stream)

O resumo de profundidade ajuda a priorizar a revisão:

| Profundidade | Nível de Risco | Descrição |
|-------|------------|-------------|
| **1** | Baixo | Dependências diretas (você escolheu estas) |
| **2** | Médio | Dependências das suas dependências |
| **3+** | Alto ⚠️ | Dependências transitivas profundas - reveja cuidadosamente |

### Exemplo: Detetar Dependências Transitivas Profundas```bash
# Before: app -> express (simple, 1 dep)
# After:  app -> express -> lodash -> underscore -> deep-lib (chain of 4)

sbomlyze before.json after.json
```
I'm ready to translate the Kitploit tool content from English to Portuguese. Please provide the source text chunk you'd like me to translate.```
🔗 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 ⚠️
```
### Saída JSON para Grafo de Dependências```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
    }
  }
}
```
## Detecção de Drift

O sbomlyze classifica as alterações de componentes em três tipos de drift, ajudando você a distinguir atualizações normais de alterações potencialmente suspeitas.

### Tipos de Drift

| Tipo | Indicador | Descrição | Severidade |
|------|-----------|-------------|----------|
| **Versão** | 📦 | Número da versão alterado | Normal |
| **Integridade** | ⚠️ | Hash alterado SEM alteração de versão | Alta - investigue! |
| **Metadados** | 📝 | Apenas metadados (licenças, etc.) alterados | Baixa |

### Drift de Integridade (Sinal de Segurança)

O drift de integridade ocorre quando o hash de um componente muda, mas sua versão permanece a mesma. Isso pode indicar:

- **Ataque à cadeia de suprimentos**: O pacote foi substituído por uma versão maliciosa
- **Recompilação sem incremento de versão**: Legítimo, mas má prática
- **Ambiente de compilação diferente**: Problemas de reprodutibilidade```bash
# Example output with integrity drift
~ suspicious-pkg ⚠️  [INTEGRITY]
    hash[SHA256]: abc123 -> def456
```
**Recomendação**: Sempre investigue a deriva de integridade. Pode ser benigna, mas é um sinal fundamental para a segurança da cadeia de suprimentos.

### Saída JSON para Deriva

O resumo da deriva está dentro do 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
    }
  }
}
```
**Extraindo resumo 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'
```
## Detecção de Duplicatas e Colisões

### Detecção de Duplicatas

sbomlyze identifica componentes com a mesma identidade, mas versões diferentes dentro de um SBOM:```
⚠️  Duplicates Found: 2
  lodash: [4.17.20, 4.17.21]
  express: [4.18.0, 4.19.2]
```
No modo diff, a comparação de versões duplicadas rastreia:
- **Novas duplicatas**: Componentes que se tornaram duplicados no novo SBOM
- **Duplicatas resolvidas**: Grupos de duplicatas que foram consolidados
- **Adições/remoções de versões**: Alterações de versão dentro de grupos de duplicatas existentes

### Detecção de Colisões

Colisões são correspondências de identidade ambíguas onde componentes compartilham o mesmo ID mas têm características conflitantes:

| Tipo | Descrição |
|------|-------------|
| **Incompatibilidade de nome** | Nomes de componentes diferentes mapeados para o mesmo ID de identidade |
| **Incompatibilidade de hash** | A mesma versão de um componente tem hashes diferentes (potencial adulteração) |

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

### Atalhos de Teclado da TUI

#### Navegação

| Tecla | Ação |
|-----|--------|
| `↑` / `k` | Mover para cima |
| `↓` / `j` | Mover para baixo |
| `PgUp` / `Ctrl+u` | Meia página para cima |
| `PgDn` / `Ctrl+d` | Meia página para baixo |
| `Home` / `g` | Ir para o topo |
| `End` / `G` | Ir para o fim |
| `Enter` | Ver detalhes do componente |
| `Esc` / `Backspace` | Voltar |
| `q` / `Ctrl+c` | Sair |

#### Pesquisa e Filtro

| Tecla | Ação |
|-----|--------|
| `/` | Pesquisa profunda em todos os campos (nome, PURL, licenças, JSON bruto) |
| `t` | Filtrar por tipo de pacote (npm, apk, golang, pypi, etc.) |
| `c` | Limpar todos os filtros ativos |

#### Vistas

| Tecla | Contexto | Ação |
|-----|---------|--------|
| `j` | Vista de detalhes | Ver JSON bruto do componente com realce de sintaxe |
| `d` | Vista JSON | Voltar à vista de detalhes |
| `Enter` | Vista JSON | Exportar JSON do componente para ficheiro |
| `?` | Qualquer vista | Mostrar ajuda com todos os atalhos de teclado |

### Vista de Detalhes do Componente

A vista de detalhes mostra informações abrangentes do componente:
- Informações do pacote (nome, versão, PURL, namespace, fornecedor)
- Licenças com indicadores visuais
- Hashes de integridade
- CPEs (Common Platform Enumeration)
- Lista de dependências
- Identificadores (ID, BOM-ref, SPDX-ID)

## Modo Web UI

Inicie um explorador de SBOM baseado em navegador com carregamento de ficheiros por arrastar e largar:```bash
# Start web server on default port 8080
sbomlyze -web

# Start on custom port
sbomlyze -web --port 3000
```
Em seguida, abra http://localhost:8080 no seu 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" />



### Recursos da Interface Web

| Recurso | Descrição |
|---------|-------------|
| **Upload por Arrastar e Soltar** | Solte qualquer arquivo SBOM (Syft, CycloneDX, SPDX) na página (até 500MB) |
| **Árvore de Dependências** | Visualização em árvore interativa com navegação de expandir/recolher (paginada para >5000 componentes) |
| **Detalhes do Componente** | Visualize licenças, hashes, dependências, informações do fornecedor, contagem de arquivos |
| **Visualização de JSON Bruto** | JSON com destaque de sintaxe para cada componente |
| **Busca Profunda** | Pesquise em todos os campos, incluindo dados de JSON bruto |
| **Painel de Estatísticas** | Métricas de cobertura, categorias de licença, distribuição de linguagens |
| **Navegador de Sistema de Arquivos** | Navegue pelos arquivos dentro do SBOM com navegação por diretórios, busca e filtragem por camada |

### Estatísticas Exibidas

A interface web exibe estatísticas abrangentes, incluindo:

- **Contagens de componentes** por tipo de pacote (npm, apk, pypi, etc.)
- **Distribuição de licenças** com detalhamento por categoria (copyleft, permissiva, domínio público)
- **Métricas de cobertura** com barras de progresso visuais:
  - Cobertura de PURL (presença de URL do pacote)
  - Cobertura de CPE (prontidão para varredura de vulnerabilidades)
  - Cobertura de licenças
  - Cobertura de hash/integridade
- **Detalhamento de linguagens** (para SBOMs gerados pelo Syft)
- **Estatísticas de relacionamento** (contains, dependency-of, evident-by)
- **Avisos de detecção de duplicatas**

### Casos de Uso

**Revisão de Segurança**
- Faça upload de um SBOM e explore a árvore de dependências completa
- Verifique a cobertura de CPE para garantir que a varredura de vulnerabilidades funcione
- Revise componentes sem licenças ou hashes

**Auditoria de Conformidade**
- Pesquise por licenças específicas em todos os componentes
- Visualize a distribuição de categorias de licença (copyleft vs permissiva)
- Exporte o JSON bruto para documentação

**Depuração de Desenvolvimento**
- Explore quais pacotes estão incluídos na sua imagem
- Verifique dependências transitivas
- Confirme se os metadados do pacote estão corretos

### Navegador de Sistema de Arquivos

A interface web inclui um navegador de sistema de arquivos completo para explorar arquivos dentro de SBOMs (particularmente útil para SBOMs gerados pelo Syft com metadados de arquivos):

- **Navegação em árvore de diretórios** com trilha de navegação
- **Busca de arquivos** com suporte a substrings e padrões glob (ex.: `*.so`, `/usr/lib/**/*.conf`)
- **Filtragem por camada** para SBOMs de imagens de contêiner (navegue pelos arquivos por camada da imagem)
- **Relacionamentos componente-arquivo** (qual componente possui quais arquivos)
- **Estatísticas de arquivos** por tipo, tipo MIME, extensão e camada
- **Detecção de arquivos sem proprietário** (arquivos não associados a nenhum componente)

## Opções

### `-i` (Modo Interativo)

Inicie o explorador TUI baseado em terminal para navegar por SBOMs com controles de teclado.```bash
sbomlyze image.json -i
```
Recursos: navegação em árvore, detalhes de componentes, pesquisa, inspeção de licença/hash.

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

Inicie um servidor web para exploração de SBOM baseada em navegador.```bash
# Default port 8080
sbomlyze -web

# Custom port
sbomlyze -web --port 3000
```
A interface web fornece upload por arrastar e soltar, visualização em árvore interativa, pesquisa profunda e painel de estatísticas.

### `--compliance`

Pontua o SBOM em relação aos frameworks de elementos mínimos NTIA, CISA 2025 e BSI TR-03183. Consulte [Pontuação de Conformidade](#compliance-scoring).```bash
sbomlyze image.json --compliance
sbomlyze image.json --compliance --json
```
### `--format` / `-f`

Selecione o formato de saída. Sete formatos estão disponíveis:

| Formato | Flag | Descrição | Melhor Para |
|--------|------|-------------|----------|
| **text** | `--format text` (padrão) | Saída de terminal legível por humanos | Inspeção local |
| **json** | `--json` ou `--format json` | JSON estruturado | Pipelines de CI, scripting |
| **sarif** | `--format sarif` | SARIF 2.1.0 para GitHub Code Scanning | Integração com GitHub |
| **junit** | `--format junit` | Resultados de testes em XML JUnit | Dashboards de testes de CI
```

---

[Read more](https://github.com/rezmoss/sbomlyze)
Baixar ferramenta