Vad finns i en SBOM?
Fälten som beskriver varje komponent och dokumentet som helhet
En SBOM har två delar: uppgifter om dokumentet självt, och en lista över komponenter med uppgifter om var och en. Fälten heter olika i CycloneDX och SPDX, men innehållet är i stort detsamma.
Uppgifter om varje komponent
| Fält | Exempel | Används till |
|---|---|---|
| Namn | openssl, react, log4j-core | Att identifiera komponenten |
| Version | 3.0.13, 18.2.0, 2.14.1 | Att avgöra om en sårbarhet gäller just den här versionen |
| Leverantör | Apache Software Foundation, Red Hat | Att veta vem som står bakom komponenten |
| Unik identifierare | pkg:npm/react@18.2.0 (purl), CPE | Att matcha komponenten mot sårbarhetsdatabaser |
| Licens | MIT, Apache-2.0, GPL-3.0-only | Licenskontroll |
| Kontrollsumma | SHA-256 för filen | Att verifiera att komponenten är den som anges |
Namn och version räcker inte alltid för att peka ut en komponent, eftersom samma namn kan finnas i flera ekosystem. Därför behövs en unik identifierare. Den vanligaste är Package URL (purl), som anger ekosystem, namn och version i en sträng.
Relationer mellan komponenter
En SBOM beskriver också hur komponenterna beror på varandra. Ett direkt beroende är något applikationen själv använder. Ett transitivt beroende är något som ett annat beroende i sin tur behöver.
Relationerna behövs för att förstå varför en komponent finns med, och vilken uppdatering som krävs för att bli av med en sårbar version.
Uppgifter om dokumentet
- Vem som skapade SBOM:en, och med vilket verktyg.
- Tidpunkt för när den skapades.
- Vilken produkt och version den beskriver.
Det som normalt inte finns i en SBOM
En SBOM listar komponenter, inte sårbarheter. Vilka sårbarheter som berör en komponent ändras från dag till dag, medan SBOM:en för en viss version är densamma. Sårbarheter tas därför fram genom att SBOM:en jämförs mot aktuella sårbarhetsdatabaser.
Bedömningen av om en sårbarhet faktiskt påverkar produkten delas i ett separat dokument, VEX.
Lägstanivå
Vilka fält som minst ska vara ifyllda beskrivs i SBOM Minimum Elements. Varför är SBOM-kvalitet viktigt? beskriver vad som händer när fält saknas.
Referenser
- CycloneDX 1.6cyclonedx.org
Referensdokumentationen för CycloneDX 1.6 visar hur fälten definieras i formatet.