SBOM-guiden
Grunderna om SBOM

Vad är SBOM?

En innehållsförteckning för mjukvara

En SBOM (Software Bill of Materials) är en förteckning över de komponenter som en mjukvara består av. Den liknas ofta vid en innehållsförteckning: den visar vilka bibliotek, moduler, ramverk och andra beroenden som har använts för att bygga en applikation, med namn, version och leverantör.

En SBOM är maskinläsbar. Den skapas av ett verktyg och läses av andra verktyg, som jämför innehållet mot databaser över kända sårbarheter och licenser.

Så ser en SBOM ut

En SBOM är en fil, oftast i JSON. Det här är ett förkortat exempel i formatet CycloneDX med en enda komponent:

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.6",
  "components": [
    {
      "type": "library",
      "name": "log4j-core",
      "version": "2.14.1",
      "purl": "pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1"
    }
  ]
}

En verklig SBOM innehåller ofta hundratals eller tusentals komponenter och beskriver också hur de beror på varandra. Vad finns i en SBOM? går igenom fälten.

Vad en SBOM används till

  • Sårbarhetshantering. När en sårbarhet blir känd i ett bibliotek visar SBOM:erna vilka produkter och versioner som innehåller det. Utan SBOM får frågan besvaras genom att gå igenom varje system för hand.
  • Licenser. SBOM:en visar vilka licenser komponenterna har, så att villkor som inte går att förena med produkten upptäcks före leverans.
  • Inköp och leverantörsuppföljning. En SBOM från leverantören visar vad en inköpt mjukvara innehåller, även när källkoden inte är tillgänglig.
  • Regelefterlevnad. Cyber Resilience Act (CRA) kräver att tillverkare upprättar en SBOM från den 11 december 2027.

Bakgrund

Materialförteckningar (Bill of Materials) har länge använts i tillverkningsindustrin för att hålla reda på vilka delar en produkt består av. För mjukvara drevs arbetet från 2018 av den amerikanska myndigheten NTIA tillsammans med branschen. Efter presidentordern EO 14028 publicerade NTIA 2021 en lägstanivå för vad en SBOM ska innehålla, SBOM Minimum Elements.

I EU är CRA det första regelverket som gör SBOM till ett lagkrav.

Format

De två format som används i praktiken är CycloneDX och SPDX. Båda är öppna standarder. SBOM-format och standarder beskriver skillnaderna.

SBOM i olika skeden

En SBOM kan skapas vid olika tidpunkter, och innehållet skiljer sig åt. En SBOM från källkoden listar de beroenden som är deklarerade. En SBOM från bygget listar de komponenter som faktiskt följde med. En SBOM från ett system i drift listar det som är installerat och körs. Olika typer av SBOM:ar beskriver de sex typerna.

Andra typer av BOM

Samma idé används för annat än mjukvarukomponenter. CycloneDX definierar bland annat följande:

TypFörkortningBeskriver
Software Bill of MaterialsSBOMMjukvarukomponenter: bibliotek, moduler, ramverk och andra beroenden
Hardware Bill of MaterialsHBOMFysiska komponenter och hårdvaruenheter i en produkt
Cryptography Bill of MaterialsCBOMKryptografiska tillgångar, till exempel algoritmer, nycklar och certifikat
AI/Machine Learning Bill of MaterialsAI/ML-BOMModeller, träningsdata och ramverk i en AI-lösning
Software as a Service Bill of MaterialsSaaSBOMTjänster, ändpunkter och dataflöden i en molntjänst

VEX är inte en materialförteckning utan ett komplement: ett dokument som anger om en produkt påverkas av en viss sårbarhet.

Referenser

  • OWASP CycloneDX: Authorative Guide to SBOM

    En överskådlig introduktion till CycloneDX, ett av de mest populära formaten för SBOM:ar (Software Bill of Materials). Guiden tar upp allt från grundläggande principer till exempel på hur du kan implementera CycloneDX i praktiken.

    PDF, cyclonedx.org
  • CISA HBOM Framework - 2023

    A Hardware Bill of Materials (HBOM) Framework for Supply Chain Risk Management

    PDF, cisa.gov
  • OWASP CycloneDX: Authorative Guide to CBOM

    En lättillgänglig genomgång av hur CycloneDX kan användas för att skapa CBOM:ar (Cryptography Bill of Materials). Guiden förklarar de viktigaste principerna för kryptografihantering och visar praktiska exempel på hur du kan använda CBOM.

    PDF, cyclonedx.org
  • CycloneDX BOM-exempel

    Exempel på hur CycloneDX SBOM:ar ser ut i praktiken. Här finns även andra typer av BOM-filer, till exempel HBOM och CBOM.

    github.com
  • SPDX SBOM-exempel

    Exempel på hur SPDX SBOM:ar ser ut i praktiken.

    github.com
  • SBOM Analyzer

    Gratis webbverktyg från Bytesafe som visar antal komponenter, sårbarheter och licenser i en SBOM.

    bytesafe.dev

På den här sidan