So erstellen Sie eine Software-Stückliste (SBOM)

Dank der Fortschritte bei den Cybersicherheitspraktiken sind moderne Softwarepakete sicherer als je zuvor. Allerdings sind sie auch den fortschrittlichsten Bedrohungen ausgesetzt, was sie ebenso anfällig wie sicher macht. Supply-Chain-Angriffe wie Sonnenwind und schwere Schwachstellen wie Log4Shell gehören heute zu den neuesten Bedrohungen für Softwaresysteme. Solche Angriffe auf die Software-Lieferkette haben eine dynamische Wirkung und sind schwieriger zu steuern, da sie Schwachstellen in Systemen ausnutzen, die außerhalb Ihrer direkten Kontrolle liegen.

Der erste Schritt zur Bekämpfung solcher Software-Supply-Chain-Angriffe besteht jedoch darin, klare Kenntnisse über die Pakete, Abhängigkeiten und Komponenten zu haben, die in Ihrer Software enthalten sind. Aus diesem Grund ist es wichtig, eine Software-Stückliste (SBOM) für Ihren Build zu erstellen. Es erhöht nicht nur die Sichtbarkeit von Schwachstellen in der Software-Lieferkette – ein SBOM ist auch für Compliance-Zwecke wichtig geworden. Die SBOM-Generierung wurde kürzlich vorgeschrieben Durchführungsverordnung der US-Bundesregierung um die Cybersicherheit zu verbessern und die Authentizität der in Softwarepaketen verwendeten Komponenten Dritter zu gewährleisten.

Gemäß einer Gartner Laut Prognose werden 60 % der Organisationen, die für die Entwicklung kritischer Infrastruktursoftware verantwortlich sind, bis 2025 standardisierte SBOMs benötigen. Die Erstellung einer SBOM beginnt mit der Auswahl eines Tools, das mit den Standards und Zielen Ihres Unternehmens übereinstimmt, und der Festlegung der Phasen des Software-Build-Lebenszyklus, in denen dies erfolgen soll Wenden Sie das SBOM an, bestätigen Sie, dass es dem Format entspricht, und führen Sie einen Schwachstellenscan durch. Die Erstellung einer SBOM ist ein heikler und komplizierter Prozess. In diesem Artikel erfahren Sie, wann eine SBOM-Generierung erforderlich ist und wie Sie diese für Ihre Software generieren.

Wann sollte eine Software-Stückliste erstellt werden?

Die Erstellung einer Software-Stückliste (Software Bill of Materials, SBOM) ist für die Sicherung Ihrer Software-Builds sowie Ihrer gesamten Software-Lieferkette von entscheidender Bedeutung. Die SBOM-Generierung kann in verschiedene Phasen des Erstellungsprozesses Ihrer Software integriert werden. Sie können eine Stückliste mithilfe des Quellcodes während der Erstellungszeit, zur Laufzeit oder während der Forensik der Software erstellen. Von all diesen empfehlen Experten die Erstellung einer SBOM während der Build-Zeit. Das liegt daran, dass SBOM-Generatoren zur Erstellungszeit genauer sind und eine vollständigere Liste von Abhängigkeiten generieren. Da dies jedoch nicht immer praktikabel ist, kann das SBOM zu jedem anderen Zeitpunkt während des DevOps-Lebenszyklus generiert werden.

Es ist zu beachten, dass die Art des zu verwendenden SBOM-Generierungstools davon abhängt, in welcher Phase des DevOps-Lebenszyklus die SBOM-Dokumentation generiert wird. Im Folgenden sind die verschiedenen Phasen aufgeführt, in denen SBOMs während des Build-Lebenszyklus generiert werden können. Jede Periode hat unterschiedliche Vorteile und Kompromisse. Es ist am besten, die Zielgruppe und den Anwendungsfall für die von Ihnen generierten SBOM-Daten zu verstehen und einen Ansatz zu wählen, der für Sie das beste Ergebnis liefert.

Im Quellcode-Stadium

Durch die Untersuchung der Artefakte und aller zugehörigen Quellen wie Manifeste, Metadaten und Sperrdateien erstellen Quell- oder Binärtools im Quellcodestadium eine Software-Stückliste. In dieser Phase können Sie entweder eine Softwarekomponentenanalyse oder eine Binäranalyse Ihrer Software durchführen.

Ein SCA-Tool (Software Component Analysis) dient zur Analyse einer Software und ihrer Manifestdateien, um deren Komponenten zu bestimmen. Binäre Analysetools hingegen analysieren die Software-Metadaten und erstellen Artefaktinformationen, um eine SBOM zu generieren. Beispiele für Analysetools, die in dieser Phase verwendet werden, sind CycloneDX, It-Depends, Fossa, AppSonar, Cybellum, Black Duck und Fortress.

Sie können einen Schwachstellenanalysator zusammen mit einer im Quellcodestadium generierten SBOM verwenden, um frühe Schwachstellenwarnungen in der zu erstellenden Software zu erhalten. Allerdings gibt es in dieser Phase Einschränkungen für die generierten SBOMs. Zum einen sind sie nicht vollständig, da die beim Erstellen mit Abhängigkeiten generierten Informationen häufig fehlen. Darüber hinaus können sie Informationen über Komponenten enthalten, die im endgültig bereitgestellten Produkt nicht verwendet wurden.

Während der Bauzeit

Das Erstellen der SBOM zur Build-Zeit mit einem Tool, das auf das Build-System zugreift, verfügt über genaueste Kenntnisse darüber, was in einer Binärdatei enthalten ist, einschließlich transitiver und nicht angehefteter Abhängigkeiten. Dies wird durch die unterstützt  NTIA-Studie zur SBOM-Produktion und -Bereitstellung von Softwarelieferanten.

Die NTIA empfiehlt die Erstellung einer SBOM für jede neue Komponentenversion. Dies bedeutet, dass jedes Mal, wenn Sie eine neue Version Ihrer Software aktualisieren oder veröffentlichen, eine neue SBOM erstellt werden muss. Lieferanten müssen außerdem immer dann eine neue SBOM erstellen, wenn sie einen Fehler in der vorherigen Version entdecken oder neue Informationen über ihre Softwarekomponenten erhalten, die zuvor nicht dokumentiert wurden.

Das Generieren Ihrer SBOM während der Build-Zeit erfordert die Verwendung eines Plugins, das mit der nativen Umgebung funktioniert, mit der Sie Ihre Software erstellen. Die meisten Entwicklungsumgebungen verfügen über Plugins, die sich in das Abhängigkeitsmanagementsystem integrieren lassen, um automatisch eine SBOM zu generieren. Beispiele für Build-Time-SBOM-Generatoren sind SPDX, das CycloneDX Maven-Plugin und OWASPs Dependency-Track-Check.

Obwohl Build-Time-SBOM-Generatoren die umfassendsten und genauesten sind, sind sie im Vergleich zu anderen Methoden schwieriger einzurichten. Außerdem funktioniert diese Methode bei einigen Build-Systemen nicht und Sie können diese Methode nicht für ältere Produkte verwenden. 

SBOM zur Laufzeit generieren

Ein SBOM-Generator, der zur Laufzeit arbeitet, soll die Bibliotheken erfassen, die die Software, der App-Server oder die Plugins zur Laufzeit verwenden. Dieser Generatortyp beschreibt auch alle von der Software aufgerufenen Dienste sowie die Ports und aktiven Bibliotheken, auf die sie zugreift. Diese Methode zur Generierung von SBOMs ist jedoch nicht allgemein verfügbar. Außerdem gibt es keinen klaren Workflow zum Zusammenführen der mit dieser Methode generierten Daten mit der ursprünglichen SBOM-Dokumentation. Jbom und ThreatMapper sind Beispiele für Laufzeit-SBOM-Generatoren.

So erstellen Sie eine Software-Stückliste: Eine Schritt-für-Schritt-Anleitung

Das manuelle Erstellen einer Software-Stückliste ist für Entwickler zeitaufwändig und mühsam. Alle Komponenten eines Softwareprogramms auf diese Weise aufzulisten, ist meist unpraktisch. Mittlerweile stehen jedoch zahlreiche SBOM-Generierungstools zur Verfügung, die diesen Prozess vereinfachen. Wie Sie dabei vorgehen, hängt von den Standards Ihrer Organisation ab und davon, wann Sie Ihre SBOM während des Entwicklungslebenszyklus generieren möchten.

Durch die Integration von SBOM-Workflows in Software-Build-Pipelines können Sie den SBOM-Prozess automatisieren. Die Scribe-Plattform ist ein solches Tool, das die Erstellung Ihrer Software-Stückliste vereinfacht. Mit Scribe können Sie Ihre SBOM von einem Ort aus verwalten und teilen. Auf diese Weise können Sie die Integrität Ihrer Softwarekomponenten validieren und Schwachstellen in der Software-Pipeline lückenlos verfolgen. Dieser Abschnitt ist eine Schritt-für-Schritt-Anleitung zum Erstellen von Software-Stücklisten mit Scribe.

Schritt 1: Registrieren Sie sich und melden Sie sich beim Scribe Trust Hub an.

Bevor Sie beginnen, sollten Sie wissen, dass die Scribe-Plattform über eine Weboberfläche – Scribe Trust Hub – verfügt, auf die Sie über Ihren Browser zugreifen können. Der Scribe-Beweissammler läuft jedoch nur auf Linux- und Mac-Geräten. Um einen Integritätsbericht und eine SBOM mit Scribe zu generieren, müssen Sie über die Berechtigung verfügen, das Build-Skript Ihres Projekts zu ändern und den relevanten Codeausschnitt hinzuzufügen, der zum Verbinden Ihres Projekts mit Scribe erforderlich ist. Bedenken Sie, dass Scribe zwar SBOMs für Projekte generieren kann, die in jeder Programmiersprache geschrieben sind, die ein Container-Image generiert, die aktuelle Version jedoch nur für Node.js-Projekte funktioniert.

Der erste Schritt zur Integration von Scribe in Ihr Projekt ist die Registrierung im Scribe Trust Hub. Sobald Sie sich registriert und angemeldet haben, navigieren Sie zur Registerkarte „Produkte“ und klicken Sie auf „Einrichten“. Scribe bietet auf dieser Seite ein Demoprodukt an, mit dem Sie interagieren können, um sich mit der Plattform und ihrer Funktionsweise vertraut zu machen.

Schritt 2: Scribe Trust Hub integrieren

Der nächste Schritt besteht darin, Scribe mit der Continuous Integration Pipeline Ihres Projekts zu verbinden. Dadurch wird der SBOM-Generierungsprozess automatisiert. Im Allgemeinen können Sie Codefragmente von Scribe Trust Hub an zwei Punkten Ihrer CI-Pipeline hinzufügen. Sie können den Code beim Auschecken des Quellcodes oder im endgültig erstellten Image platzieren. Die erste Option wird empfohlen, ist aber nicht obligatorisch, während die zweite Option obligatorisch ist.

Das CI-Setup von Scribe funktioniert derzeit nur für Jenkins über Kubernetes und GitHub Actions. Der Prozess der Integration von Scribe für diese CI-Setups ist ähnlich. Um loszulegen, benötigen Sie die folgenden Anmeldeinformationen auf der Einrichtungsseite Ihres Scribe Hub-Produkts:

  • Produktschlüssel
  • Kunden-ID
  • Kundengeheimnis

Der Produktschlüssel variiert von Produkt zu Produkt, während die Kundenanmeldeinformationen für Ihr Konto eindeutig sind.

CI-Integration für Jenkins einrichten

Um CI-Integrationen für Jenkins einzurichten, können Sie am Checkout-Punkt und/oder nach der Erstellung eines Docker-Images das Code-Snippet hinzufügen, um „Gensbom“ (das Tool von Scribe Trust Hubs zum Sammeln von Beweisen und Generieren von SBOMs) aufzurufen.

Fügen Sie zunächst die oben genannten Anmeldeinformationen gemäß den eindeutigen Anweisungen für zu Ihrer Build-Umgebung hinzu Jenkins. Fügen Sie als Nächstes das Code-Snippet gemäß den Anweisungen zu Ihrer Pipeline hinzu .

Einrichten der CI-Integration für GitHub Actions

Der Prozess zum Einrichten der CI-Integration für GitHub Actions ähnelt dem von Jenkins. Die Hauptidee besteht darin, den Beweissammler und SBOM-Generator von Scribe als „Gensbom“ zu bezeichnen. Befolgen Sie zunächst die Anweisungen GitHub-Anweisungen , um Anmeldeinformationen für die Produkteinrichtung und das Code-Snippet gemäß den Anweisungen zur Pipeline hinzuzufügen Hier

Integration von Scribe Trust Hub mit anderen CI-Systemen

Obwohl Scribe nur native Unterstützung für Jenkins- und GitHub-Aktionen bietet, können Sie es möglicherweise auch für andere CI-Systeme verwenden. Laden Sie zunächst das Tool „Gensbom“ von Ihrer Unix-basierten Befehlszeilenschnittstelle herunter. Fügen Sie als Nächstes Ihre Produkt- und Kundenanmeldeinformationen hinzu und rufen Sie dann Scribe gensbom über Ihr Build-Skript entweder beim Checkout oder nach dem endgültig erstellten Image auf.

Schritt 3: Generieren der Software-Stückliste

Das gensbom CLI-Tool von Scribe generiert die Software Bill of Materials (SBOM) für Docker und Open Containers Images (OCI). Dieses Tool läuft nur auf Mac- oder Linux-Systemen. Die endgültige von Scribe generierte SBOM liegt im CycloneDX-JSON-Format vor, einem der standardmäßigen maschinen- und menschenlesbaren Formate, die für SBOMs anerkannt sind. Die offenen Container-Images können je nach Fall von Docker, einer lokalen Festplatte oder einer Remote-Registrierung extrahiert werden.

Obwohl es Standardeinstellungen für den Namen, das Verzeichnis und den Pfad des Bildes gibt, aus dem die SBOM generiert wird, ist es möglich, diese Standardeinstellungen bei Bedarf entsprechend zu ändern.

Schritt 4: SBOM exportieren

Mit Scribe Trust Hub können Sie im Rahmen des Validierungsprozesses Ihrer Software auch Ihre Software-Stückliste nahtlos exportieren und teilen. Die SBOM wird im CycloneDX JSON-Berichtsformat generiert und beschreibt alle Open-Source-Abhängigkeiten des analysierten Docker-Images. Sobald die SBOM generiert wurde, können Sie diese mit einem Klick exportieren. Sie finden die Schaltfläche „SBOM exportieren“ in der oberen rechten Ecke des Berichts. Klicken Sie darauf, um Ihre Software-Stücklisten zu exportieren.

Fazit

Die Erstellung einer Software-Stückliste wird zu einem immer wichtigeren Schritt zur Sicherung Ihrer Software-Lieferkette und auch für Compliance-Zwecke. Unabhängig davon, aus welchen Gründen Sie eine SBOM erstellen, bietet Scribe Trust Hub eine benutzerfreundliche und flexible Möglichkeit, den SBOM-Generierungsworkflow für jeden Ihrer Software-Builds zu automatisieren.