Como gerar uma lista de materiais de software (SBOM)

Os pacotes de software modernos estão mais seguros do que nunca, graças aos avanços nas práticas de segurança cibernética. No entanto, eles também enfrentam as ameaças mais avançadas, o que os torna tão vulneráveis ​​quanto seguros. Ataques à cadeia de suprimentos como Ventos solares e vulnerabilidades graves como Log4Shell estão entre as ameaças mais recentes enfrentadas pelos sistemas de software atualmente. Ataques à cadeia de suprimentos de software como esses têm efeitos dinâmicos e são mais difíceis de navegar porque exploram vulnerabilidades em sistemas que estão além do seu controle direto.

No entanto, o primeiro passo no combate a ataques à cadeia de fornecimento de software como estes é ter um conhecimento claro dos pacotes, dependências e componentes incluídos no seu software. É por isso que é importante gerar uma lista de materiais de software (SBOM) para sua construção. Ele não apenas aumenta a visibilidade das vulnerabilidades na cadeia de fornecimento de software – um SBOM também se tornou importante para fins de conformidade. A geração SBOM foi determinada por um recente ordem executiva emitida pelo governo federal dos EUA para melhorar a segurança cibernética e garantir a autenticidade de componentes de terceiros usados ​​em pacotes de software.

De acordo com uma Gartner previsão, 60% das organizações responsáveis ​​pelo desenvolvimento de software de infraestrutura crítica exigirão SBOMs padronizados até 2025. A criação de um SBOM começa com a seleção de uma ferramenta que se alinhe aos padrões e objetivos da sua organização, determinando as fases do ciclo de vida de construção de software durante as quais aplique o SBOM, confirmando se ele está de acordo com o formato e realizando uma verificação de vulnerabilidades. Gerar um SBOM é um processo delicado e complicado. Este artigo abordará quando a geração de SBOM é necessária e como gerá-la para o seu software.

Quando gerar uma lista de materiais de software

Gerar uma lista de materiais de software (SBOM) é essencial para proteger suas construções de software, bem como toda a sua cadeia de suprimentos de software. A geração SBOM pode ser integrada em vários estágios do processo de construção do seu software. Você pode gerar uma lista de materiais usando o código-fonte durante o tempo de construção, durante o tempo de execução ou durante a análise forense do software. De tudo isso, os especialistas recomendam gerar um SBOM durante o tempo de construção. Isso ocorre porque os geradores SBOM em tempo de construção são mais precisos e geram uma lista mais completa de dependências. No entanto, como isto nem sempre é prático, o SBOM pode ser gerado em qualquer outro momento durante o ciclo de vida do DevOps.

É importante notar que o tipo de ferramenta de geração de SBOM a ser usada depende de qual estágio do ciclo de vida do DevOps a documentação do SBOM está sendo gerada. A seguir estão os diferentes estágios nos quais os SBOMs podem ser gerados durante o ciclo de vida da construção. Cada período tem diferentes vantagens e compensações. É melhor entender o público-alvo e o caso de uso dos dados SBOM que você está gerando e escolher uma abordagem que ofereça o melhor resultado para você.

Na fase do código-fonte

Ao examinar os artefatos e quaisquer fontes associadas, como manifestos, metadados e arquivos de bloqueio, as ferramentas fonte ou binárias gerarão uma lista de materiais de software no estágio do código-fonte. Nesta fase, você pode fazer uma análise de componentes de software ou uma análise binária do seu software.

Uma ferramenta SCA (análise de componentes de software) é projetada para analisar um software e seus arquivos de manifesto para determinar seus componentes. As ferramentas de análise binária, por outro lado, analisam os metadados do software e constroem informações do artefato para gerar um SBOM. Exemplos de ferramentas de análise usadas nesta fase incluem CycloneDX, It-Depends, Fossa, AppSonar, Cybellum, Black Duck e Fortress.

Você pode usar um analisador de vulnerabilidade junto com um SBOM gerado no estágio do código-fonte para receber avisos antecipados de vulnerabilidade no software que está sendo construído. No entanto, existem limitações para os SBOMs gerados nesta fase. Por um lado, eles não estão completos, pois muitas vezes faltam aqueles gerados durante a construção com dependência. Além disso, podem incluir informações sobre componentes que não foram usados ​​no produto final implantado.

Durante o tempo de construção

A criação do SBOM no momento da compilação com uma ferramenta que se conecta ao sistema de compilação oferece o conhecimento mais exato do que entra em um binário, incluindo dependências transitivas e não fixadas. Isto é apoiado pelo  Estudo da NTIA sobre produção e fornecimento de SBOM de fornecedores de software.

A NTIA recomenda a criação de um SBOM para cada nova versão de componente. Isso significa criar um novo SBOM cada vez que você atualizar ou lançar uma nova versão do seu software. Os fornecedores também são obrigados a criar novos SBOMs sempre que descobrirem um erro no anterior ou aprenderem novas informações sobre seus componentes de software que não foram documentadas anteriormente.

Gerar seu SBOM durante o tempo de construção envolve o uso de um plug-in que funciona com o ambiente nativo com o qual você está construindo seu software. A maioria dos ambientes de desenvolvimento possui plug-ins que se integram ao sistema de gerenciamento de dependências para gerar um SBOM automaticamente. Exemplos de geradores SBOM em tempo de construção incluem SPDX, o plugin CycloneDX Maven e Dependency-Track-Check do OWASP.

Embora os geradores SBOM em tempo de construção sejam os mais abrangentes e precisos, eles são mais difíceis de configurar em comparação com outros métodos. Além disso, esse método não funciona para alguns sistemas de compilação e você não pode usá-lo para produtos legados. 

Gerando SBOM durante o tempo de execução

Um gerador SBOM que funciona durante o tempo de execução é projetado para capturar as bibliotecas que o software, servidor de aplicativos ou plug-ins usam durante o tempo de execução. Este tipo de gerador também detalha todos os serviços chamados pelo software, bem como as portas e bibliotecas ativas que ele acessa. No entanto, este método de geração de SBOMs não está amplamente disponível. Além disso, não há um fluxo de trabalho claro para mesclar os dados gerados usando esse método com a documentação original do SBOM. Jbom e a Mapeador de ameaças são exemplos de geradores SBOM em tempo de execução.

Como gerar uma lista de materiais de software: um guia passo a passo

Gerar manualmente uma lista de materiais de software é demorado e tedioso para os desenvolvedores. Listar todos os componentes de um programa de software desta forma é praticamente impraticável. No entanto, inúmeras ferramentas de geração de SBOM estão agora disponíveis e simplificam esse processo. Como fazer isso depende dos padrões da sua organização e de quando você deseja gerar seu SBOM durante o ciclo de vida de desenvolvimento.

Ao integrar fluxos de trabalho SBOM em pipelines de construção de software, você pode automatizar o processo SBOM. A plataforma do escriba é uma ferramenta que simplifica a criação de sua lista de materiais de software. Scribe permite que você gerencie e compartilhe seu SBOM em um só lugar. Dessa forma, você pode validar a integridade dos componentes de software e rastrear vulnerabilidades no pipeline de software de maneira integrada. Esta seção é um guia passo a passo para gerar listas de materiais de software com o Scribe.

Passo 1: Registre-se e faça login no Scribe Trust Hub.

Antes de começar, você deve saber que a plataforma Scribe possui uma interface web – Scribe Trust Hub – que pode ser acessada em seu navegador. O coletor de evidências Scribe, no entanto, funciona apenas em dispositivos Linux e Mac. Para gerar um relatório de integridade e SBOM com o Scribe, você deve ter permissão para modificar o script de construção do seu projeto e adicionar o trecho de código relevante necessário para conectar seu projeto ao Scribe. Tenha em mente que embora o Scribe possa gerar SBOMs para projetos escritos em qualquer linguagem de programação que gere uma imagem de contêiner, a versão atual funciona apenas para projetos Node.js.

O primeiro passo para integrar o Scribe ao seu projeto é registrar-se no Scribe Trust Hub. Depois de se registrar e fazer login, navegue até a guia “Produtos” e clique em Configurar. Scribe tem um produto de demonstração nesta página, com o qual você pode interagir para entender a plataforma e como ela funciona.

Etapa 2: Integrar o Scribe Trust Hub

A próxima etapa é conectar o Scribe ao pipeline de integração contínua do seu projeto. Isso automatiza o processo de geração de SBOM. Geralmente, você pode adicionar trechos de código do Scribe Trust Hub em dois pontos do pipeline de CI. Você pode colocar o código na verificação do código-fonte ou na imagem final construída. A primeira opção é recomendada mas não obrigatória, enquanto a segunda é obrigatória.

A configuração de CI do Scribe atualmente funciona apenas para Jenkins sobre Kubernetes e GitHub Actions. O processo de integração do Scribe para essas configurações de CI é semelhante. Você precisará obter as seguintes credenciais na página de configuração do produto Scribe Hub para começar:

  • Chave do produto
  • ID do cliente
  • Segredo do cliente

A chave do produto varia de um produto para outro, enquanto as credenciais do cliente são exclusivas da sua conta.

Configurando a integração de CI para Jenkins

Para configurar integrações de CI para Jenkins, você pode adicionar o trecho de código para chamar “Gensbom” (ferramenta do Scribe Trust Hubs para coletar evidências e gerar SBOMs) no ponto de checkout e/ou após criar uma imagem Docker.

Comece adicionando as credenciais acima ao seu ambiente de construção de acordo com as instruções exclusivas para Jenkins. Em seguida, adicione o snippet de código ao seu pipeline de acordo com as instruções Aqui.

Configurando a integração de CI para GitHub Actions

O processo de configuração da integração de CI para GitHub Actions é semelhante ao do Jenkins. A ideia principal é chamar o coletor de evidências e gerador de SBOM do Scribe conhecido como “Gensbom”. Para começar, siga o Instruções do GitHub para adicionar credenciais de configuração do produto e o snippet de código ao pipeline de acordo com as instruções aqui

Integrando o Scribe Trust Hub com outros sistemas CI

Embora o Scribe ofereça suporte nativo apenas para ações Jenkins e GitHub, você também poderá usá-lo para outros sistemas de CI. Para começar, baixe a ferramenta “Gensbom” em sua interface de linha de comando baseada em Unix. Em seguida, adicione seu produto e credenciais de cliente e, em seguida, chame Scribe gensbom a partir de seu script de construção no Checkout ou após a imagem final construída.

Etapa 3: Gerando a lista de materiais do software

A ferramenta CLI gensbom da Scribe gera a lista de materiais de software (SBOM) para Docker e imagens de contêineres abertos (OCI). Esta ferramenta funciona apenas em sistemas Mac ou Linux. O SBOM final gerado pelo Scribe está no formato CycloneDX JSON, que é uma das máquinas padrão e formatos legíveis reconhecidos para SBOMs. As imagens do contêiner aberto podem ser extraídas do Docker, de um disco local ou de um registro remoto, conforme o caso.

Embora existam configurações padrão para o nome, diretório e caminho da imagem a partir da qual o SBOM é gerado, é possível alterar essas configurações padrão adequadamente, se desejar.

Etapa 4: Exportar SBOM

O Scribe Trust Hub também permite exportar e compartilhar sua lista de materiais de software perfeitamente como parte do processo de validação do seu software. O SBOM é gerado no formato de relatório CycloneDX JSON e detalha todas as dependências de código aberto da imagem Docker analisada. Depois que o SBOM for gerado, você poderá exportá-lo com um clique. Você encontrará o botão “Exportar SBOM” no canto superior direito do relatório. Clique nele para exportar suas listas de materiais de software.

Conclusão

A geração de uma lista de materiais de software está se tornando uma etapa cada vez mais vital para proteger sua cadeia de suprimentos de software e também para fins de conformidade. Independentemente dos motivos para gerar um SBOM, você encontrará no Scribe Trust Hub uma maneira fácil de usar e flexível de automatizar o fluxo de trabalho de geração de SBOM para cada uma de suas construções de software.