
sbomlyze v0.3.5
git diff para sua SBOM ,compare listas de materiais CycloneDX/SPDX/Syft, detecte adulteração, e controle a CI
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]
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.
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 - --complianceanalisa 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.
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.
