Hur man genererar en SBOM med Microsofts Open-Source Tool

0
75
Shutterstock.com/Song_about_summer

En SBOM (Software Bill of Materials) hjälper dig att förstå din mjukvaruförsörjningskedja genom att lista de paket och leverantörer som din koden förlitar sig på. SBOM:er tar snabbt fart som ett sätt att hjälpa till att förbättra säkerheten i kölvattnet av framstående attacker i den verkliga försörjningskedjan.

En stor förespråkare för SBOMs är Microsoft som publicerade sin strategi för sin generation redan i oktober 2021. Tidigare i år skapade företaget open source sitt verktyg för att producera SBOMs på Windows, macOS och Linux.

I den här artikeln får du lära dig hur du börjar använda projektet för att indexera din kods beroenden. Den producerar SPDX-kompatibla dokument som listar filerna, paketen och relationerna inom ditt projekt. SPDX (Software Package Data Exchange) är den ISO-accepterade standarden för SBOM så att du kan skicka genererade rapporter direkt till andra ekosystemverktyg.

Microsoft tillkännagav ursprungligen projektet under namnet Salus. Den har sedan dess dragit sig tillbaka från den här termen eftersom den är i konflikt med det befintliga Salus-kodsäkerhetsprojektet som har sitt ursprung i Coinbase. SBOM-generatorn kallas nu helt enkelt sbom-tool.

Komma igång

Du kan ladda ner SBOM Tool från Microsofts GitHub-förråd. Förkompilerade binärer finns tillgängliga på releasesidan. Välj rätt nedladdning för ditt system, gör sedan den binära körbaren och flytta den till en plats i din sökväg.

Här är ett exempel för Linux:

$ wget https://github.com/microsoft/sbom-tool/releases/download/v<VERSION>/sbom-tool-linux-x64 $ chmod +x sbom-tool-linux-x64 $ mv sbom-tool-linux-x64 /usr/local /bin/sbom-tool

Du bör kunna köra sbom-tool för att visa hjälpinformationen i ditt terminalfönster:

$ sbom-tool Ingen åtgärd har angetts. Sbom-verktyget genererar en SBOM för alla byggartefakter. Användning – Microsoft.Sbom.Tool <action> -options

Generera en SBOM

Nya SBOM skapas genom att köra verktygets generera underkommando. Några argument måste tillhandahållas:

  • -b (BuildDropPath) – Mappen för att spara den genererade SPDX SBOM-manifestet.
  • -bc (BuildComponentPath) – Mappen som ska skannas för att hitta beroenden i ditt projekt.
  • -nsb (NamespaceUriBase) – Bassökvägen som kommer att användas som SBOM-manifestets namnområde. Detta bör vara en webbadress som ägs av din organisation, till exempel https://example.com/sbom.

SBOM-verktyget måste också känna till ditt projekts namn och version. Det kan ofta härleda detta från filer som redan finns i ditt arkiv, såsom fälten för package.json-namn och version, men du kan behöva tillhandahålla informationen manuellt eller åsidosätta standardinställningarna i vissa fall. Lägg till flaggorna pn och pv för att göra detta:

  • -pn (paketnamn) – Namnet på ditt projekt eller paket.
  • -pv (PackageVersion) – Projektversionen som du skannar. Detta bör matcha versionen som din SBOM medföljer så att användare kan korrelera beroendelistor med specifika builds.

Här är ett exempel på hur du genererar en SBOM för filerna i din arbetskatalog. SBOM kommer att placeras i underkatalogen sbom-output. Detta måste finnas innan du kör verktyget.

$ mkdir sbom-output $ sbom-tool generera -b sbom-output -bc . -pn exempel -pv 1.0 -nsb https://example.com/sbom

En översikt över skanningsresultaten kommer att visas i din terminal:

[INFO] Uppräknade 3728 filer och 607 kataloger i 00:00 :00.5938034 [INFO] |Komponentdetektor-ID |Detekteringstid |# Komponenter hittades |# Refereras uttryckligen till | … [INFO] |Npm |0,63 sekunder |241 |0 | … [INFO] |Totalt |0,64 sekunder |241 |0 | [INFO] Detektionstid: 0,6374678 sekunder.

Detta projekt använder npm för att hantera sina beroenden. Verktyget upptäckte 241 paket i arbetskatalogens package.json-fil.

SBOM-verktyget stöder för närvarande 19 olika programmeringsspråk och paketformat. Listan inkluderar npm, NuGet, PyPi, Maven, Rust Crates och Ruby ädelstenar, såväl som Linux-paket som finns i Docker-bilder. Referenser till fjärrlagringar för GitHub stöds också.

SBOM-innehåll

Den genererade SBOM kommer att skrivas till _manifest/spdx_2.2/manifest.spdx.json inuti utdatakatalogen för build som du angav. SBOM är en ganska utförlig JSON-fil som är avsedd att konsumeras av annan programvara.

{ "filer": [], "paket": [ { "namn": "färg- konvertera", "SPDXID": "SPDXRef-Package-A72B0922E46D9828746F346D7FD11B7F81EDEB15B92BEEDAE087F5F7407FECDC", informationen inom de fyra huvudtyperna av rapportfiler är

avsnitt– Detta listar alla filer som innehåller källkod som du har skrivit i ditt projekt. SBOM Tool kommer bara att fylla i den här sektionen när vissa projekttyper skannas, såsom C#-lösningar.

  • Paketsektionen – En komplett katalog över alla tredjepartsberoenden som finns i ditt projekt, med referenser till deras källkodspakethanterare, den version som används och vilken typ av licens som gäller.
  • Sektionen Relations
  • stark >– Detta beskriver alla relationer mellan komponenterna som anges i SBOM. Det vanligaste förhållandet du kommer att se är DEPENDS_ON, som deklarerar ett objekt i paketsektionen som ett av ditt projekts beroenden. Det finns också flera andra typer av relationer, som CREATED_BY, DEPENDENCY_OF och PATCH_FOR.

  • Rapportera metadatadetaljer– Fält som namn, documentNamespace, spdxVersion och creationInfo identifierar SBOM, verktyget som används för att skapa det och SPDX-manifestrevisionen som gäller.
  • Nu har du en SBOM du kan börja använda den med andra verktyg för att utföra sårbarhetssökningar och hantera licensefterlevnad. Du kan överväga att distribuera SBOM med dina programvaruversioner så att konsumenterna kan inspektera innehållet i varje ny version. SBOM genereras bäst som en del av din byggpipeline så att de håller sig uppdaterade.

    Att ha tillgång till en SBOM är ovärderligt när stora nya problem i leveranskedjan dyker upp. Organisationer som använder SBOM var bättre lämpade att svara på Log4j, till exempel. De kunde inspektera sina rapporter för att snabbt hitta projekt beroende på det sårbara biblioteket, istället för att granska paketlistor för hand.

    Skanna Docker-bilder

    SBOM Verktyget kan skanna befintliga Docker-bilder som en del av en rapportgenerering. För att använda denna funktion måste du lägga till flaggan -di och ange bildtaggen eller sammanfattningen som du vill skanna. Resten av argumenten förblir desamma.

    $ sbom-verktyg generera -di ubuntu:senaste -b sbom-output -bc . -pn demo -pv 1.0 -nsb https://demo.com/demo

    Docker-bilden kommer att analyseras för att identifiera paketen den innehåller. De kommer att läggas till i SBOM-rapporten tillsammans med de beroenden som finns i din källmapp. Du kan skanna flera Docker-bilder i en enda operation genom att separera deras taggar eller sammanfattande hash med kommatecken.

    Sammanfattning

    SBOM Tool är ett ungt verktyg för SBOM-generering med öppen källkod utvecklat av Microsoft. Den stöder flera ledande paketformat och producerar SPDX-kompatibel utdata. Det betyder att du kan mata in genererade SBOM:er direkt i andra verktyg som Grype för att automatiskt hitta säkerhetsbrister och föråldrade beroenden.

    SBOM:er är ett effektivt sätt att öka medvetenheten om mjukvaruförsörjningskedjor och avslöja lurande problem. Att producera och distribuera en SBOM hjälper användarna att förstå vad som tyst ingår i deras projekt. SBOM Tool är ett sätt att generera branschstandardrapporter med ett enda kommando, vilket gör det lättare att erbjuda en SBOM med var och en av dina utgåvor.

    LÄS NÄSTA

    • › iOS 16.0.2 är ute, här är buggar som åtgärdas
    • › De bästa iPhone 14 Pro Max-skalen från 2022
    • › Så här åtgärdar du Linux-stövlarna i BIOS-felet
    • › Så här anpassar du klockan på Android-låsskärmen
    • › Hur man avblockerar Netflix
    • › Den smarta displayen vi älskar har 45 % rabatt till och med söndag