Een SBOM genereren met Microsoft's Open-Source Tool

0
68
Shutterstock.com/Song_about_summer

Een SBOM (Software Bill of Materials) helpt u uw softwaretoeleveringsketen te begrijpen door de pakketten en leveranciers op te sommen die uw code vertrouwt. SBOM's winnen snel aan kracht als een manier om de beveiliging te helpen verbeteren in de nasleep van prominente real-world supply chain-aanvallen.

Een groot voorstander van SBOM's is Microsoft, dat zijn benadering van hun generatie in oktober 2021 publiceerde. Eerder dit jaar heeft het bedrijf zijn tool voor het produceren van SBOM's op Windows, macOS en Linux open source gemaakt.

In dit artikel leert u hoe u het project kunt gaan gebruiken om de afhankelijkheden van uw code te indexeren. Het produceert SPDX-compatibele documenten die de bestanden, pakketten en relaties binnen uw project weergeven. SPDX (Software Package Data Exchange) is de ISO-geaccepteerde standaard voor SBOM's, zodat u gegenereerde rapporten rechtstreeks kunt doorgeven aan andere ecosysteemtools.

Microsoft kondigde het project oorspronkelijk aan onder de naam Salus. Het is sindsdien teruggetrokken uit deze term omdat het in strijd is met het bestaande Salus-codebeveiligingsproject dat is ontstaan ​​bij Coinbase. De SBOM-generator wordt nu simpelweg sbom-tool genoemd.

Aan de slag

U kunt SBOM Tool downloaden van de GitHub-repository van Microsoft. Voorgecompileerde binaire bestanden zijn beschikbaar op de releases-pagina. Selecteer de juiste download voor uw systeem, maak het binaire bestand uitvoerbaar en verplaats het naar een locatie in uw pad.

Hier is een voorbeeld voor 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

U zou sbom-tool moeten kunnen uitvoeren om de help-informatie in uw terminalvenster weer te geven:

$ sbom-tool Er is geen actie opgegeven De Sbom-tool genereert een SBOM voor elk build-artefact. Gebruik – Microsoft.Sbom.Tool <action> -options

Een SBOM genereren

Nieuwe SBOM's worden gemaakt door de subopdracht Genereer van de tool uit te voeren. Er moeten een paar argumenten worden opgegeven:

  • -b (BuildDropPath) – De map waarin de gegenereerde SPDX SBOM-manifesten worden opgeslagen.
  • -bc (BuildComponentPath) – De map die wordt gescand om de afhankelijkheden in uw project te vinden.
  • -nsb (NaamruimteUriBase) – Het basispad dat wordt gebruikt als de naamruimte van het SBOM-manifest. Dit moet een URL zijn die eigendom is van uw organisatie, zoals https://example.com/sbom.

SBOM Tool moet ook uw project kennen naam en versie. Het kan dit vaak afleiden uit bestanden die al in uw repository staan, zoals de naam- en versievelden van package.json, maar in sommige gevallen moet u de informatie mogelijk handmatig opgeven of de standaardinstellingen overschrijven. Voeg hiervoor de vlaggen pn en pv toe:

  • -pn (Pakketnaam) – De naam van uw project of pakket.
  • -pv (PackageVersion) – De projectversie die u scant. Dit moet overeenkomen met de releaseversie die uw SBOM vergezelt, zodat gebruikers afhankelijkheidslijsten kunnen correleren met specifieke builds.

Hier is een voorbeeld van het genereren van een SBOM voor de bestanden in uw werkmap. De SBOM wordt in de submap sbom-output geplaatst. Deze moet bestaan ​​voordat u de tool uitvoert.

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

Een overzicht van de scanresultaten wordt getoond in uw terminal:

[INFO] Opsomming van 3728 bestanden en 607 mappen in 00:00 :00.5938034 [INFO] |Componentdetector-ID |Detectietijd |# Componenten gevonden |# Expliciet verwezen | … [INFO] |Npm |0.63 seconden |241 |0 | … [INFO] |Totaal |0.64 seconden |241 |0 | [INFO] Detectietijd: 0,6374678 seconden.

Dit project gebruikt npm om de afhankelijkheden te beheren. De tool heeft 241 pakketten gedetecteerd in het package.json-bestand van de werkdirectory.

SBOM Tool ondersteunt momenteel 19 verschillende programmeertalen en pakketformaten. De lijst bevat npm, NuGet, PyPi, Maven, Rust Crates en Ruby gems, evenals Linux-pakketten die aanwezig zijn in Docker-images. Verwijzingen naar externe GitHub-opslagplaatsen worden ook ondersteund.

SBOM-inhoud

De gegenereerde SBOM wordt geschreven naar _manifest/spdx_2.2/manifest.spdx.json in de build-uitvoermap die u hebt opgegeven. De SBOM is een vrij uitgebreid JSON-bestand dat bedoeld is om door andere software te worden gebruikt.

{ "files": [], "packages": [ { "name": "color- convert", "SPDXID": "SPDXRef-Package-A72B0922E46D9828746F346D7FD11B7F81EDEB15B92BEEDAE087F5F7407FECDC", … }

Er zijn vier hoofdtypen informatie in het rapport:

  • sectie– Dit geeft een overzicht van alle bestanden die de broncode bevatten die u in uw project hebt geschreven. SBOM Tool vult deze sectie alleen wanneer bepaalde projecttypen worden gescand, zoals C#-oplossingen.
  • De sectie pakketten – Een complete catalogus van alle afhankelijkheden van derden die aanwezig zijn in uw project, met verwijzingen naar hun bronpakketbeheerder, de gebruikte versie en het type licentie dat van toepassing is.
  • De sectie Relaties
  • De sectie Relaties
  • sterk>– Hierin staan ​​alle relaties tussen de onderdelen vermeld in de SBOM. De meest voorkomende relatie die u zult zien is DEPENDS_ON, die een item in de pakkettensectie declareert als een van de afhankelijkheden van uw project. Er bestaan ​​ook verschillende andere soorten relaties, zoals CREATED_BY, DEPENDENCY_OF en PATCH_FOR.

  • Metadatadetails rapporteren– Velden zoals name, documentNamespace, spdxVersion en creationInfo identificeren de SBOM, de tool die is gebruikt om deze te maken en de SPDX-manifestrevisie die van toepassing is.

Nu heb je een SBOM u kunt het gaan gebruiken met andere tools om kwetsbaarheidsscans uit te voeren en de naleving van licenties te beheren. U kunt overwegen de SBOM bij uw softwarereleases te verspreiden, zodat consumenten de inhoud van elke nieuwe versie kunnen inzien. SBOM's kunnen het beste worden gegenereerd als onderdeel van uw build-pipeline, zodat ze up-to-date blijven.

Toegang hebben tot een SBOM is van onschatbare waarde wanneer zich grote nieuwe supply chain-problemen voordoen. Organisaties die SBOM's gebruiken, waren bijvoorbeeld beter geplaatst om te reageren op Log4j. Ze zouden hun rapporten kunnen inspecteren om snel projecten te vinden die afhankelijk zijn van de kwetsbare bibliotheek, in plaats van pakketlijsten handmatig te controleren.

Docker-afbeeldingen scannen

SBOM Tool kan bestaande Docker-afbeeldingen scannen als onderdeel van het genereren van rapporten. Om deze mogelijkheid te gebruiken, moet u de vlag -di toevoegen en de afbeeldingstag of samenvatting specificeren die u wilt scannen. De rest van de argumenten blijven hetzelfde.

$ sbom-tool genereer -di ubuntu:laatste -b sbom-output -bc . -pn demo -pv 1.0 -nsb https://demo.com/demo

Het Docker-image zal worden geanalyseerd om de pakketten te identificeren die het bevat. Ze worden toegevoegd aan het SBOM-rapport samen met de afhankelijkheden in uw bronmap. U kunt meerdere Docker-afbeeldingen in één keer scannen door hun tags te scheiden of hashes te verteren met komma's.

Samenvatting

SBOM Tool is een jong open-source hulpprogramma voor het genereren van SBOM, ontwikkeld door Microsoft. Het ondersteunt verschillende toonaangevende pakketformaten en produceert SPDX-compatibele uitvoer. Dit betekent dat u gegenereerde SBOM's rechtstreeks in andere tools zoals Grype kunt invoeren om automatisch beveiligingsproblemen en verouderde afhankelijkheden te vinden.

SBOM's zijn een effectieve manier om het bewustzijn van softwaretoeleveringsketens te vergroten en op de loer liggende problemen te ontdekken. Het produceren en distribueren van een SBOM helpt gebruikers te begrijpen wat er in stilte in hun project wordt opgenomen. SBOM Tool is een manier om met één opdracht industriestandaard rapporten te genereren, waardoor het gemakkelijker wordt om een ​​SBOM aan te bieden bij elk van uw releases.

LEES VOLGENDE

  • › iOS 16.0.2 is uit, hier zijn de bugs die het verhelpt
  • › De beste iPhone 14 Pro Max-hoesjes van 2022
  • › Hoe de Linux-boots in de BIOS-fout te repareren
  • › De klok aanpassen op het Android-vergrendelingsscherm
  • › Netflix deblokkeren
  • › Het slimme display waar we van houden is tot en met zondag 45% korting