As aplicações modernas já não são monólitos gigantes, são uma coleção de micro serviços, componentes de código aberto e ferramentas de terceiros. Mas isto torna muito difícil compreender realmente o interior das nossas aplicações, especialmente quando se considera que as nossas dependências de código aberto também têm dependências de código aberto!
A lista de materiais de software (SBOM) desempenha aqui um papel fundamental. As SBOM fornecem um inventário pormenorizado de todos os componentes de software. Isto não só nos ajuda a compreender o nosso software, como também nos permite identificar riscos e cumprir os nossos requisitos de conformidade e governação.
Para que os SBOMs funcionem bem, precisam de ser normalizados e facilmente partilhados entre vários sistemas e ferramentas. É aqui que os padrões SBOM se tornam vitais.
Compreender as normas SBOM
As normas SBOM estabelecem um formato comum para a criação e partilha de dados SBOM. Oferecem uma linguagem unificada, assegurando uma comunicação consistente entre diferentes organizações e ferramentas.
A normalização é necessária porque os SBOMs podem ser extensos e repletos de detalhes sobre componentes, versões, licenças e dependências. Sem um formato padrão, a interpretação e utilização de dados SBOM torna-se um desafio para diferentes entidades.
Atualmente, três normas SBOM principais são populares na indústria:
- CycloneDX: uma norma ligeira centrada na segurança, que suporta vários tipos de listas técnicas, incluindo software, hardware e serviços.
- SPDX (Software Package Data Exchange): A única norma SBOM reconhecida pela ISO, conhecida pela sua abordagem abrangente aos dados dos componentes e pelas suas origens no licenciamento de software.
- Etiquetas SWID (Software Identification): Focado na identificação de software, ajudando a rastrear o software instalado para a gestão de activos.
Cada norma tem pontos fortes e casos de utilização específicos, que discutiremos mais adiante.
CycloneDX num relance
- Criado especificamente para casos de utilização de segurança (por exemplo, rastreio de vulnerabilidades, suporte VEX, hashing de componentes).
- Suporta nativamente VEX (Vulnerability Exploitability eXchange) e árvores de dependências.
- Compatível com pipelines DevSecOps modernos e ferramentas como OWASP Dependency-Check, Anchore, GitHub Advanced Security.
- Mais fácil de integrar em ambientes CI/CD (leve, compatível com JSON).
O CycloneDX destaca-se pela sua eficiência e caraterísticas de segurança robustas. O seu design permite uma integração rápida, tornando-o ideal para equipas que valorizam a agilidade e a segurança. O CycloneDX abrange software, hardware e materiais relacionados a serviços, tornando-o versátil para diferentes ambientes tecnológicos.
O CycloneDX suporta vários formatos de dados, incluindo XML, JSON e protobuf, garantindo a compatibilidade com várias ferramentas. Sob a égide da OWASP, o CycloneDX evolui continuamente para enfrentar os actuais desafios de segurança nas cadeias de fornecimento de software.
Exemplo de formatação do CycloneDX
{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"version": 1,
"components": [
{
"type": "library",
"name": "example-lib",
"version": "1.0.0",
"purl": "pkg:npm/example-lib@1.0.0",
"licenses": [{ "license": { "id": "MIT" } }]
}
]
}
Explorar o SPDX
- Destinado às equipas jurídicas e à diligência devida em matéria de PI (modelo de metadados de licenciamento forte).
- Linguagem de expressão de licenças extensa (lista de licenças SPDX).
- Normalizado ao abrigo da norma ISO/IEC 5962:2021.
- Utilizado em esforços importantes como OpenChain, ORT e Tern.
O SPDX é reconhecido mundialmente como a única norma SBOM com acreditação ISO, o que reforça a sua credibilidade. Inicialmente criado para o licenciamento de software, o SPDX expandiu-se para satisfazer necessidades mais vastas de transparência de software.
O SPDX é compatível com vários formatos de dados, como tag/valor, JSON, XML, YAML e RDF, integrando-se facilmente com várias ferramentas e plataformas. Fornece uma visão aprofundada dos componentes de software, documentando ficheiros e fragmentos de código para um acompanhamento detalhado da conformidade e da segurança.
Exemplo de formatação SPDX
SPDXVersão: SPDX-2.3
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: example-sbom
DocumentNamespace: http://spdx.org/spdxdocs/example-sbom
Creator: Tool: SPDX-Tools
Criado: 2025-05-08T12:00:00Z
Nome do pacote: example-lib
SPDXID: SPDXRef-Package-example-lib
Versão do Pacote: 1.0.0Pacote
DownloadLocalização: NOASSERÇÃO
PackageLicenseConcluded: MIT
PackageLicenseDeclared: MIT
PackageChecksum: SHA256: abcdef1234567890abcdef1234567890abcdef1234569ui
Compreender as etiquetas SWID
- Direcionado para a gestão do inventário de software empresarial.
- Normalizada como ISO/IEC 19770-2 - muito orientada para o sector governamental/militar.
- Utilizado no FedRAMP, NIST 800-171 e estruturas de conformidade relacionadas.
As etiquetas SWID centram-se numa delimitação clara do produto de software. Ao contrário de SBOMs abrangentes, as etiquetas SWID identificam pacotes de software individuais, que são cruciais para uma gestão precisa do inventário.
Na gestão de activos, as etiquetas SWID oferecem um método normalizado para controlar as instalações de software, garantindo que as organizações mantêm um panorama de software preciso. Isto ajuda na conformidade e na otimização das estratégias de gestão de activos.
As etiquetas SWID integram-se em estruturas como as normas SCAP e TCG, reforçando o seu papel na segurança e na conformidade.
Exemplo de formatação SWID
<SoftwareIdentity xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd" name="example-lib"
version="1.0.0"
tagId="example-lib@1.0.0"
patch="false"
</SoftwareIdentity>
Comparação das normas SBOM
Para diferenciar as etiquetas CycloneDX, SPDX e SWID, comece pelas suas caraterísticas. O CycloneDX atende à gestão flexível de BOM em ambientes de segurança dinâmicos. O SPDX destaca-se no controlo da conformidade, enquanto as etiquetas SWID se concentram na identificação precisa do software. Eis uma comparação rápida:
A estrutura do CycloneDX atende à necessidade de transparência. O SPDX fornece documentação detalhada e integridade de dados para supervisão de conformidade.
Cada padrão atende a necessidades específicas. O CycloneDX adequa-se a equipas que dão prioridade a um desenvolvimento rápido e seguro. O SPDX atrai as organizações focadas na conformidade. As etiquetas SWID melhoram a gestão de activos, garantindo uma localização precisa.
As ferramentas de conversão entre estes formatos são essenciais para manter a interoperabilidade. As soluções avançadas permitem que as organizações beneficiem dos pontos fortes de cada norma, adaptando estratégias para satisfazer requisitos específicos.
Escolhendo o padrão SBOM correto
Não é suficiente gerar um SBOM em apenas um formato. Diferentes partes interessadas - sejam elas auditores internos, agências governamentais ou clientes empresariais - podemexigir o SBOM num formato específico para o ingerir nas suas ferramentas ou fluxos de trabalho existentes. Por exemplo:
- Um contrato federal pode exigir o SPDX, enquanto um fornecedor de segurança que realiza uma avaliação de risco pode preferir o CycloneDX.
- Alguns sistemas de CI/CD podem suportar apenas determinados formatos de SBOM para aplicação de políticas ou verificação automática.
As ferramentas são importantes: Escolha uma que suporte vários formatos
Dada esta variabilidade, é necessário escolher uma ferramenta que possa gerar SBOMs em vários formatos a partir dos mesmos artefactos de origem. Ferramentas como o Aikido Security simplificam esse processo gerando automaticamente SBOMs durante o pipeline de criação ou varreduras de segurança e exportando-os em formatos como CycloneDX, SPDX e outros, conforme necessário.
Esta capacidade multiformato garante-lhe a conformidade com diversos requisitos, sem duplicar trabalho ou introduzir erros de conversões manuais.