Wissen · SBOM
SBOM ohne Quellcode: was das Binary über ein C-Projekt verrät
Ben Plannet, Co-Founder und CTO der LegacyMind GmbH · Stand 5. Oktober 2026
Kurz beantwortet
Eine SBOM lässt sich auch ohne Quellcode erstellen, direkt aus der ausgelieferten Firmware. Auch ein reines C-Projekt ohne Paketmanager hinterlässt im Binary Spuren seiner Bibliotheken: Funktionsnamen, Versionsdatensätze, Quellpfade und Versionskennungen. Aus einem ELF oder AXF lässt sich davon deutlich mehr lesen als aus einem BIN.
Warum C-Projekte schwer zu inventarisieren sind
Bei Node, Python oder Java steht in einer Lockdatei, welche Pakete in welcher Version verbaut sind. Ein SBOM-Werkzeug liest diese Datei. Ein C-Projekt hat so etwas meist nicht: Bibliotheken liegen als kopierter Quellcode im Projekt, kommen aus einem Hersteller-SDK oder als vorkompilierte Bibliothek. Werkzeuge, die nur Manifeste lesen, finden dann wenig oder nichts.
Der Linker fügt alles zu einem Binary zusammen. Genau dort lassen sich die Bibliotheken wiederfinden.
Was das Binary verrät
| Spur im Binary | Was sie belegt |
|---|---|
| Funktionsnamen (Symboltabelle) | Welche Bibliothek gelinkt ist, etwa mbedtls_, lwip_, xTask |
| Quellpfade (Debug-Informationen) | Herkunft und oft die Version im Ordnernamen |
| Versionsdatensätze | Version, die eine Bibliothek selbst ablegt, etwa RTX5 |
| Versionskennungen als Text | Version, wo die Bibliothek eine einkompiliert |
| Abschnitt .comment | Compiler und Version |
| Paketdatenbanken (bei Linux) | Pakete mit Version aus dpkg, opkg, apk oder rpm |
Was ohne Quellcode offen bleibt
Ein Binary belegt, was gelinkt wurde. Es belegt nicht immer die Version: Bibliotheken ohne Versionskennung und ohne Quellpfad lassen sich benennen, aber nicht datieren. Auch Prüfsummen einzelner Quelldateien lassen sich aus dem fertigen Binary nicht zurückrechnen. Eine ehrliche SBOM aus dem Binary lässt eine Version dann leer, statt sie zu raten, und sagt, woher jede genannte Version stammt.
Die TR-03183-2 des BSI verlangt, dass jede Komponente, die der Linker verwendet hat, in der SBOM steht, statisch wie dynamisch gelinkt. Angaben, die beim Zusammenbauen verloren gehen, etwa Hash oder Dateiname einer einzelnen Bibliothek, werden nach der TR weggelassen. Wer nur Manifeste ausliest, übersieht diese Komponenten.
Was LegacyMind dabei automatisch macht
Builds für Mikrocontroller aus Keil MDK, IAR oder GNU Arm. Gelesen werden CMSIS-Packs mit Version aus der Paketbeschreibung des Pack-Herstellers, Versionsdatensätze im Binary (etwa RTX5) und Versionen aus Quellpfaden (FreeRTOS, lwIP, mbedTLS, STM32Cube). Dazu Härtung (Stack-Canary, MPU, Privilegientrennung) und eingebettete Schlüssel.
Ein BIN ohne Dateisystem wird Byte für Byte gelesen. Komponenten werden dort benannt, wo die Bytes sie belegen, etwa über Versionskennungen von TLS-Bibliotheken.
Das Image, wie Sie es ausliefern: Archive, Roh-Images, Dateisysteme (SquashFS, JFFS2, CramFS, UBI, YAFFS2, ext), Kernel- und Boot-Images einschließlich ARM-zImage, Update-Container und VM-Festplatten. Die Analyse packt bis zum Root-Dateisystem aus und liest Paketdatenbanken (dpkg, opkg, apk, rpm), Binärdateien und den Kernel.
Die Konformitätsaussage treffen Sie. Diese Seite und unsere Berichte liefern technische Feststellungen als Grundlage dafür.
Häufige Fragen
- Kann man aus einem Keil- oder IAR-Build eine SBOM erzeugen?
- Ja. Das AXF von Keil und das .out von IAR sind ELF-Dateien. Aus Symbolen, Quellpfaden und Versionsdatensätzen lassen sich Bibliotheken und viele Versionen bestimmen.
- Ist eine SBOM aus dem Binary genauer als eine aus dem Quellcode?
- Sie beschreibt etwas anderes: was tatsächlich ausgeliefert wird. Eine SBOM aus dem Quellcode kann Bibliotheken nennen, die der Linker gar nicht übernommen hat, und eine aus dem Binary kann Versionen nicht belegen, die nirgends einkompiliert sind.
- Welches Format hat die SBOM?
- Üblich sind CycloneDX und SPDX. LegacyMind exportiert CycloneDX 1.6 JSON, mit der Angabe, wo jede Komponente gelesen wurde.
Quellen
Weiterlesen
Prüfen Sie Ihr eigenes Image
Der CRA-Readiness-Check ist kostenlos: ein Firmware-Image oder eine Lieferanten-SBOM, ein Befundbericht.