Software Bill of Materials (SBOM)
Inventera vad programvaran innehåller.
Software Bill of Materials (SBOM) är en gratis lektion i Cyber Security Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Cyber Security Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.
Vad en SBOM är
En förteckning över programvarukomponenter (SBOM) är en formell, maskinläsbar inventering av alla komponenter i en programvara: bibliotek, deras versioner, licenser och leverantörsinformation.
Precis som en innehållsförteckning för livsmedel listar ingredienser låter en SBOM er på några sekunder svara på frågan: innehåller den här produkten den sårbara versionen av X? Utan en SBOM kan frågan kräva flera dagars manuellt detektivarbete.
Varför SBOM:er är viktiga nu
När en kritisk sårbarhet upptäcks är den första operativa frågan hur stor exponeringen är: vilka av våra produkter innehåller den berörda komponenten?
Under Log4Shell-incidenten kunde organisationer med SBOM:er söka i sina inventeringar och prioritera åtgärder på några timmar. De som saknade SBOM:er ägnade veckor åt att söka igenom byggkataloger. Tillsynsmyndigheter och större köpare kräver i allt högre grad SBOM:er som villkor för upphandling.
- Snabb analys av sårbarheters påverkan
- Efterlevnad av licenser och spårning av skyldigheter
- Transparens i programvaruförsörjningskedjan för kunder och revisorer
Standardformat för SBOM
Två öppna standarder dominerar. Verktyg kan vanligtvis konvertera mellan dem.
- SPDX — en standard från Linux Foundation med starkt stöd för licenser, som är brett accepterad av tillsynsmyndigheter
- CycloneDX — en OWASP-standard med fokus på säkerhet, som stöder information om sårbarheter och beroenderelationer
Skapa inte ett eget format; användare och skanningsverktyg förväntar sig dessa.
Vad en post innehåller
Varje komponentpost bör innehålla tillräckligt med identitetsuppgifter för att kunna matchas mot sårbarhetsflöden. De viktigaste fälten är:
- namn och version — exakt, inte ett intervall
- PURL (paket-URL) — en universell identifierare som
pkg:npm/lodash@4.17.21 - hash — för att verifiera integriteten
- licens — SPDX-licensidentifierare
- leverantör — vem som producerade komponenten
# A PURL uniquely identifies a component across ecosystems
pkg:npm/lodash@4.17.21
pkg:pypi/requests@2.31.0
pkg:golang/github.com/gin-gonic/gin@v1.9.1Generera en SBOM
Generera SBOM:er automatiskt från källkod eller från en byggd artefakt. Syft är en vanlig generator för flera ekosystem som kan skapa utdata i båda standardformaten.
# from a project directory (CycloneDX JSON)
syft dir:. -o cyclonedx-json=sbom.cdx.json
# from a container image (SPDX JSON)
syft my-app:1.4.0 -o spdx-json=sbom.spdx.json
# CycloneDX has native generators per ecosystem too
cyclonedx-npm --output-file sbom.jsonSBOM för källkod, bygge och körning
En SBOM som genereras i olika skeden beskriver olika delar av verkligheten.
- SBOM för källkod — det som manifestet anger; kan missa paketerad eller inlagd kod
- SBOM för bygge — det som bygget faktiskt hämtade in; mest korrekt för den version som släpps
- SBOM för körning/driftsättning — det som faktiskt finns i den körande avbilden, inklusive OS-paket
För att säkerställa programvaruförsörjningskedjan bör ni generera SBOM:en under bygget från den faktiska artefakten och även skanna den slutliga containern efter paket på OS-nivå.
Skanna en SBOM efter sårbarheter
En SBOM blir kraftfull när den skickas till ett matchningsverktyg som kopplar komponenter till kända CVE:er. Det frikopplar genereringen från analysen: ni kan skanna en gammal SBOM samma dag som en ny CVE publiceras.
# match an SBOM against vulnerability databases
grype sbom:sbom.cdx.json
# OSV scanner consumes SBOMs directly
osv-scanner --sbom=sbom.spdx.json
# fail CI above a severity threshold
grype sbom:sbom.cdx.json --fail-on highVEX: Ange vad som kan utnyttjas
En SBOM kan visa en sårbar komponent som faktiskt inte kan utnyttjas i er produkt (den sårbara funktionen anropas aldrig). Ett VEX-dokument (Vulnerability Exploitability eXchange) dokumenterar den bedömningen.
VEX minskar bruset: i stället för att varje kund får panik över en listad CVE publicerar ni ett utlåtande med not_affected och en motivering, eller affected med en åtgärd. Det omvandlar en rå inventering till en prioriterad åtgärdsbedömning.
Distribuera och signera SBOM:er
En SBOM är bara tillförlitlig om den är äkta och kopplad till den exakta artefakt som den beskriver. Signera den och bifoga den som en attestering i stället för som en fristående fil.
# attach a signed SBOM attestation to an image with cosign
cosign attest --predicate sbom.cdx.json \
--type cyclonedx \
my-registry/my-app:1.4.0
# verify the attached SBOM attestation
cosign verify-attestation --type cyclonedx my-registry/my-app:1.4.0Automatisera SBOM:er i CI
Manuellt skapade SBOM:er blir snabbt inaktuella. Bygg in genereringen i pipelinen, så att varje release producerar och lagrar en SBOM som byggartefakt, helst signerad och skannad i samma jobb.
- Generera från den byggda artefakten, inte bara från repot
- Lagra SBOM:er i ett sökbart register med versionen som nyckel
- Skanna om lagrade SBOM:er enligt ett schema mot uppdaterade CVE-flöden
- Stoppa releaser baserat på resultatet från sårbarhetsskanningen
Vanliga fallgropar med SBOM
SBOM:er misslyckas i det tysta när de behandlas som en punkt på en checklista.
- Inaktuell — genereras en gång och aldrig igen
- Ofullständig — missar OS-paket samt statiskt länkad eller inlagd kod
- Overifierad — saknar en hash som kopplar den till den driftsatta artefakten
- Oanvänd — produceras men skannas eller söks aldrig
Målet är en korrekt, omgenererad, signerad och kontinuerligt skannad SBOM, inte en ensam JSON-fil.
Snabb kontroll: SBOM:ens syfte
Tillämpa det ni har lärt er på ett incidentscenario.
Sammanfattning: SBOM
Ni kan nu inventera vad programvaran innehåller och agera utifrån det.
- En SBOM är en maskinläsbar lista över alla komponenter i formatet SPDX eller CycloneDX
- Identifiera komponenter med PURL, version, hash och licens
- Generera vid byggtiden och skicka sedan resultatet till ett matchningsverktyg (grype, osv-scanner) för att hitta CVE:er
- Använd VEX för att ange om komponenter faktiskt kan utnyttjas och minska falsklarm
- Signera och automatisera i CI; skanna om lagrade SBOM:er mot nya flöden
Nästa steg: bevisa artefakternas härkomst med signering.
Lär dig Cyber Security Academy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 303
Vanliga frågor
Är lektionen ”Software Bill of Materials (SBOM)” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Cyber Security Academy, inklusive ”Software Bill of Materials (SBOM)”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Software Bill of Materials (SBOM)”?
Inventera vad programvaran innehåller. Ni övar på Cyber Security Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cyber Security Academy?
Du behöver inga förkunskaper. Utbildningen i Cyber Security Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Software Bill of Materials (SBOM)”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cyber Security Academy-lektionen?
Ja. Varje Cyber Security Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Hot mot leveranskedjan
- Software Bill of Materials (SBOM)
- Signering av beroenden och artefakter
- Skydda CI/CD-pipelines