Was wir über unsere Software wirklich wissen sollten
Software wird heute selten allein gebaut. Jede Anwendung stützt sich auf Hunderte von Bibliotheken, Frameworks und Container-Images – oft aus verschiedensten Quellen. Damit entstehen Lieferketten, die ebenso komplex wie verwundbar sind.
Spätestens seit der europäischen NIS2-Richtlinie und dem geplanten Cyber Resilience Act (CRA) ist klar: Softwarehersteller und Betreiber tragen Verantwortung für ihre gesamte Lieferkette – auch für Drittkomponenten. Das bedeutet: Transparenz ist kein Bonus mehr, sondern Pflicht.
Ich wollte herausfinden, wie weit man mit freien Werkzeugen kommt, um diese Transparenz selbst herzustellen – und wie praktikabel das im Alltag wirklich ist.
Hintergrund: SBOMs, CVEs und Open-Source-Tools
Eine Software Bill of Materials (SBOM) ist im Kern eine strukturierte Liste aller Bestandteile einer Anwendung. Sie dokumentiert Herkunft, Version, Lizenz und Prüfsumme jeder Komponente – ähnlich wie eine Zutatenliste.
{
"components": [
{ "name": "rails", "version": "7.0.8", "licenses": ["MIT"] },
{ "name": "pg", "version": "1.5.3", "licenses": ["BSD-2-Clause"] }
]
}
Auch Sicherheitslücken (CVEs) spielen in diesem Kontext eine zentrale Rolle. Über CVE-Datenbanken lassen sich bekannte Schwachstellen den in einer SBOM genannten Komponenten zuordnen.
Jede CVE ist eine eindeutige Referenznummer für eine dokumentierte Sicherheitslücke. Sie enthält:
- eine ID (z. B.
CVE-2025-46394) - eine Kurzbeschreibung
- den CVSS-Schweregrad
- Verweise auf Fixes oder Workarounds
Die Daten stammen meist aus der National Vulnerability Database (NVD).
Die Werkzeuge: Open Source für Supply-Chain-Transparenz
Für die folgenden Schritte habe ich ausschließlich freie Tools verwendet, die aktiv gepflegt werden und industrietauglich sind.
| Tool | Entwickler | Hauptzweck | Lizenz |
|---|---|---|---|
| Syft | Anchore (USA) | Erstellung von SBOMs | Apache 2.0 |
| Grype | Anchore (USA) | Schwachstellenanalyse | Apache 2.0 |
| SBOM Utility | OWASP / CycloneDX | Analyse und Abfragen von SBOMs | Apache 2.0 |
| Sunshine | CycloneDX Community | HTML-Berichte aus SBOMs | Apache 2.0 |
Praxisteil: Von der Inventarisierung bis zur Lizenzprüfung
SBOM-Erstellung mit Syft
Syft erstellt SBOMs direkt aus Container-Images oder Verzeichnissen.
git clone https://github.com/anchore/syft.git
cd syft
make build
Das Binary findet sich unter snapshot/linux-build_linux_amd64_v1/.
Beispiel:
./syft registry.example.net/v2/redmine:latest -o cyclonedx-json > redmine-sbom.json
Ausgabe:
✔ Loaded image registry.example.net/v2/redmine:latest
✔ Parsed image sha256:bfc8f1a722f068a717101e862075e565c806
✔ Cataloged contents 9ea579f7efbd873af0b37d5f2a2c2782fdbbd3e5f73
├── ✔ Packages [267 packages]
├── ✔ Executables [548 executables]
├── ✔ File metadata [6,545 locations]
└── ✔ File digests [6,545 files]
Schwachstellenanalyse mit Grype
Grype ist das Pendant zu Syft – es liest SBOMs ein und gleicht sie mit CVE-Datenbanken ab.
git clone https://github.com/anchore/grype.git
cd grype
make build
Analyse:
./grype redmine-sbom.json -o table
Beispielausgabe:
| Paket | Version | CVE | Schweregrad |
|---|---|---|---|
| imagemagick | 7.1.2.3-r0 | CVE-2014-9826 | Critical |
| busybox | 1.37.0-r19 | CVE-2025-46394 | Low |
| resolv | 0.6.0 | GHSA-xh69-987w-hrp8 | Medium |
SBOM Utility: Abfragen, Filtern, Dokumentieren
Mit dem SBOM Utility lassen sich SBOMs gezielt analysieren, ohne externe Datenbanken.
go install github.com/CycloneDX/sbom-utility@latest
Beispiele:
-
Komponentenübersicht
sbom-utility query -i redmine-sbom.json --from components --select name,version -
Nur bestimmte Komponenten (z. B. ruby)
sbom-utility query -i redmine-sbom.json --from components --where name=ruby --select name,version,licenses -
CSV-Export
sbom-utility query -i redmine-sbom.json --from components --select name,version,licenses --format json -o sbom.json jq -r '.[] | [.name, .version, (.licenses[0].license.id // "None")] | @csv' sbom.json > sbom.csv
Fazit
Die Kombination aus Syft, Grype und SBOM Utility zeigt, wie weit Open Source heute in der Software-Supply-Chain-Analyse ist – und wo ihre Grenzen liegen. Diese bewusst minimalistischen Werkzeuge sind ideal, um Transparenz zu schaffen, ohne teure Plattformen oder Cloud-Abhängigkeiten. Sie machen sichtbar, was in Containern steckt – doch die eigentliche Lieferkette beginnt schon davor, bei den Frameworks, Bibliotheken und Compilern, aus denen statische Binaries entstehen.
In meinen Artikeln
zeige ich, wie sich SBOM-Konzepte auch innerhalb von Compiler-Sprachen anwenden lassen – also dort, wo die eigentlichen „Zutatenlisten“ einer Software entstehen.
Open Source liefert heute alle Bausteine, um die eigene Lieferkette nachvollziehbar und prüfbar zu machen. Der nächste Schritt besteht darin, diese Transparenz konsequent in den Entwicklungsprozess zu integrieren – vom Build bis zum Release. Denn nur wer weiß, woraus seine Software besteht, kann auch für ihre Sicherheit Verantwortung übernehmen.