O que é SBOM

SBOM (Software Bill of Materials) é um inventário formal e estruturado de todos os componentes que compõem uma aplicação de software. Assim como uma lista de ingredientes em um produto alimentício, o SBOM lista todas as bibliotecas, frameworks, e dependências utilizadas, incluindo suas versões e origens.

90%
do código em aplicações modernas vem de componentes open source (Synopsys)

O conceito ganhou relevância após incidentes como Log4Shell (Log4j), onde organizações levaram dias ou semanas para identificar quais de suas aplicações usavam a biblioteca vulnerável. Com SBOM, essa resposta pode ser instantânea.

Analogia

SBOM é como a lista de ingredientes de um produto alimentício. Se há um recall de um ingrediente (vulnerabilidade), você precisa saber rapidamente quais produtos o contém. Sem essa lista, você teria que analisar cada produto individualmente.

Elementos de um SBOM

  • Nome do componente: Ex: log4j-core
  • Versão: Ex: 2.14.1
  • Fornecedor/Autor: Ex: Apache Software Foundation
  • Identificador único: Ex: CPE, PURL, SWID
  • Relação de dependência: Dependência direta ou transitiva
  • Hash/Checksum: Para verificação de integridade
  • Licença: Ex: Apache 2.0, MIT, GPL

Por que SBOM é Importante

O problema Log4Shell

Em dezembro de 2021, uma vulnerabilidade crítica foi descoberta no Log4j (CVE-2021-44228). A biblioteca é usada em milhões de aplicações Java. Organizações enfrentaram perguntas críticas:

  • Quais de nossas aplicações usam Log4j?
  • Qual versão?
  • É uma dependência direta ou transitiva?
  • Quais vendors que usamos são afetados?

Sem SBOM, responder essas perguntas requer análise manual de cada aplicação - processo que levou semanas para muitas empresas enquanto a vulnerabilidade estava sendo ativamente explorada.

Regulamentações e compliance

  • Executive Order 14028 (EUA): Fornecedores do governo federal devem fornecer SBOM
  • EU Cyber Resilience Act: Exige SBOM para produtos com elementos digitais
  • FDA: Recomenda SBOM para dispositivos médicos
  • NIST SP 800-218: Guidelines para secure software development incluem SBOM

Benefícios operacionais

  • Resposta a vulnerabilidades: Identificar rapidamente aplicações afetadas
  • Gestão de licenças: Garantir compliance com licenças open source
  • Due diligence em M&A: Avaliar risco de software em aquisições
  • Transparência para clientes: Fornecer visibilidade da composição do software
  • Auditoria e compliance: Demonstrar controle sobre supply chain de software

Formatos: CycloneDX vs SPDX

Aspecto CycloneDX SPDX
Origem OWASP Linux Foundation
Foco Segurança Licenciamento
Padrão ECMA-424 ISO/IEC 5962:2021
Formatos JSON, XML, Protobuf JSON, XML, RDF, Tag-Value
VEX suporte Nativo Via extensão
Vulnerabilidades Suporte nativo Limitado
Adoção Segurança, DevSecOps Legal, Compliance

Exemplo CycloneDX (JSON)

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "components": [
    {
      "type": "library",
      "name": "log4j-core",
      "version": "2.17.1",
      "purl": "pkg:maven/org.apache.logging.log4j/[email protected]",
      "licenses": [{"license": {"id": "Apache-2.0"}}],
      "hashes": [{"alg": "SHA-256", "content": "abc123..."}]
    }
  ]
}

Qual escolher?

  • Use CycloneDX se: Foco em segurança, integração com ferramentas de segurança, precisa de VEX
  • Use SPDX se: Foco em compliance de licenças, requisito de cliente específico, padrão ISO necessário
  • Na prática: Muitas ferramentas suportam ambos; CycloneDX é mais comum em contextos de segurança

Como Gerar SBOM

Ferramentas por ecosistema

Multi-linguagem

  • Syft (Anchore): Gera SBOM de containers, filesystems, código fonte
  • Trivy (Aqua): Scanner de vulnerabilidades que também gera SBOM
  • cdxgen: Suporta múltiplas linguagens, focado em CycloneDX
  • Microsoft SBOM Tool: Ferramenta oficial da Microsoft

Java/Maven

mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom

Node.js/npm

npx @cyclonedx/cyclonedx-npm --output-file sbom.json

Python/pip

pip install cyclonedx-bom
cyclonedx-py --format json -o sbom.json

Containers

# Usando Syft
syft myimage:latest -o cyclonedx-json > sbom.json

# Usando Trivy
trivy image --format cyclonedx myimage:latest > sbom.json

Integração em CI/CD

# GitHub Actions exemplo
- name: Generate SBOM
  uses: anchore/sbom-action@v0
  with:
    image: ${{ env.IMAGE }}
    format: cyclonedx-json
    output-file: sbom.json

- name: Scan SBOM for vulnerabilities
  uses: anchore/scan-action@v3
  with:
    sbom: sbom.json
    fail-build: true
    severity-cutoff: high

Gestão e Consumo de SBOM

Armazenamento

  • Junto com artefato: SBOM armazenado no registry junto com a imagem/pacote
  • Repositório centralizado: Sistema dedicado para gestão de SBOMs
  • Assinatura: SBOM assinado para garantir integridade (Sigstore, in-toto)

Plataformas de gestão

  • Dependency-Track (OWASP): Open source, ingere SBOMs e monitora vulnerabilidades
  • GUAC (Google): Graph for Understanding Artifact Composition
  • Snyk: SCA comercial com suporte a SBOM
  • Sonatype Nexus: Lifecycle management com SBOM
  • JFrog Xray: Análise de composição integrada ao Artifactory

Workflow típico

  1. Build time: SBOM gerado automaticamente no pipeline
  2. Storage: SBOM armazenado junto ao artefato ou em repositório central
  3. Continuous monitoring: Plataforma monitora novas vulnerabilidades
  4. Alerting: Time notificado quando componente no SBOM tem CVE nova
  5. Response: SBOM permite identificar rapidamente aplicações afetadas

VEX e Contextualização

VEX (Vulnerability Exploitability eXchange) complementa o SBOM fornecendo contexto sobre se vulnerabilidades em componentes realmente afetam a aplicação específica.

O problema

Um componente pode ter uma vulnerabilidade, mas ela pode não ser exploravel no contexto da sua aplicação. Exemplo: vulnerabilidade em função de parsing XML do Log4j, mas sua aplicação nunca usa XML com Log4j.

Status VEX

  • Not Affected: Vulnerabilidade não afeta este produto
  • Affected: Vulnerabilidade afeta e requer ação
  • Fixed: Vulnerabilidade foi corrigida nesta versão
  • Under Investigation: Ainda avaliando impacto

VEX reduz ruído

Sem VEX, todo CVE em qualquer componente gera alerta. Com VEX, você documenta que certas vulnerabilidades não são aplicáveis ao seu contexto, reduzindo drasticamente falsos positivos e permitindo foco no que realmente importa.

Implementação Prática

Fase 1: Piloto (1-2 meses)

  • Selecionar 2-3 aplicações críticas para piloto
  • Implementar geração de SBOM no pipeline
  • Escolher formato (recomendado: CycloneDX para segurança)
  • Validar qualidade do SBOM gerado

Fase 2: Expansão (2-4 meses)

  • Implementar Dependency-Track ou similar para gestão
  • Expandir geração de SBOM para mais aplicações
  • Integrar alertas de vulnerabilidade com workflow existente
  • Definir processo para triagem de alertas

Fase 3: Maturidade (6+ meses)

  • SBOM obrigatório para todas as aplicações em produção
  • VEX para contextualizar vulnerabilidades
  • SBOMs de vendors/terceiros coletados e analisados
  • Métricas de cobertura e tempo de resposta

Desafios comuns

  • Dependencias transitivas: Garantir que SBOM capture toda a árvore de dependências
  • Containers base: Incluir componentes do sistema operacional base
  • Linguagens compiladas: Go, Rust podem ser mais difíceis de analisar
  • Atualização: SBOM deve ser regenerado a cada build

Perguntas Frequentes

O que é SBOM?

SBOM (Software Bill of Materials) é um inventário completo de todos os componentes de software que compõem uma aplicação, incluindo bibliotecas open source, frameworks, e suas versões. É como uma "lista de ingredientes" do software, permitindo identificar rapidamente se a aplicação é afetada por vulnerabilidades em dependências.

Por que SBOM é importante?

SBOM tornou-se essencial após incidentes como Log4Shell, onde organizações levaram semanas para identificar quais aplicações usavam Log4j. Com SBOM, você pode responder instantâneamente "onde usamos este componente vulnerável?" Além disso, regulamentações como Executive Order 14028 dos EUA exigem SBOM para fornecedores do governo.

Quais formatos de SBOM existem?

Os dois principais formatos são: CycloneDX (desenvolvido pela OWASP, focado em segurança, suporta VEX) e SPDX (padrão ISO, desenvolvido pela Linux Foundation, focado em licenciamento). Ambos suportam JSON e XML. CycloneDX é mais comum em contextos de segurança; SPDX em compliance de licenças.

Como começar com SBOM?

Comece com ferramentas automatizadas no CI/CD: Syft ou Trivy para containers, plugins específicos para linguagens (cyclonedx-maven-plugin, cyclonedx-npm). Armazene SBOMs junto aos artefatos e implemente Dependency-Track para gestão centralizada e monitoramento de vulnerabilidades.

Conclusão

SBOM evoluiu de nice-to-have para requisito essencial de segurança de software. A complexidade das aplicações modernas, com centenas de dependências transitivas, torna impossível gerenciar riscos de supply chain sem visibilidade automatizada da composição do software.

A boa notícia é que ferramentas maduras existem para gerar e gerenciar SBOMs automaticamente. O investimento em implementar SBOM paga-se rapidamente na primeira vez que você precisa responder "somos afetados por esta vulnerabilidade?" em minutos em vez de dias.

Implemente SBOM na sua Organização

Precisa de ajuda para implementar SBOM no seu pipeline de desenvolvimento ou avaliar sua postura de supply chain security? Entre em contato para uma consultoria especializada.

Falar com Especialista