Unterabschnitte von Für Konsumenten
Stücklisten / BOMs
Stücklisten (Bills of Materials, BOMs) stehen im Mittelpunkt sowohl der Funktionalität als auch des Namens von BOMnipotent. Eine BOM ist eine Liste aller Komponenten, die ein Produkt ausmachen. Im Bereich der Cybersicherheit ist die bekannteste Variante die Software-Stückliste (Software Bill of Materials, SBOM), aber BOMs ermöglichen auch allgemeinere Überlegungen.
Auflistung
Das Ausführen des Befehls
bomnipotent_client bom list
listet alle für Sie zugänglichen BOMs auf:
╭─────────────┬─────────┬─────────────────────────┬───────────┬────────────╮
│ Product │ Version │ Timestamp │ TLP │ Components │
├─────────────┼─────────┼─────────────────────────┼───────────┼────────────┤
│ BOMnipotent │ 1.0.0 │ 2025-02-01 03:31:50 UTC │ TLP:WHITE │ 363 │
│ BOMnipotent │ 1.0.1 │ 2025-02-01 03:31:50 UTC │ TLP:WHITE │ 363 │
│ vulny │ 0.1.0 │ 2025-02-02 06:51:40 UTC │ TLP:AMBER │ 63 │
╰─────────────┴─────────┴─────────────────────────┴───────────┴────────────╯
BOMs mit der Klassifizierung TLP:WHITE / TLP:CLEAR sind für alle sichtbar. In diesem Beispiel hat Ihr Konto Zugriff auf eine BOM mit dem Label TLP:AMBER.
Herunterladen
Um eine lokale Kopie aller BOMs zu erstellen, die der Server für Sie bereitstellt, führen Sie folgenden Befehl aus:
bomnipotent_client bom download ./boms
[INFO] Storing BOMs under ./boms
Dies speichert die BOMs im angegebenen Ordner ("./boms" in diesem Beispiel). Falls der Ordner noch nicht existiert, wird er automatisch erstellt. Die BOMs werden in Dateien gespeichert, die folgendem Namensschema folgen: {Produktname}_{Produktversion}.cdx.json
.
Um inkonsistentes Verhalten zwischen verschiedenen Betriebssystemen zu vermeiden, werden der Name und die Version des Produkts in Kleinbuchstaben umgewandelt, und die meisten Sonderzeichen durch einen Unterstrich ‘_’ ersetzt. Dadurch könnte es theoretisch vorkommen, dass verschiedene Produkte zum selben Dateinamen führen. In einem solchen Fall zeigt BOMnipotent eine Warnung an, anstatt die Datei stillschweigend zu überschreiben.
./boms/
├── bomnipotent_1.0.0.cdx.json
├── bomnipotent_1.0.1.cdx.json
└── vulny_0.1.0.cdx.json
1 directory, 3 files
Bevor BOMnipotent Client Dateien zum Download anfordert, erstellt er eine Inventarliste der bereits im Ordner vorhandenen BOMs und lädt nur die fehlenden Dateien herunter.
BOMnipotent überschreibt existierende Dateien nicht, selbst falls sie sich auf dem Server geändert haben. Stattdessen gibt es eine Warnung aus:
[WARN] File ./boms/white/2023/wid-sec-w-2023-0001.json already exists.
Use the "--overwrite" flag to replace it.
Skipping download to prevent data loss.
Sie können BOMnipotentn mitteilen, dass Sie die Datei wirklich gern überschrieben hätten, indem Sie die “–overwrite” flag nutzen:
bomnipotent_client bom download ./boms --overwrite
bomnipotent_client bom download ./boms -o
Anzeigen
Sie können den Inhalt einer einzelnen BOM direkt in die Konsole ausgeben lassen, indem Sie folgendes rufen:
bomnipotent_client bom get <NAME> <VERSION>
{
"$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
"bomFormat": "CycloneDX",
"specVersion": "1.6",
"serialNumber": "urn:uuid:60d5a033-6d54-4ac4-a5fa-824d0b04c718",
"version": 1,
"metadata": {
"timestamp": "2025-02-23T07:23:33+01:00",
"tools": {
"components": [
...
Das ist besonder praktisch falls Sie den Inhalt der BOM in einem Skript weiterverwenden wollen. Falls sie zum Beispiel nach
Schwachstellen in der Lieferkette
schauen wollen, können sie folgendes rufen:
bomnipotent_client bom get <NAME> <VERSION> | grype
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
ring 0.17.10 0.17.12 rust-crate GHSA-4p46-pwfr-66x6 Medium
Komponentenliste
Der Zweck eines Stücklistenverzeichnisses (Bill of Materials, BOM) besteht darin, die Komponenten eines Produkts zu katalogisieren. BOMnipotent Client kann verwendet werden, um alle Pakete usw. aufzulisten, die in einem Produkt enthalten sind, welches über Ihr Benutzerkonto zugänglich ist. Rufen Sie einfach den Client mit den Argumenten “component”, “list” und anschließend dem Namen und der Version des Produkts auf:
bomnipotent_client component list vulny 0.1.0
╭──────────────┬─────────┬─────────┬───────────────────────────┬───────────────────────────╮
│ Name │ Version │ Type │ CPE │ PURL │
├──────────────┼─────────┼─────────┼───────────────────────────┼───────────────────────────┤
│ aho-corasick │ 1.1.3 │ library │ cpe:2.3:a:aho-corasick:ah │ pkg:cargo/aho-corasick@1. │
│ │ │ │ o-corasick:1.1.3:*:*:*:*: │ 1.3 │
│ │ │ │ *:*:* │ │
│ aws-lc-rs │ 1.12.2 │ library │ cpe:2.3:a:aws-lc-rs:aws-l │ pkg:cargo/aws-lc-rs@1.12. │
│ │ │ │ c-rs:1.12.2:*:*:*:*:*:*:* │ 2 │
│ aws-lc-sys │ 0.25.0 │ library │ cpe:2.3:a:aws-lc-sys:aws- │ pkg:cargo/aws-lc-sys@0.25 │
│ │ │ │ lc-sys:0.25.0:*:*:*:*:*:* │ .0 │
│ │ │ │ :* │ │
│ bindgen │ 0.69.5 │ library │ cpe:2.3:a:bindgen:bindgen │ pkg:cargo/bindgen@0.69.5 │
│ │ │ │ :0.69.5:*:*:*:*:*:*:* │ │
...
Diese Ausgabe ist in erster Linie für den Menschen lesbar. Die Verwendung der Option --output=raw
macht sie prinzipiell maschinenlesbar, aber
das vollständige Herunterladen der BOM
ist höchstwahrscheinlich vorzuziehen, anstatt diese Tabellenausgabe zu parsen.
Ein Anbieter eines Produkts sollte die BOM eines Produkts regelmäßig auf Schwachstellen überprüfen, beispielsweise mit Tools wie
grype
. Der
nächste Abschnitt
erklärt, wie Sie als Nutzer eines Produkts auf diese Listen zugreifen können.
Sicherheitslücken
Um eine Liste bekannter Sicherheitslücken anzuzeigen, die ein Produkt betreffen, rufen Sie “vulnerability”, “list” sowie den Namen und die Version des Produkts auf:
bomnipotent_client vulnerability list vulny 0.1.0
╭─────────┬─────────┬─────────────────────┬───────────────────────────┬───────┬──────────┬─────────┬─────────────────╮
│ Product │ Version │ Vulnerability │ Description │ Score │ Severity │ TLP │ CSAF Assessment │
├─────────┼─────────┼─────────────────────┼───────────────────────────┼───────┼──────────┼─────────┼─────────────────┤
│ vulny │ 0.1.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable │ │ medium │ Default │ │
│ │ │ │ panic in `Acceptor::accep │ │ │ │ │
│ │ │ │ t` │ │ │ │ │
╰─────────┴─────────┴─────────────────────┴───────────────────────────┴───────┴──────────┴─────────┴─────────────────╯
Produktname und -version sind optionale positionale Argumente. Falls Sie keine Version angeben erhalten sie die Ausgabe für alle Versionen des Produktes, und falls Sie auch dieses nicht angeben, die für alle Ihnen zur Verfügung stehenden Produkte.
bomnipotent_client vulnerability list
╭─────────────┬─────────┬─────────────────────┬───────────────────────────┬───────┬──────────┬─────────┬─────────────────╮
│ Product │ Version │ Vulnerability │ Description │ Score │ Severity │ TLP │ CSAF Assessment │
├─────────────┼─────────┼─────────────────────┼───────────────────────────┼───────┼──────────┼─────────┼─────────────────┤
│ BOMnipotent │ 1.0.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable │ │ medium │ Default │ │
│ │ │ │ panic in `Acceptor::accep │ │ │ │ │
│ │ │ │ t` │ │ │ │ │
│ vulny │ 0.1.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable │ │ medium │ Default │ │
│ │ │ │ panic in `Acceptor::accep │ │ │ │ │
│ │ │ │ t` │ │ │ │ │
╰─────────────┴─────────┴─────────────────────┴───────────────────────────┴───────┴──────────┴─────────┴─────────────────╯
Die Ausgabe enthält eine ID für die Schwachstelle, eine Beschreibung sowie, und, falls verfügbar, einen
CVSS Wert
und/oder eine Schweregrad-Einstufung. Zudem enthält sie eine
TLP Klassifizierung
, welche sich von der des betroffenen Produkts ableitet, und idealerweise eine
CSAF Bewertung
durch den Anbieter.
Das CSAF-Dokument ist ein entscheidender Bestandteil, da es Ihnen als Nutzer des Produkts mitteilt, wie Sie auf diese Schwachstelle in der Lieferkette reagieren sollten. Lesen Sie den
nächsten Abschnitt
, um herauszufinden, wie Sie darauf zugreifen können.
CSAF Dokumente
Wenn eine Sicherheitslücke in einer der Komponenten eines von Ihnen genutzten Produkts bekannt wird, stellt sich eine der naheliegendsten Fragen: “Was muss ich jetzt tun?”. Das
Common Security Advisory Format (CSAF)
soll diese Frage auf automatisierte Weise beantworten. Es handelt sich um ein hauptsächlich maschinenlesbares Format zum Austausch von Sicherheitswarnungen zu Schwachstellen.
Eine der Hauptfunktionen von BOMnipotent besteht darin, die Verteilung von CSAF-Dokumenten so einfach wie möglich zu gestalten. Jede laufende Instanz des BOMnipotent-Servers fungiert als “CSAF Provider” gemäß dem
OASIS Standard
.
Auflistung
Das Ausführen des Befehls
./bomnipotent_client csaf list
gibt eine Liste aller für Sie zugänglichen CSAF-Dokumente aus.
╭───────────────┬───────────────────────────┬──────────────────────┬──────────────────────┬────────┬───────────╮
│ ID │ Title │ Initial Release │ Current Release │ Status │ TLP │
├───────────────┼───────────────────────────┼──────────────────────┼──────────────────────┼────────┼───────────┤
│ BSI-2022-0001 │ CVRF-CSAF-Converter: XML │ 2022-03-17 13:03 UTC │ 2022-07-14 08:20 UTC │ final │ TLP:WHITE │
│ │ External Entities Vulnera │ │ │ │ │
│ │ bility │ │ │ │ │
╰───────────────┴───────────────────────────┴──────────────────────┴──────────────────────┴────────┴───────────╯
Zugängliche CSAF-Dokumente sind diejenigen, die entweder mit TLP:WHITE/TLP:CLEAR, gekennzeichnet sind oder sich auf ein Produkt beziehen, für das Sie Zugriff erhalten haben.
Herunterladen
Um alle für Sie zugänglichen CSAF-Dokumente lokal zu spiegeln, führen Sie den folgenden Befehl aus:
bomnipotent_client csaf download ./csaf
[INFO] Storing CSAF documents under ./csaf
Dies speichert die CSAF-Dokumente im angegebenen Ordner ("./csaf"in diesem Beispiel). Falls der Ordner noch nicht existiert, wird die Verzeichnisstruktur automatisch erstellt. Die CSAF-Dokumente werden in Dateipfaden abgelegt, die dem Namensschema {tlp}/{initial_release_year}/{csaf_id}.json
.
Die Dateinamen der CSAF-Dokumente folgen einem vom
OASIS Standard
vorgegebenen Namensschema: Die IDs werden in Kleinbuchstaben umgewandelt, und die meisten Sonderzeichen werden durch einen Unterstrich ‘_’ ersetzt. Das bedeutet, dass theoretisch verschiedene CSAF-Dokumente zum selben Dateipfad führen könnten. In einem solchen Fall zeigt BOMnipotent einen Fehler an, anstatt eine Datei stillschweigend zu überschreiben.
./csaf/
└── white
└── 2022
└── bsi-2022-0001.json
Bevor Dateien zum Download angefordert werden, erstellt der BOMnipotent-Client eine Inventarliste der bereits im Ordner vorhandenen CSAF-Dokumente und lädt nur die fehlenden herunter.
Es ist auch möglich, eine einzelne Datei herunterzuladen, indem der Pfad als zusätzliches Argument angegeben wird:
bomnipotent_client csaf download ./csaf white/2022/bsi-2022-0001.json
BOMnipotent überschreibt existierende Dateien nicht, selbst falls sie sich auf dem Server geändert haben. Stattdessen gibt es eine Warnung aus:
[WARN] File ./csaf/white/2023/wid-sec-w-2023-0001.json already exists.
Use the "--overwrite" flag to replace it.
Skipping download to prevent data loss.
Sie können BOMnipotentn mitteilen, dass Sie die Datei wirklich gern überschrieben hätten, indem Sie die “–overwrite” flag nutzen:
bomnipotent_client csaf download ./csaf --overwrite
bomnipotent_client csaf download ./csaf -o
Anzeigen
Sie können den Inhalt eines einzelnen CSAF Dokuments direkt in die Konsole ausgeben lassen, indem Sie folgendes rufen:
bomnipotent_client csaf get <ID>
{
"document" : {
"aggregate_severity" : {
"text" : "mittel"
},
"category" : "csaf_base",
"csaf_version" : "2.0",
"distribution" : {
"tlp" : {
"label" : "WHITE",
...
Das ist besonder praktisch falls Sie den Inhalt des CSAF Dokuments in einem Skript weiterverwenden wollen.
Produktlisten
Um genau zu sehen, welche Produkte von einem CSAF Dokument behandelt werden, führen Sie den folgenden Befehl aus:
./bomnipotent_client product list
╭───────────────────────────┬────────────────┬────────────────┬───────────────┬───────────╮
│ Product │ Vulnerability │ Status │ CSAF ID │ TLP │
├───────────────────────────┼────────────────┼────────────────┼───────────────┼───────────┤
│ CSAF Tools CVRF-CSAF-Conv │ CVE-2022-27193 │ known_affected │ BSI-2022-0001 │ TLP:WHITE │
│ erter 1.0.0-alpha │ │ │ │ │
│ CSAF Tools CVRF-CSAF-Conv │ CVE-2022-27193 │ known_affected │ BSI-2022-0001 │ TLP:WHITE │
│ erter 1.0.0-dev1 │ │ │ │ │
│ CSAF Tools CVRF-CSAF-Conv │ CVE-2022-27193 │ known_affected │ BSI-2022-0001 │ TLP:WHITE │
│ erter 1.0.0-dev2 │ │ │ │ │
│ CSAF Tools CVRF-CSAF-Conv │ CVE-2022-27193 │ known_affected │ BSI-2022-0001 │ TLP:WHITE │
│ erter 1.0.0-dev3 │ │ │ │ │
│ CSAF Tools CVRF-CSAF-Conv │ CVE-2022-27193 │ known_affected │ BSI-2022-0001 │ TLP:WHITE │
│ erter 1.0.0-rc1 │ │ │ │ │
│ CSAF Tools CVRF-CSAF-Conv │ CVE-2022-27193 │ first_fixed │ BSI-2022-0001 │ TLP:WHITE │
│ erter 1.0.0-rc2 │ │ │ │ │
│ CSAF Tools CVRF-CSAF-Conv │ CVE-2022-27193 │ fixed │ BSI-2022-0001 │ TLP:WHITE │
│ erter 1.0.0-rc2 │ │ │ │ │
╰───────────────────────────┴────────────────┴────────────────┴───────────────┴───────────╯