Skip to main content

Avançando os padrões de SBOM: Snyk e SPDX

Escrito por
blog design Securing modern software supply chain

16 de junho de 2021

0 minutos de leitura

Muitas pessoas já devem conhecer o projeto SPDX por meio do trabalho na lista de licenças SPDX. Essa lista de identificadores canônicos para várias licenças de software é usada em uma ampla variedade de softwares voltados para desenvolvedores, da Snyk ao GitHub. Mas o projeto SPDX, que faz parte da Linux Foundation, tem um foco muito mais amplo: fornecer um padrão aberto para comunicar informações sobre a lista de materiais de software.

Uma lista de materiais de software, ou SBOM, reúne os componentes de um determinado software. Uma analogia comum é a lista de ingredientes nas embalagens de alimentos. Os softwares estão cada vez mais complexos e são compostos por um número crescente de componentes. Isso não se limita a bibliotecas e frameworks de código aberto: um aplicativo moderno pode consistir em vários serviços, cada um com sua própria SBOM, agrupados com ferramentas que podem trazer ainda mais dependências.

O SPDX busca padronizar a definição de SBOM e oferecer um formato legível por máquinas em torno do qual todo o setor de software possa criar ferramentas para resolver inúmeros problemas da cadeia de suprimentos.

Isso é cada vez mais útil para enfrentar os desafios atuais de segurança de software. No mês passado, o presidente dos EUA, Joe Biden, emitiu uma ordem executiva sobre o aprimoramento da cibersegurança do país, que menciona explicitamente a adoção de SBOMs e a formalização de padrões para SBOMs como um objetivo. Você pode ler mais sobre nossa opinião a respeito da ordem executiva no nosso blog sobre requisitos de segurança da cadeia de suprimentos de software.

A Snyk e as SBOMs

Os arquivos de manifesto usados pelos gerenciadores de pacotes contêm listas de softwares, mas em geral não são considerados SBOMs. Eles têm um foco mais restrito em um caso de uso específico e contêm apenas as informações necessárias para instalar os softwares listados.

A Snyk se integra a uma ampla variedade de gerenciadores de pacotes e ferramentas para desenvolvedores para ajudar a identificar vulnerabilidades nos componentes de software usados. Para isso, precisamos criar uma SBOM nos bastidores, normalizando a lista de softwares e enriquecendo-a com metadados adicionais de outras fontes. As ferramentas da Snyk se concentram principalmente em apresentar essas informações junto com dados sobre vulnerabilidades, mas os clientes da Snyk podem acessar a SBOM bruta por meio dos relatórios integrados ou da API avançada.

Na prática, você pode pensar nas ferramentas cliente da Snyk, como a CLI e os plugins de CI/CD, como geradoras de uma SBOM, enquanto o back-end da Snyk recebe uma SBOM e retorna dados de vulnerabilidades ou oferece automações para ajudar você a corrigir problemas. Foi essa ampla experiência que despertou nosso interesse pelos padrões emergentes nessa área.

A Snyk e o SPDX

Embora o SPDX exista há vários anos como padrão de SBOM, o trabalho recente na especificação preliminar da versão 3.0 é bastante promissor. Temos acompanhado de perto a proposta preliminar de um perfil de vulnerabilidades para o SPDX, que permite adicionar dados de vulnerabilidades — às vezes chamados, no contexto das SBOMs, de VEX, ou explorabilidade de vulnerabilidades — às informações sobre os componentes de software.

Para ajudar a validar o trabalho na especificação, criamos uma ferramenta simples chamada snyk2spdx. A snyk2spdx tem um único propósito: consumir os dados subjacentes dos testes da Snyk (que incluem as informações da SBOM) e gerar uma saída no formato SPDX v3.0, incluindo o perfil de vulnerabilidades. Veja abaixo um exemplo simples da saída.

$ snyk test --json | npx snyk2spdx | jq
{
  "id": "SPDXRef-todo-list",
  "name": "todo-list",
  "specVersion": "SPDX-3.0",
  "profile": [
    "base",
    "vulnerabilities"
  ],
  "dataLicense": "CC0-1.0",
  "creator": "Organization: Snyk Ltd",
  "documentNamespace": "spdx.org/spdxdocs/todo-list-2bd968c5-d497-41ec-83d7-5ee652720c53",
  "description": "Snyk test result for project todo-list in SPDX SBOM format",
  "created": "2021-05-05T16:20:28Z",
  "vulnerabilities": [

Este é apenas o cabeçalho. Para quem tiver interesse especial no formato, aqui está um link para a saída completa da SBOM.

Criamos essa ferramenta para fazer experimentos e dar feedback sobre a especificação preliminar atual. O SPDX v3.0 ainda está em evolução e ainda não conta com amplo suporte de ferramentas nem esquemas publicados. Sem dúvida, isso virá com o tempo. Quando acontecer, provavelmente vamos incorporar esse tipo de funcionalidade à CLI principal da Snyk e disponibilizar o SPDX em outras partes da Snyk, tanto para leitura quanto para geração.

Se você tem interesse em SBOMs em geral e em VEX em particular, a snyk2spdx pode ajudar você a começar a experimentar. Talvez você até decida contribuir para o trabalho na especificação ou para o esforço mais amplo de divulgar e desenvolver ferramentas em torno dela.

O futuro

À medida que o SPDX recebe mais atenção, a Snyk trabalha em estreita colaboração com a Linux Foundation para aprimorar o padrão e expandir o ecossistema de ferramentas. Esta recente publicação no blog da Linux Foundation resume por que e como a comunidade de código aberto identificou, há mais de uma década, a necessidade de enfrentar o desafio das SBOMs.

Padrões criados no momento e no contexto certos têm o potencial de impulsionar setores inteiros. A ordem executiva de Biden deixa claro que as SBOMs têm um papel fundamental no enfrentamento de desafios mais amplos de segurança da cadeia de suprimentos de software. Na Snyk, esperamos continuar contribuindo para os esforços nessa área.