Skip to main content

Criando SBOMs com a Snyk CLI

Escrito por
feature snyk platform learn using snyk with CI CD

5 de fevereiro de 2025

0 minutos de leitura

A lista de materiais de software (SBOM) está se tornando rapidamente um elemento essencial da segurança e da conformidade de código aberto. Neste artigo, vamos explorar o que são SBOMs, por que são necessários e qual é o papel deles na segurança de código aberto.

O que são SBOMs?

Uma lista de materiais de software (SBOM) é um inventário abrangente de todos os componentes usados em um produto de software. Ela inclui todos os detalhes necessários sobre cada componente, como nome, versão e informações sobre licenças. As SBOMs podem ser comparadas à lista de ingredientes de um software, oferecendo transparência completa sobre o que compõe um produto de software.

Considere um projeto simples em Python com várias dependências. Um exemplo simplificado de SBOM para esse projeto poderia ser assim:

[
    {
        "component_name": "numpy",
        "version": "1.21.0",
        "license": "BSD"
    },
    {
        "component_name": "pandas",
        "version": "1.3.0",
        "license": "BSD"
    }
]

Aviso:

O código acima é um exemplo simplificado de um possível SBOM. Este exemplo serve apenas para fins ilustrativos e não funcionará na análise, pois está incompleto.


Por que precisamos de SBOMs?

As SBOMs têm um papel fundamental para entendermos a composição do nosso software. No desenvolvimento de código aberto, porém, elas são ainda mais importantes. Os componentes de código aberto costumam ter suas próprias dependências, formando uma complexa rede de componentes interconectados. As SBOMs ajudam a desvendar essa rede e permitem entender toda a nossa exposição a possíveis riscos de segurança ou problemas de conformidade decorrentes de dependências de terceiros nos aplicativos.

É fundamental entregar uma SBOM junto com o artefato criado, pois ela permite que qualquer pessoa que use o software avalie o status de segurança do projeto. Se uma vulnerabilidade grave em um pacote específico de código aberto for divulgada, como aconteceu com Log4Shell e Spring4Shell, todos os consumidores dos componentes vulneráveis poderão determinar se essa vulnerabilidade os afeta.

As SBOMs são um complemento valioso para qualquer software e devem ser fornecidas a cada lançamento. Elas oferecem transparência, reforçam a segurança e a conformidade e contribuem para um software de maior qualidade.

Criando SBOMs com a Snyk CLI

A interface de linha de comando (CLI) da Snyk é uma ferramenta de segurança de código aberto que ajuda desenvolvedores e profissionais de DevOps a encontrar, corrigir e monitorar vulnerabilidades conhecidas em dependências de código aberto. A Snyk CLI oferece suporte a diversas linguagens de programação e gerenciadores de pacotes, incluindo JavaScript (npm, yarn), Python (pip), Java (Maven), .NET (NuGet), Ruby (RubyGems), PHP (Composer) e outros. Você pode usar a Snyk CLI localmente ou em um pipeline para fazer análises SAST, SCA, de contêineres e de IaC em um projeto de software.

E agora ela também pode criar SBOMs para os seus projetos.

Instalando a Snyk CLI

Para começar a usar a Snyk CLI, você precisa instalá-la no seu ambiente de desenvolvimento. Abaixo, veja um guia simples para instalar a Snyk CLI usando npm. Para saber mais ou conhecer outras formas de instalar a Snyk CLI, consulte nossa documentação do usuário.

npm install -g snyk

Depois de instalar a Snyk CLI, autentique sua conta usando o comando snyk auth. Uma janela do navegador será aberta para você entrar ou criar uma conta na Snyk.

snyk auth

Outra opção é definir seu token da Snyk como uma variável de ambiente. Essa é a forma recomendada de usar a CLI em um pipeline de CI/CD. Para saber mais, consulte nosso prático guia rápido da CLI ou a documentação oficial.

Gerando SBOMs com a Snyk CLI

Quando a CLI estiver funcionando e conectada a uma conta empresarial da Snyk, você poderá começar a criar SBOMs para seus projetos de software com o seguinte comando:

snyk sbom --format=<cyclonedx1.4+json|cyclonedx1.4+xml|cyclonedx1.5+json|cyclonedx1.5+xml|cyclonedx1.6+json|cyclonedx1.6+xml|spdx2.3+json>

A opção --format é obrigatória e especifica o formato de saída da SBOM. As opções são CycloneDX, XML ou SPDX no formato JSON.

Você pode salvar as SBOMs em um arquivo usando a flag --json-file-output=<OUTPUT_FILE_PATH> para exportar a saída JSON das SBOMs para um arquivo JSON.

snyk sbom --format=cyclonedx1.4+json --json-file-output=mysbom.json

Ao executar esse comando no diretório raiz do projeto, você obterá um arquivo SBOM que poderá distribuir junto com o artefato.

Vários projetos

A Snyk CLI usa o arquivo de manifesto do sistema de build para determinar a árvore de dependências e, consequentemente, os dados de entrada da SBOM. Por padrão, a CLI para depois de encontrar um arquivo de manifesto. No entanto, seu projeto pode ter mais de um arquivo de manifesto e mais de um sistema de build. Por exemplo, você pode ter um projeto com um back-end Java que usa Maven e um front-end Node.js que usa npm. Ao adicionar a flag --all-projects ao comando da SBOM, a Snyk CLI percorrerá o projeto em busca de arquivos de manifesto e os incluirá no resultado da saída da SBOM.

snyk sbom --format=cyclonedx1.4+json --all-projects --json-file-output=mysbom.json

A profundidade padrão da busca por arquivos de manifesto é quatro níveis, mas você pode configurá-la usando a flag --detection-depth. Além disso, é possível excluir arquivos específicos com a flag --exclude.

snyk sbom --format=cyclonedx1.4+json --all-projects --detection-depth=3 --exclude=package.json --json-file-output=mysbom.json

Há muitas flags de linha de comando disponíveis para lidar com ecossistemas específicos, como arquivos Maven com vários módulos, atributos de configuração do Gradle e espaços de trabalho do Yarn. Para ver uma lista completa de todas as flags disponíveis para SBOMs da Snyk, consulte nossa documentação completa.

Automatizando a geração de SBOMs com a Snyk CLI

Automatizar a geração de listas de materiais de software com a Snyk CLI é uma etapa fundamental para reforçar a segurança e a conformidade no pipeline de CI/CD. Ao integrar a Snyk CLI ao processo de build, você pode gerar automaticamente uma SBOM abrangente sempre que o código for compilado. Essa SBOM lista todas as dependências, inclusive as transitivas.

À medida que o código avança pelo pipeline de CI/CD, a Snyk pode não apenas encontrar vulnerabilidades de segurança, mas também garantir que uma SBOM atualizada seja gerada e entregue a cada build. Essa automação simplifica a manutenção de uma SBOM segura e atualizada e incorpora práticas de segurança ao ciclo de vida do desenvolvimento de software. Assim, fica mais fácil atender a requisitos regulatórios e padrões do setor e, ao mesmo tempo, conquistar a confiança dos clientes.

Analisando SBOMs

Criar SBOMs é uma maneira simples e eficaz de usar a Snyk CLI. Mas e se você precisar consumir uma SBOM e verificar se um pacote de software inclui vulnerabilidades conhecidas? Atualmente, há algumas opções:

Teste de SBOM com a Snyk CLI

A Snyk CLI não apenas consegue criar uma SBOM para o seu projeto, como também pode analisá-la. Se a Snyk CLI estiver conectada a uma conta empresarial, você poderá usá-la para indicar um arquivo SBOM, como no exemplo abaixo:

snyk sbom test --file=mysbom.json --experimental

No momento da redação deste artigo, esse recurso ainda é experimental, por isso exige a flag `--experimental`. Observe também que, atualmente, ele aceita apenas arquivos JSON em UTF-8 nos formatos

  • CycloneDX: versões 1.4, 1.5 e 1.6

  • SPDX: versão 2.3 em JSON

Confira a documentação do teste de SBOM da Snyk CLI para ver as atualizações mais recentes sobre esse recurso e outras opções disponíveis.

Saída do terminal listando vulnerabilidades identificadas pela CLI do Snyk, incluindo negação de serviço, execução remota de código e problemas de controle de acesso.

Bomber

Bomber é um aplicativo de código aberto que analisa SBOMs em busca de vulnerabilidades de segurança. A Snyk é um dos provedores integrados ao bomber para analisar SBOMs.

Para instalar o bomber, baixe a versão mais recente no repositório oficial do GitHub, use o Homebrew no macOS ou a ferramenta dpkg no Linux.

Homebrew (macOS):

brew tap devops-kung-fu/homebrew-tap
brew install devops-kung-fu/homebrew-tap/bomber

Dpkg (Linux):

dpkg -i bomber_0.4.1_linux_arm64.deb

Para executar o bomber pela linha de comando com a Snyk, você precisará fornecer um token de API da Snyk. Você pode obtê-lo na interface web da Snyk. Se a CLI estiver instalada na sua máquina local, também é possível executar snyk config get api.

Com o token de API da Snyk em mãos, execute o bomber assim:

bomber scan --provider snyk --token xxx mysbom.json

A saída exibirá na tela todas as vulnerabilidades conhecidas.

Scanner Bomber SBOM com o provedor de integração do Snyk para dependências Java Maven.

Fornecendo SBOMs atualizadas com a Snyk

A Snyk CLI ajuda você a criar SBOMs atualizadas para cada build do seu software. É uma boa prática — e, em alguns casos, até uma exigência — fornecer uma SBOM junto com um artefato compilado para estar em conformidade.

Automatizar a geração de SBOMs no pipeline usando a Snyk CLI é uma maneira simples de fazer isso. Para concluir, recomendo os próximos passos a seguir ao trabalhar com SBOMs nos seus projetos:

Comece a usar a Snyk CLI

Instale a Snyk CLI para encontrar e corrigir vulnerabilidades nos seus projetos locais e pipelines.

npm install snyk -g