Visão geral
O serviço de SBOM do ZeroPath gera documentos CycloneDX, SPDX, VEX e ML-BOM prontos para exportação, diretamente a partir dos inventários de SCA e de IA que seus scans já produziram. Um SBOM construído a partir do inventário de SCA reutiliza o mesmo grafo de dependências normalizado que alimenta os alertas, de modo que o artefato corresponde ao que você vê na interface. O mesmo inventário alimenta a cobertura de dependências e os dados de licença por pacote, então um SBOM é apenas tão completo quanto o scan por trás dele. O fallback de snapshot pré-scan descrito abaixo usa um scanner de componentes padrão e pode divergir, e não se aplica aos formatos VEX ou ML-BOM — veja Fontes de Dados.1
Solicitação
Aceita uma solicitação vinculada a um scan. Você pode opcionalmente especificar um scan de SCA para dados de inventário mais ricos, mas isso não é obrigatório — SBOMs podem ser gerados a partir de qualquer scan de código concluído.
2
Processamento
O job é enfileirado e processado de forma assíncrona; consulte seu status ou receba um webhook quando ele terminar.
3
Construção
O SBOM é construído a partir da fonte de dados escolhida (preferencialmente o inventário de SCA).
4
Upload
Faz upload do artefato JSON para armazenamento de objetos gerenciado e retorna uma URL de download pré-assinada.
5
Acompanhamento
Rastreia status, contagem de tentativas e expiração, para que você possa consultar ou receber atualizações por webhook.
Fluxo de Solicitação
1
Envio
Escolha o scan, o formato desejado (CycloneDX JSON, SPDX JSON, VEX independente ou ML-BOM) e, para CycloneDX JSON, se deve incluir dados de VEX incorporados. Jobs podem ser criados pela interface ou pela API.
2
Processamento
O ZeroPath processa o job, hidrata o inventário de dependências e gera o artefato. Novas tentativas automáticas lidam com quaisquer interrupções.
3
Armazenamento
SBOMs finalizados são enviados ao bucket de artefatos do ZeroPath com uma política de retenção por tempo limitado (24 horas por padrão, configurável por tenant).
4
Obtenção
A API retorna uma URL assinada; webhooks opcionais são disparados quando o job transiciona para
Succeeded ou Failed.Formatos e Suporte a VEX
- CycloneDX JSON
- SPDX JSON
- VEX incorporado
- VEX independente
- ML-BOM
Ideal para ferramentas que esperam grafos de componentes, relações de dependência e VEX incorporado. Quando o VEX é solicitado, cada vulnerabilidade carrega um
analysis.state do CycloneDX: not_affected quando o caminho de código vulnerável não é alcançável, exploitable quando é alcançável e confirmado, ou in_triage quando é alcançável mas ainda não validado. O ZeroPath também inclui referências de CWE, uma classificação CVSS quando o advisory carrega dados reais de CVSS, e inteligência de exploits KEV/EPSS como propriedades no namespace zeropath:.Quando o scan tem dados de Inventário de IA, esta exportação é automaticamente enriquecida com os componentes de IA/ML que o ZeroPath detectou — nenhuma solicitação separada é necessária. Veja Conteúdo dos Artefatos para o que isso adiciona.Fontes de Dados
- Preferencial: inventário de SCA
- Alternativa: snapshot do repositório
- Usa o inventário canônico construído pelo serviço de SCA do ZeroPath, então inclui a classificação direta/transitiva, dados de licença, atribuição a aplicações e contexto de vulnerabilidades previamente validado.
- SBOMs gerados a partir do inventário são consistentes: o conjunto de pacotes, a ordenação e as arestas de dependência correspondem exatamente à interface e aos alertas. Identificadores em nível de documento, como o número serial e o timestamp do CycloneDX, são únicos por geração.
- Dados de VEX estão disponíveis porque o inventário sabe quais pacotes são alcançáveis, não alcançáveis ou ainda em triagem.
Conteúdo dos Artefatos
Toda exportação CycloneDX JSON e SPDX JSON inclui:- Metadados do repositório (nome, SHA do commit, timestamp do scan).
- Uma entrada por caminho de manifesto (package-lock.json, requirements.txt, go.mod, pom.xml, Podfile, etc.).
- Ecossistemas normalizados e Package URLs (PURL) para cada dependência.
- Anotações de direta vs transitiva, além de um resumo do caminho de dependência, para que as equipes saibam como um pacote entrou no build. Dependências transitivas do Maven agora incluem cadeias completas de caminho de dependência pai-filho.
- Informações de licença por pacote, obtidas de campos do manifesto e metadados externos. Esses campos são informativos, não aconselhamento jurídico.
- Relações de dependência (
dependenciesdo CycloneDX,relationshipsdo SPDX). - Blocos de VEX opcionais (incorporados, via a opção de VEX do CycloneDX JSON) exibindo o status atual, IDs de vulnerabilidade do ZeroPath, classificações CVSS/EPSS, CWEs e dicas de correção. O VEX independente carrega as mesmas entradas de vulnerabilidade, sem o grafo de componentes.
zeropath:ai:* (tipo, uso, tier, provedor, formato do modelo, fonte de detecção, caminho do manifesto/arquivo e alcançabilidade — cada uma presente apenas quando conhecida), e sinais de IA derivados de arquivos sem identidade de pacote — arquivos de modelo, configurações de agentes — aparecem como componentes adicionais. O SPDX não é enriquecido dessa forma; use ML-BOM para um inventário de IA/ML dedicado, por repositório.
Propriedades de inteligência de vulnerabilidades
KEV e EPSS — veja Inteligência de exploits: KEV e EPSS para o significado desses sinais — aparecem em cada entrada de vulnerabilidade do CycloneDX (VEX incorporado ou independente) como propriedades no namespacezeropath::
Uma propriedade é incluída apenas quando o ZeroPath realmente conhece o valor: a ausência significa desconhecido, nunca um “não explorado” fabricado ou uma pontuação zero.
O EPSS adicionalmente aparece como uma classificação do CycloneDX ao lado de qualquer classificação CVSS, para que ferramentas que leem apenas
ratings[] também o vejam:
Armazenamento e Acesso
- SBOMs são armazenados em armazenamento de objetos gerenciado pelo ZeroPath, com uma política de expiração automática (24 horas por padrão; pode ser estendida para tenants enterprise).
- Os links de download são URLs pré-assinadas que carregam a mesma expiração. Copie o artefato para o seu próprio armazenamento se precisar de retenção mais longa.
- Cada job registra organização, repositório, solicitante, formato e expiração, para que você sempre saiba quem gerou qual SBOM.
Guia de Adoção
1
Execute ao menos um scan de SCA
Isso desbloqueia SBOMs baseados em inventário e exportações de VEX. Scans agendados mantêm o inventário atualizado.
2
Envie solicitações de SBOM por release
Dispare um job sempre que você cortar um branch de release, tag ou artefato que precise de proveniência.
3
Escolha o formato certo
Use CycloneDX JSON (com VEX incorporado ou independente) para fluxos de engenharia/segurança, SPDX para stakeholders de procurement/jurídico, e ML-BOM quando precisar de um inventário de IA/ML por repositório de forma isolada.
4
Integre a entrega
Conecte as URLs pré-assinadas a aprovações de CI/CD, registries de artefatos ou tickets de auditoria, para que os revisores obtenham o documento automaticamente.
5
Espelhe artefatos de longa duração
Se a política exigir retenção de vários anos, copie o SBOM para o seu próprio armazenamento antes que o link expire.
Dicas de Solução de Problemas
"VEX requires SCA inventory"
"VEX requires SCA inventory"
Aplica-se tanto ao VEX incorporado (a opção do CycloneDX JSON) quanto ao formato VEX independente. Execute o job novamente com um scan de SCA concluído selecionado, ou desabilite o VEX para exportações baseadas em snapshot.
"ML-BOM export requires a code scan"
"ML-BOM export requires a code scan"
Exibido quando um repositório só executou scans de SCA independentes e nunca um scan completo/de código. O Inventário de IA está ancorado a um scan de código, então execute um scan completo para o repositório e tente exportar novamente.
"Repository snapshot failed"
"Repository snapshot failed"
Geralmente causado por credenciais de SCM ausentes ou por um branch/tag excluído. Execute novamente após corrigir o acesso ou aponte para outro commit.
Lista de dependências incompleta
Lista de dependências incompleta
Verifique se o scan de SCA mais recente terminou com sucesso e se os manifestos foram incluídos (exibido na aba de SCA). SBOMs espelham o que quer que o scan tenha capturado.
Jobs presos em Pending ou Processing
Jobs presos em Pending ou Processing
Jobs de SBOM agora atualizam seu status automaticamente quando a geração conclui ou falha, mesmo que você feche o navegador ou saia da página antes de o resultado aparecer. Se um job ainda aparecer como pendente após dez minutos, verifique se os workers de SBOM estão em execução para o seu workspace e contate o suporte se persistir.
Geração falhou com uma mensagem de erro
Geração falhou com uma mensagem de erro
Jobs de SBOM reportam um motivo de falha específico. Categorias comuns de falha incluem:
- Artifact download failed — o SBOM gerado não pôde ser recuperado do armazenamento. Isso geralmente é transitório; tente o job novamente.
- Artifact missing — a geração foi concluída, mas nenhum arquivo baixável foi produzido. Execute novamente com um scan que tenha dados de inventário.
- Generation failed — ocorreu um erro durante a montagem do SBOM. A mensagem de erro incluirá detalhes do pipeline de processamento.
- Timeout — o job não terminou dentro da janela permitida. Isso pode acontecer com repositórios muito grandes; contate o suporte se persistir.