Como automatizar a criação de SBOM

Uma lista de materiais de software não é mais apenas uma documentação “boa de se ter” para as organizações. Agora é um “must-have” por uma ampla gama de razões. Além do fato de que as regulamentações federais tornaram obrigatória a divulgação dos componentes do seu software, as empresas de software agora perceberam que listar todas as dependências comerciais e de código aberto usadas em seu aplicativo é uma prática benéfica de segurança cibernética.

Curiosamente, apesar de reconhecer a necessidade de um SBOM, criá-lo ainda pode ser bastante desafiador. Isso ocorre porque o processo de criação da lista de materiais de software para um produto pode ser complexo, tedioso e demorado. Além disso, como as autoridades reguladoras recomendam a geração de um SBOM preciso e exato para cada iteração do seu produto, implementá-lo manualmente sempre consome muitos recursos, se não completamente impraticável. 

Quando se trata de implementar SBOMs abrangentes, é sempre recomendável seguir o caminho da automação. Cada software é um pacote complicado composto de múltiplas dependências que provavelmente também possuem suas próprias dependências. Isso significa que mesmo o software mais simples pode ter centenas ou até milhares de dependências. Será preciso muito trabalho para compilar tudo isso e mantê-los organizados manualmente. Este artigo explica por que a automação é necessária para implementar SBOMs e como implementar a automação para mitigar o estresse causado pela geração manual de SBOMs. 

Por que automatizar o processo SBOM é importante

Uma lista de materiais de software é simplesmente uma lista dos componentes de um produto de software (semelhante a uma lista de ingredientes de um produto comestível). De modo geral, tudo que você precisa para criar uma lista de materiais de software é uma planilha que liste esses componentes. No entanto, esta é uma simplificação excessiva que dificilmente é prática. Um SBOM é uma lista exaustiva com um conjunto preciso de informações necessárias. Tentar processar esta lista manualmente será obviamente demorado e complicado.

SBOMs manuais simplesmente não são suficientes, e é por isso que a automação é vital na implementação e ingestão de SBOMs. Além da dificuldade de implementar SBOMs manuais, também há riscos envolvidos na criação manual de SBOMs – sem mencionar os problemas de conformidade. A seguir estão alguns dos motivos pelos quais os SBOMs são melhor criados com um sistema automatizado que coleta e compila uma lista abrangente de software e os armazena em um repositório legível e fácil de consultar.

Ameaças cibernéticas à cadeia de suprimentos

O principal objetivo de gerar um SBOM abrangente é compreender melhor os componentes de software e analisar possíveis vulnerabilidades. Esta se tornou uma importante medida de segurança cibernética para mitigar ameaças a todos os produtos de software. Um SBOM automatizado torna o processo mais simples. Uma lista de materiais de software automatizada não é apenas mais segura (graças à assinatura criptográfica e à verificação automatizada de componentes), mas a automação também garante que os componentes sejam continuamente verificados em todo o pipeline de integração e implantação de uma iteração de software.

Economia de tempo

Automatizar a implementação do SBOM significa que você depende de ferramentas avançadas que funcionam na velocidade da máquina para gerar sua lista de materiais de software. Isso economiza seu tempo de várias maneiras. Primeiro, gerar um SBOM dessa forma é mais rápido do que tentar identificar manualmente componentes individuais e incluí-los em uma planilha.

A automação de SBOMs também torna a detecção de vulnerabilidades mais fácil e rápida. Com SBOMs compilados manualmente, identificar os possíveis locais de vulnerabilidades é um processo dolorosamente longo.

As atualizações também são mais rápidas com SBOMs. Os sistemas automatizados executam verificações frequentes no seu SBOM para identificar vulnerabilidades com base em dependências recém-atualizadas. Dessa forma, você pode mitigar riscos com mais rapidez e investir seu tempo e recursos em outras tarefas importantes, em vez de perder tempo criando SBOMs ou consultando-os manualmente.

NIST e requisitos federais

Além de ser benéfica, a automatização dos SBOMs também tem importância regulatória. Os requisitos federais sobre SBOMs, como a Lei de Transparência e Gestão da Cadeia de Fornecimento Cibernético de 2014, estipulam que soluções e ferramentas automáticas devem ser usadas para gerar SBOMs.

Da mesma forma, em Julho de 2021, a Administração Nacional de Telecomunicações e Informação (NTIA) publicou directrizes aprovadas a nível federal que detalham os elementos mínimos que devem ser incluídos para cada SBOM. O suporte de automação foi listado nesta documentação como um dos elementos vitais de todo SBOM.

De acordo com a NTIA, a Lista de Materiais de Software deve ser legível por humanos e máquinas e capaz de geração automática. A implementação de um SBOM automatizado facilita o rastreamento dos dados incluídos no documento. 

Planilhas são ineficientes e propensas a erros

Conforme observado anteriormente, todo pacote de software possui centenas de dependências. Isso significa que há milhares de pontos de dados a serem cobertos em uma lista de materiais de software típica. As planilhas estão simplesmente mal equipadas para gerenciar esse volume de dados. A inserção manual de todos esses pontos de dados abre a porta para erros humanos que podem ter consequências graves se não forem detectados a tempo. É mais provável que você gere um SBOM preciso e abrangente quando optar por um sistema automatizado.

Consistência

Um grande benefício de automatizar o processo de geração de SBOM é que isso ajuda a manter a consistência em todo o pipeline de CI/CD das diferentes iterações de um produto de software. Isso inclui todas as alterações feitas em um produto enquanto ele está sendo construído e mesmo depois de ter sido lançado.

Um SBOM não é estático. À medida que um produto evolui, são feitas revisões em sua lista de materiais de software para capturar cada nova dependência adicionada. Estas alterações devem ser comunicadas a todos os utilizadores e outras partes interessadas, tanto internamente como em toda a cadeia de fornecimento do software. É importante que todas as partes interessadas tenham acesso à versão mais recente de um SBOM, bem como a todas as versões anteriores do software.

Com um SBOM preparado manualmente, é difícil manter a consistência e o controle de versão, e isso pode levar a conflitos e outros problemas. Um SBOM automatizado garante que as alterações feitas sejam consistentes e é mais fácil ver quando e como essas alterações foram feitas. Isto é difícil de conseguir com um sistema manual.

Maneiras de automatizar listas de materiais de software

Padrões regulatórios, como os requisitos mínimos da NTIA para SBOM, estipulam formatos específicos para a Lista de Materiais de Software. Esses padrões incluem Software Package Data Exchange (SPDX) e CycloneDX. As equipes de segurança de software devem saber que a própria natureza desses padrões já implica que os SBOMs devem ser automatizados.

Assim, toda equipe de segurança de software deve garantir a geração e utilização de SBOMs adicionando uma etapa automatizada a ser executada em um ponto estratégico de seu pipeline de desenvolvimento para gerar o SBOM. Esta poderia ser uma ferramenta de código aberto para investigar componentes de software após a conclusão da construção ou uma ferramenta SCA integrada ao pipeline de desenvolvimento contínuo do software. Os diferentes métodos de automatização da lista de materiais de software são destacados abaixo.

Use uma ferramenta de código aberto

Uma das maneiras mais baratas de criar uma lista de materiais de software é usar uma ferramenta de código aberto. Eles são praticamente gratuitos, mas oferecem apenas recursos rudimentares. Existem várias ferramentas de código aberto que automatizam o processo de implementação do SBOM. Contudo, os relatórios gerados pela maioria destas ferramentas são gerados apenas em dois formatos; CicloneDX e SPDX.

Um bom exemplo de ferramenta de automação SBOM de código aberto é Gerador SBOM da Microsoft. Este gerador de tempo de construção de uso geral foi desenvolvido para ajudar as empresas a gerar SBOMs para seus pacotes de software. A ferramenta oferece suporte multiplataforma e gera SBOMs no formato padrão Software Package Data Exchange (SPDX).

O gerador SBOM da Microsoft pode ser integrado a pacotes de software criados com estruturas NPM, PyPI, Maven, Rust Crates, Ruby Gems, Linux e NuGet para gerar a lista de dependências e componentes. Também pode ser integrado aos repositórios públicos do GitHub.

A ferramenta gera informações gerais sobre a documentação do SBOM conforme especificado nos requisitos mínimos do SBOM. Ele também lista todos os arquivos e pacotes junto com os relacionamentos entre eles.

Use uma ferramenta de plug-in

Outra abordagem para a geração automática de SBOMs é fazê-lo dentro de seu pipeline de integração contínua e implantação contínua (pipeline DevOps). Você pode fazer isso usando um plugin Maven que se integra ao estágio de construção do seu fluxo de trabalho. Essa abordagem é uma maneira escalonável e conveniente de automatizar o processo de geração da lista de materiais de software dentro do pipeline.

Você descobrirá que isso será muito mais fácil, pois estará fazendo isso dentro do ambiente construído do seu projeto. Basta passar alguns argumentos para gerar automaticamente o SBOM. Para o plugin Maven, o SBOM é gerado no formato Cyclone DX.

O plugin Maven pode gerar um SBOM abrangente que detalha todas as dependências do seu projeto. Para fazer isso, você deve começar configurando o arquivo pom.xml antes de executar o comando “mvn verify” para gerar os arquivos SBOM. Um arquivo bom.json é gerado primeiro, antes do arquivo SBOM.

O plugin Maven vem com uma ferramenta SCA integrada que audita os arquivos SBOM gerados para dependências. Depois que o arquivo for auditado, você poderá executar a ferramenta SCA uma segunda vez para gerar novamente a lista de materiais do software.

Um exemplo de tal ferramenta de plugin é o Plataforma de escriba, que permite aos produtores de software gerar SBOMs automaticamente. Ele vai além da geração de SBOM e ajuda os usuários a gerenciar e também compartilhar seus SBOMs, validar a integridade e rastrear vulnerabilidades de seus contêineres, dependências e pipelines. Aqui está uma visão geral simples de como o Scribe funciona para automatizar a criação de SBOM:

  • - Registre-se e faça login (gratuitamente) no Scribe Hub. Os usuários registram e configuram seus projetos usando esta interface web. Um coletor de evidências separado, executado em dispositivos MAC e Linux, gera o próprio SBOM.
  • Etapa 2: Integre o Scribe ao seu pipeline de integração contínua. Adicionar trechos de código do Scribe Hub ao seu pipeline de integração contínua e/ou à sua imagem de construção final fará isso.
  • Etapa 3: Gere e exporte a lista de materiais do software. Uma lista de materiais de software é gerada usando a ferramenta CLI Scribe gensbom. O SBOM gerado pode ser exportado no formato CycloneDX JSON.

Use uma ferramenta de análise de composição (SCA)

Uma terceira abordagem para gerar SBOMs automaticamente para seu produto de software é usar uma ferramenta de análise de composição de software de terceiros. Uma ferramenta SCA analisa seu produto para identificar componentes e licenças de terceiros no software. A ferramenta avalia a legitimidade do código, bem como a conformidade com os requisitos de licença.

Os SCAs examinam o código-fonte, os arquivos binários, as imagens de contêiner e os arquivos de manifesto de um software para determinar sua composição e listar todos os componentes de código aberto incluídos no software. Como parte do SBOM, um SCA também executará esses componentes em vários bancos de dados para extrair suas informações de segurança, licenças e vulnerabilidades conhecidas.

Uma ferramenta de análise de composição de software automatiza e acelera o processo de criação de SBOMs. A ferramenta foi projetada para examinar milhares de pontos de dados em um curto espaço de tempo, a fim de compilar uma lista de materiais de software para o seu produto. As ferramentas SCA ajudam a proteger seu pipeline de DevOps, fornecendo supervisão completa sobre os componentes de um pacote de software e a origem desses componentes. 

Conclusão

Embora algumas empresas só gerem SBOMs porque isso se tornou obrigatório por requisitos regulatórios, a prática provou ser uma necessidade no que diz respeito à mitigação de ameaças à cadeia de fornecimento de software. Automatizar o processo é ainda mais importante porque ajuda a reduzir o trabalho tedioso e demorado de compilação manual de SBOMs. A automação do SBOM, conforme destacado em cada uma das técnicas abordadas neste artigo, pode acelerar o processo de criação do SBOM e também torná-lo mais preciso e confiável. Uma ferramenta de plugin como o Scribe torna possível automatizar a criação de SBOM diretamente no pipeline de desenvolvimento do seu software. Confira nosso blog e outros recursos para ver como o Scribe funciona para automatizar a geração de SBOM e como você pode aproveitá-lo.