ZinetroN - stock.adobe.com
Mit Microsoft Salus eine Software Bill of Materials erfassen
Mit einer Software Bill of Materials lassen sich Abhängigkeiten und Komponenten von Softwareprojekten erfassen und Schwachstellen erkennen. Salus ist ein Microsoft-Tool hierfür.
Ein Software Bill of Materials (SBOM) ist ein Konzept für Softwarelieferketten. Damit sollen alle Komponenten und Module von Software erfasst werden, die zusätzlich zum eigenen Code integriert wurden.
In vielen Anwendungen sind häufig zusätzliche Komponenten enthalten, zum Beispiel auf Basis von Open Source. Das birgt Risiken, da hier Schwachstellen enthalten sein können, welche das komplette Softwareprojekt beeinflussen. Ein Beispiel ist die kritische Schwachstelle innerhalb des Java-Frameworks Log4j, das in vielen Anwendungen zum Einsatz kommt, ohne dass dies bekannt, dokumentiert und entsprechend abgesichert wurde. Unternehmen setzen daher unter Umständen eine Software mit einer Schwachstelle ein, die nicht abgesichert ist.
Was sind Gefahren einer fehlenden SBOM?
Anfällig sind Anwendungen mit einer Mischung aus proprietärem Code und Open Source. In vielen Fällen wissen Unternehmen oder Anwender nicht, welche zusätzlichen Produkte in einer Anwendung integriert sind, sodass Schwachstellen kaum oder überhaupt nicht geschlossen werden können. Wenn eine SBOM existiert, ist genau ersichtlich, welcher externer Code und welche zusätzlichen Module in einer Anwendung enthalten sind, die nicht selbst entwickelt wurden.
Die meisten Anwendungen bestehen aus einer Kombination aus eigenem Code, Drittanbieterkomponenten, APIs, Protokollen, Geschäftslogiken oder Modulen. Diese stammen aus verschiedenen Quellen und werden in Build- und Release-Pipelines zusammengefasst.
An dieser Stelle setzt SBOM an. Durch die Dokumentation aller externen Komponenten lassen sich für Softwareprojekte Stücklisten erstellen, auf deren Basis wiederum Schwachstellen identifiziert und behoben werden können. Ohne eine SBOM besteht ein unkalkulierbares Risiko bei Unternehmen, da für Anwendungen nicht klar ist, ob gefährdete Komponenten enthalten sind oder nicht.
Microsoft Salus unterstützt bei Erstellung einer SBOM
Mit dem Open Source Tool Microsoft Salus lassen sich SBOMs für eigene Produkte erstellen. Das Tool arbeitet plattformübergreifend und lässt sich auf Windows, Linux und macOS nutzen. Zum Einsatz kommt das Format Software Package Data Exchange (SPDX). Dieses nutzen auch andere Tools in diesem Bereich. Dadurch kann Salus SBOM-Dateien von anderen Tools einbinden und in die eigene Liste integrieren. Das ist bei Teilprojekten sinnvoll, für die es bereits eine SBOM gibt.
Salus kann in verschiedene Repositories integriert werden und unterstützt verschiedene Paketmanager, zum Beispiel NPM, NuGet, PyPI, CocoaPods, Maven, Golang, Rust Crates, RubyGems, Linux-Pakete in Containern, Gradle, Ivy und öffentliche GitHub-Repositories.
Das Tool erstellt eine Liste der Dateien, aus denen die überprüfte Software besteht. Für die Dateien speichert Salus auch Eigenschaften, wie die Hashwerte der Inhalte (SHA-1, SHA-256). In einem eigenen Abschnitt ist eine Liste der Pakete zu finden, die bei der Erstellung der Software verwendet wurden. Wichtig ist, dass für jedes Paket zusätzliche Eigenschaften wie Name, Version, Lieferant, Hashes (SHA-1, SHA-256) und eine Paket-URL (purl) sowie Software-Identifikator enthalten sind. Das vermeidet Sicherheitslücken durch den Einsatz von unbekannter Software in unbekannten Versionen. Dazu kommt eine Liste der Beziehungen zwischen den Elementen der Software. Mit Salus kann somit ein vollständiger Abhängigkeitsbaum erstellt werden.
Um die Dokumentation zu erstellen, prüft das Tool die Projektdaten und die darin enthaltenen Pakete. Mit Component Detection findet das Tool die einzelnen Komponenten des Projektes.
Salus herunterladen und eigene SBOM erstellen
Microsoft Salus steht kostenlos zur Verfügung, lässt sich ohne Voraussetzungen als einzelne Datei herunterladen und installieren, und arbeitet mit anderen Tools durch die Unterstützung von SPDX zusammen. Der Download von Salus erfolgt in der PowerShell in Windows über folgenden Befehl:
Invoke-WebRequest -Uri "https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-win-x64.exe" -OutFile "sbom-tool.exe"
Die Installation auf Linux startet mit folgendem Befehl:
curl -Lo sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
chmod +x sbom-tool
Nach dem Download steht das Tool als CLI über sbom-tool.exe zur Verfügung. Beim Starten ohne Parameter zeigt das Tool eine Hilfe mit den verschiedenen Optionen an, die zur Verfügung stehen. Die Syntax ist:
sbom-tool generate -b <drop path> -bc <build components path> -pn <package name> -pv <package version> -ps <package supplier> -nsb <namespace uri base>
Wichtig ist die Angabe des drop path. Das Tool hasht alle Dateien in diesem Bereich und fügt sie im Abschnitt Dateiender SBOM hinzu. Das Tool durchsucht den angegebenen Ordner nach Dateien in der Form *.csproj oder package.json. Dadurch lässt sich erkennen, welche Komponenten zur Erstellung verwendet werden.
Microsoft Salus in CI/CD-Pipelines einbinden
Sinnvoll ist ein Tool wie Salus innerhalb einer CI/CD-Pipeline. Mit etwas Konfigurationsarbeit kann das SBOM-Tool mit GitHub Actions und mit Azure DevOps Pipelines zusammenarbeiten.
Im Rahmen der Ausführung kann Salus die Liste der vorhandenen Komponenten für eine SBOM validieren oder die SBOM erstellen. Die dazu notwendigen Parameter sind in der Hilfe ausführlich erklärt. Für beide Möglichkeiten zeigt das Tool in jeweils eigenen Abschnitten an, welche Parameter notwendig sind.
Für das Erstellen einer SBOM sind zum Beispiel das bereits erwähnte Drop-Verzeichnis und der Pfad der verwendeten Komponenten wichtig. Das ist auch beim Einsatz mit CI/CD relevant. Die Optionen dazu sind -BuildDropPath und -BuildComponentPath.
Die Verwendung des Tools wird im folgenden YouTube-Video ausführlich gezeigt: