Cyber Security Academy · Lektion

Software Bill of Materials (SBOM)

Inventera vad programvaran innehåller.

Lektion 2 av 413 steg

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.1

Generera 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.json

SBOM 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 high

VEX: 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.0

Automatisera 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.

Gratis att börja

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

  1. Hot mot leveranskedjan
  2. Software Bill of Materials (SBOM)
  3. Signering av beroenden och artefakter
  4. Skydda CI/CD-pipelines
← Tillbaka till Cyber Security Academy