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.
Auflisten
Das Ausführen des folgenden Befehls listet alle für Sie zugänglichen BOMs auf:
Eingabe
bomnipotent_client bom list
Ausgabe
[INFO]
╭────────────────────────┬─────────┬─────────────────────────┬───────────┬────────────╮
│ Product │ Version │ Timestamp │ TLP │ Components │
├────────────────────────┼─────────┼─────────────────────────┼───────────┼────────────┤
│ Best Project │ 3.1.4 │ 2025-01-01 10:11:12 UTC │ TLP:GREEN │ 75 │
│ Your Project │ 1.0.0 │ 2025-01-01 10:11:12 UTC │ Default │ 75 │
│ Your Project │ 1.1.0 │ 2025-01-01 10:11:12 UTC │ Default │ 75 │
│ Your Project Container │ 1.2.3 │ 2025-01-01 10:11:12 UTC │ TLP:WHITE │ 939 │
╰────────────────────────┴─────────┴─────────────────────────┴───────────┴────────────╯
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.
Der Befehlt akzeptiert die optionalen Filter “name” und “version”:
Eingabe (lange Variante)
bomnipotent_client bom list --name="Your Project" --version="1.0.0"
Eingabe (kurze Variante)
bomnipotent_client bom list -n "Your Project" -v "1.0.0"
Ausgabe
[INFO]
╭──────────────┬─────────┬─────────────────────────┬─────────┬────────────╮
│ Product │ Version │ Timestamp │ TLP │ Components │
├──────────────┼─────────┼─────────────────────────┼─────────┼────────────┤
│ Your Project │ 1.0.0 │ 2025-01-01 10:11:12 UTC │ Default │ 75 │
╰──────────────┴─────────┴─────────────────────────┴─────────┴────────────╯
Herunterladen
Um eine lokale Kopie aller BOMs zu erstellen, die der Server für Sie bereitstellt, führen Sie folgenden Befehl aus:
Eingabe
bomnipotent_client bom download /home/boms
Ausgabe
[INFO] Storing BOMs under /home/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.
Eingabe
Ausgabe
/home/boms/
|-- best_project_3.1.4.cdx.json
|-- your_project_1.0.0.cdx.json
|-- your_project_1.1.0.cdx.json
`-- your_project_container_1.2.3.cdx.json
1 directory, 4 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:
Eingabe
bomnipotent_client bom download /home/boms
Ausgabe
[INFO] Storing BOMs under /home/boms
[WARN] File /home/boms/best_project_3.1.4.cdx.json already exists.
The existing BOM doc has name 'BEST%PROJECT' and version '3.1.4' while the new one has name 'Best Project' and version '3.1.4'.
Note that to avoid shenangians with the filesystem, both are mapped to the same filename 'best_project_3.1.4.cdx.json'.
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:
Eingabe (lange Variante)
bomnipotent_client bom download /home/boms --overwrite
Eingabe (kurze Variante)
bomnipotent_client bom download /home/boms -o
Ausgabe
[INFO] Storing BOMs under /home/boms
[INFO] Overwriting existing BOM document at '/home/boms/best_project_3.1.4.cdx.json'.
Analog zum list
Befehl akzeptiert der download Befehl die Filter “name” und “version”, sodass nur ein Teil der BOMs heruntergeladen wird:
Eingabe (lange Variante)
bomnipotent_client bom download /home/boms --name="Your Project" --version="1.0.0"
Eingabe (kurze Variante)
bomnipotent_client bom download /home/boms -n "Your Project" -v "1.0.0"
Ausgabe
[INFO] Storing BOMs under /home/boms
Anzeigen
Sie können den Inhalt einer einzelnen BOM direkt in die Konsole ausgeben lassen, indem Sie folgendes rufen:
Eingabe
bomnipotent_client bom get "Your Project" "1.0.0" | grep -v "serialNumber" | head -n 16
Ausgabe
{
"$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
"bomFormat": "CycloneDX",
"specVersion": "1.6",
"version": 1,
"metadata": {
"timestamp": "2025-01-01T10:11:12Z",
"tools": {
"components": [
{
"type": "application",
"author": "anchore",
"name": "syft",
"version": "1.28.0"
}
]
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:
Eingabe
bomnipotent_client bom get "Your Project" "1.0.0" | grype
Ausgabe
NAME INSTALLED FIXED IN TYPE VULNERABILITY SEVERITY EPSS RISK
rustls 0.23.15 0.23.18 rust-crate GHSA-qg5g-gv98-5ffh Medium N/A N/A
Existenz
Der Sub-Befehl "exist" prüft, wie viele Einträge auf dem Server mit bestimmten Filtern übereinstimmt. Er ist für alle Befehle verfügbar, die den "list" Sub-Befehl akzeptieren, und akzeptiert dieselben Filter.
Basierend auf dem Ausgabeformat gibt der Client Folgendes aus:
- Normaler Modus: Ein Satz, der die Anzahl der gefundenen Objekte enthält.
- code: Den String "200", falls mindestens ein Element gefunden wurde, oder "404", falls keine gefunden wurden.
- raw: Die Anzahl der Einträge, die gefunden wurden.
Eingabe (lange Variante)
bomnipotent_client bom exist --name="Your Project" --version="1.0.0"
Eingabe (kurze Variante)
bomnipotent_client bom exist -n "Your Project" -v "1.0.0"
Ausgabe
[INFO] The server contains 1 BOM(s) matching the filters.
Komponenten
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:
Eingabe
bomnipotent_client component list "Your Project" "1.0.0" | awk 'NR <= 16'
Ausgabe
[INFO]
╭────────────────────────────┬────────────────────────────┬─────────┬────────────────────────────┬────────────────────────────╮
│ Name │ Version │ Type │ CPE │ PURL │
├────────────────────────────┼────────────────────────────┼─────────┼────────────────────────────┼────────────────────────────┤
│ /home/your_project/Cargo.l │ │ file │ │ │
│ ock │ │ │ │ │
│ aho-corasick │ 1.1.3 │ library │ cpe:2.3:a:aho-corasick:aho │ pkg:cargo/aho-corasick@1.1 │
│ │ │ │ -corasick:1.1.3:*:*:*:*:*: │ .3 │
│ │ │ │ *:* │ │
│ aws-lc-rs │ 1.13.1 │ library │ cpe:2.3:a:aws-lc-rs:aws-lc │ pkg:cargo/aws-lc-rs@1.13.1 │
│ │ │ │ -rs:1.13.1:*:*:*:*:*:*:* │ │
│ aws-lc-sys │ 0.29.0 │ library │ cpe:2.3:a:aws-lc-sys:aws-l │ pkg:cargo/aws-lc-sys@0.29. │
│ │ │ │ c-sys:0.29.0:*:*:*:*:*:*:* │ 0 │
│ bindgen │ 0.69.5 │ library │ cpe:2.3:a:bindgen:bindgen: │ pkg:cargo/bindgen@0.69.5 │
│ │ │ │ 0.69.5:*:*:*:*:*:*:* │ │
│ bitflags │ 2.9.1 │ library │ cpe:2.3:a:bitflags:bitflag │ pkg:cargo/bitflags@2.9.1 │
Der Befehl akzeptiert die optionalen Filter “name”, “version”, “type”, “cpe” und “purl” (der Kürze zuliebe hier nicht alle genutzt):
Eingabe (lange Variante)
bomnipotent_client component list "Your Project" "1.0.0" --name=aho-corasick --version=1.1.3 --type=library
Eingabe (kurze Variante)
bomnipotent_client component list "Your Project" "1.0.0" -n aho-corasick -v 1.1.3 -t library
Ausgabe
[INFO]
╭──────────────┬─────────┬─────────┬────────────────────────────┬────────────────────────────╮
│ Name │ Version │ Type │ CPE │ PURL │
├──────────────┼─────────┼─────────┼────────────────────────────┼────────────────────────────┤
│ aho-corasick │ 1.1.3 │ library │ cpe:2.3:a:aho-corasick:aho │ pkg:cargo/aho-corasick@1.1 │
│ │ │ │ -corasick:1.1.3:*:*:*:*:*: │ .3 │
│ │ │ │ *:* │ │
╰──────────────┴─────────┴─────────┴────────────────────────────┴────────────────────────────╯
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
Auflisten
Um eine Liste bekannter, Ihnen zugänglicher Sicherheitslücken anzuzeigen, rufen Sie:
Eingabe
bomnipotent_client vulnerability list
Ausgabe
[INFO]
╭──────────────┬─────────────────┬─────────────────────┬────────────────────────────┬───────┬──────────┬───────────┬────────────────────────────╮
│ Product Name │ Product Version │ Vulnerability │ Description │ Score │ Severity │ TLP │ CSAF Assessments │
├──────────────┼─────────────────┼─────────────────────┼────────────────────────────┼───────┼──────────┼───────────┼────────────────────────────┤
│ Best Project │ 3.1.4 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable p │ │ medium │ TLP:GREEN │ │
│ │ │ │ anic in `Acceptor::accept` │ │ │ │ │
│ Your Project │ 1.0.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable p │ │ medium │ Default │ known_affected, according │
│ │ │ │ anic in `Acceptor::accept` │ │ │ │ to ghsa-qg5g-gv98-5ffh_adv │
│ │ │ │ │ │ │ │ isory │
│ Your Project │ 1.1.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable p │ │ medium │ Default │ fixed, according to ghsa-q │
│ │ │ │ anic in `Acceptor::accept` │ │ │ │ g5g-gv98-5ffh_advisory, re │
│ │ │ │ │ │ │ │ commended, according to gh │
│ │ │ │ │ │ │ │ sa-qg5g-gv98-5ffh_advisory │
╰──────────────┴─────────────────┴─────────────────────┴────────────────────────────┴───────┴──────────┴───────────┴────────────────────────────╯
Die Ausgabe enthält eine ID für die Sicherheitslücke, 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.
Die Liste kann nach Name und/oder Version des betroffenen Produkts gefiltert werden:
Eingabe (lange Variante)
bomnipotent_client vulnerability list --name="Your Project" --version="1.0.0"
Eingabe (kurze Variante)
bomnipotent_client vulnerability list -n "Your Project" -v "1.0.0"
Ausgabe
[INFO]
╭──────────────┬─────────────────┬─────────────────────┬────────────────────────────┬───────┬──────────┬─────────┬────────────────────────────╮
│ Product Name │ Product Version │ Vulnerability │ Description │ Score │ Severity │ TLP │ CSAF Assessments │
├──────────────┼─────────────────┼─────────────────────┼────────────────────────────┼───────┼──────────┼─────────┼────────────────────────────┤
│ Your Project │ 1.0.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable p │ │ medium │ Default │ known_affected, according │
│ │ │ │ anic in `Acceptor::accept` │ │ │ │ to ghsa-qg5g-gv98-5ffh_adv │
│ │ │ │ │ │ │ │ isory │
╰──────────────┴─────────────────┴─────────────────────┴────────────────────────────┴───────┴──────────┴─────────┴────────────────────────────╯
Um nur diejenigen Sicherheitslücken anzuzeigen, welche noch nicht durch ein CSAF Advisory abgedeckt sind, rufen Sie:
Eingabe (lange Variante)
bomnipotent_client vulnerability list --unassessed
Eingabe (kurze Variante)
bomnipotent_client vulnerability list -u
Ausgabe
[INFO]
╭──────────────┬─────────────────┬─────────────────────┬────────────────────────────┬───────┬──────────┬───────────┬──────────────────╮
│ Product Name │ Product Version │ Vulnerability │ Description │ Score │ Severity │ TLP │ CSAF Assessments │
├──────────────┼─────────────────┼─────────────────────┼────────────────────────────┼───────┼──────────┼───────────┼──────────────────┤
│ Best Project │ 3.1.4 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable p │ │ medium │ TLP:GREEN │ │
│ │ │ │ anic in `Acceptor::accept` │ │ │ │ │
╰──────────────┴─────────────────┴─────────────────────┴────────────────────────────┴───────┴──────────┴───────────┴──────────────────╯
[ERROR] Found 1 unassessed vulnerabilities.
Das Verhalten ist hier besonders: Falls es unbehandelte Sicherheitslücken gibt, gibt der Client einen Fehlercode zurück. Das dient dazu, die Integration mit Skripten zu erleichtern, welche regelmäßig auf neue Sicherheitslücken prüfen, wie es zum Beispiel im Abschnitt über CI/CD
beschrieben ist.
Es ist auch möglich, lediglich die Sicherheitslücken aufzulisten, welche bereits mit einem Advisory verknüpft sind, allerdings legt der Client hier kein besonderes Verhalten an den Tag:
Eingabe (lange Variante)
bomnipotent_client vulnerability list --unassessed=false
Eingabe (kurze Variante)
bomnipotent_client vulnerability list -u false
Ausgabe
[INFO]
╭──────────────┬─────────────────┬─────────────────────┬────────────────────────────┬───────┬──────────┬─────────┬────────────────────────────╮
│ Product Name │ Product Version │ Vulnerability │ Description │ Score │ Severity │ TLP │ CSAF Assessments │
├──────────────┼─────────────────┼─────────────────────┼────────────────────────────┼───────┼──────────┼─────────┼────────────────────────────┤
│ Your Project │ 1.0.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable p │ │ medium │ Default │ known_affected, according │
│ │ │ │ anic in `Acceptor::accept` │ │ │ │ to ghsa-qg5g-gv98-5ffh_adv │
│ │ │ │ │ │ │ │ isory │
│ Your Project │ 1.1.0 │ GHSA-qg5g-gv98-5ffh │ rustls network-reachable p │ │ medium │ Default │ fixed, according to ghsa-q │
│ │ │ │ anic in `Acceptor::accept` │ │ │ │ g5g-gv98-5ffh_advisory, re │
│ │ │ │ │ │ │ │ commended, according to gh │
│ │ │ │ │ │ │ │ sa-qg5g-gv98-5ffh_advisory │
╰──────────────┴─────────────────┴─────────────────────┴────────────────────────────┴───────┴──────────┴─────────┴────────────────────────────╯
Das CSAF-Dokument ist ein entscheidender Bestandteil, da es Ihnen als Nutzer des Produkts mitteilt, wie Sie auf diese Sicherheitslücke in der Lieferkette reagieren sollten. Lesen Sie den nächsten Abschnitt
, um herauszufinden, wie Sie darauf zugreifen können.
Existenz
Der Sub-Befehl "exist" prüft, wie viele Einträge auf dem Server mit bestimmten Filtern übereinstimmt. Er ist für alle Befehle verfügbar, die den "list" Sub-Befehl akzeptieren, und akzeptiert dieselben Filter.
Basierend auf dem Ausgabeformat gibt der Client Folgendes aus:
- Normaler Modus: Ein Satz, der die Anzahl der gefundenen Objekte enthält.
- code: Den String "200", falls mindestens ein Element gefunden wurde, oder "404", falls keine gefunden wurden.
- raw: Die Anzahl der Einträge, die gefunden wurden.
Eingabe (lange Variante)
bomnipotent_client vulnerability exist --name="Your Project" --version="1.0.0"
Eingabe (kurze Variante)
bomnipotent_client vulnerability exist -n "Your Project" -v "1.0.0"
Ausgabe
[INFO] The server contains 1 vulnerabilities matching the filters.
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 Framework (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
.
Auflisten
Das Ausführen des folgenden Befehls gibt eine Liste aller für Sie zugänglichen CSAF-Dokumente aus:
Eingabe
bomnipotent_client csaf list
Ausgabe
[INFO]
╭────────────────────────────┬────────────────────────────┬─────────────────────────┬─────────────────────────┬────────┬───────────╮
│ ID │ Title │ Initial Release │ Current Release │ Status │ TLP │
├────────────────────────────┼────────────────────────────┼─────────────────────────┼─────────────────────────┼────────┼───────────┤
│ ghsa-qg5g-gv98-5ffh_adviso │ Network-reachable panic in │ 2025-01-01 10:11:12 UTC │ 2025-01-01 10:11:12 UTC │ final │ TLP:AMBER │
│ ry │ Your Product │ │ │ │ │
╰────────────────────────────┴────────────────────────────┴─────────────────────────┴─────────────────────────┴────────┴───────────╯
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.
Filtern
Der “csaf list” Befehl erlaubt eine große Anzahl an Filtern, um nur manche der CSAF Dokuemente anzuzeigen:
- id: Die ID eines CSAF Dokuments ist eindeutig, sodass dieser Filter höchstens ein Ergebnis liefern kann.
- filename: Laut dem OASIS Standard
erlauben CSAF IDs mehr Zeichen als deren Dateinamen. Aus diesem Grund ist der Dateiname eines CSAF Dokuments nicht zwingend eindeutig.
- before: Zeigt nur CSAF Dokumente, deren initiales Veröffentlichungsdatum vor einem bestimmten Zeitpunkt liegen. Die Eingabe kann in den Formaten “YYYY”, “YYYY-MM”, “YYYY-MM-DD”, “YYYY-MM-DD HH”, “YYYY-MM-DD HH:MM” oder “YYYY-MM-DD HH:MM:SS” erfolgen. Falls die Eingabe weniger als auf die Sekunde genau ist, wird der niedrigste Wert angenommen. Dies bedeutet, dass “before 2025-08” nach Dokumenten filtert, die vor 2025-08-01 00:00:00 veröffentlicht wurden. Als Zeitzohne wird UTC angenommen, es sei denn sie spezifizieren eine andere, indem Sie einen Offset (z.B. “+02:00”) an den Input anfügen.
- after: Zeigt nur CSAF Dokumente, deren initiales Veröffentlichungsdatum hinter einem bestimmten Zeitpunkt liegen. Falls die Eingabe weniger als auf die Sekunde genau ist, wie der höchste Wert angenommen. Dies bedeutet, dass “after 2025-08” nach Dokumenten filtert, die nach 2025-08-31 13:59:59 veröffentlicht wurden.
- year: Zeigt nur CSAF Dokuemente, dere initiales Veröffentlichungsdatum in einem gegebenen Jahr liegen.
- status: Filtert nach Dokumentenstatus. Der OASIS standard
listet alle erlaubten Werte.
- tlp: Zeigt nur CSAF Dokumente mit einer gewissen TLP
Klassifizierung. Zusätzlich zu den TLP1 und TLP2 Labeln sind auch “default”, “none”, “unclassified” und “unlabeled” hier valide Eingaben (welche alle dasselbe meinen).
Eingabe (lange Variante)
bomnipotent_client csaf list --year=2025 --status=final --tlp=amber
Eingabe (kurze Variante)
bomnipotent_client csaf list -y 2025 -s final -t amber
Ausgabe
[INFO]
╭────────────────────────────┬────────────────────────────┬─────────────────────────┬─────────────────────────┬────────┬───────────╮
│ ID │ Title │ Initial Release │ Current Release │ Status │ TLP │
├────────────────────────────┼────────────────────────────┼─────────────────────────┼─────────────────────────┼────────┼───────────┤
│ ghsa-qg5g-gv98-5ffh_adviso │ Network-reachable panic in │ 2025-01-01 10:11:12 UTC │ 2025-01-01 10:11:12 UTC │ final │ TLP:AMBER │
│ ry │ Your Product │ │ │ │ │
╰────────────────────────────┴────────────────────────────┴─────────────────────────┴─────────────────────────┴────────┴───────────╯
Eingabe (lange Variante)
bomnipotent_client csaf list --before=2025-03-01 --after="2024-11-08 15:44:13.26+02:00"
Eingabe (kurze Variante)
bomnipotent_client csaf list -b 2025-03-01 -a "2024-11-08 15:44:13.26+02:00"
Ausgabe
[INFO]
╭────────────────────────────┬────────────────────────────┬─────────────────────────┬─────────────────────────┬────────┬───────────╮
│ ID │ Title │ Initial Release │ Current Release │ Status │ TLP │
├────────────────────────────┼────────────────────────────┼─────────────────────────┼─────────────────────────┼────────┼───────────┤
│ ghsa-qg5g-gv98-5ffh_adviso │ Network-reachable panic in │ 2025-01-01 10:11:12 UTC │ 2025-01-01 10:11:12 UTC │ final │ TLP:AMBER │
│ ry │ Your Product │ │ │ │ │
╰────────────────────────────┴────────────────────────────┴─────────────────────────┴─────────────────────────┴────────┴───────────╯
Herunterladen
Um alle für Sie zugänglichen CSAF-Dokumente lokal zu spiegeln, führen Sie den folgenden Befehl aus:
Eingabe
bomnipotent_client csaf download /home/csaf
Ausgabe
[INFO] Storing CSAF documents under /home/csaf
Dies speichert die CSAF-Dokumente im angegebenen Ordner ("/home/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.
Eingabe
Ausgabe
/home/csaf/
`-- amber
`-- 2025
`-- ghsa-qg5g-gv98-5ffh_advisory.json
3 directories, 1 file
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:
Eingabe
bomnipotent_client csaf download /home/csaf amber/2025/ghsa-qg5g-gv98-5ffh_advisory.json
Ausgabe
[INFO] Storing CSAF document under /home/csaf
BOMnipotent überschreibt existierende Dateien nicht, selbst falls sie sich auf dem Server geändert haben. Stattdessen gibt es eine Warnung aus:
Eingabe
bomnipotent_client csaf download /home/csaf
Ausgabe
[INFO] Storing CSAF documents under /home/csaf
[WARN] File /home/csaf/amber/2025/ghsa-qg5g-gv98-5ffh_advisory.json already exists.
The existing CSAF doc has ID 'GHSA-QG5G-GV98-5FFH%ADVISORY' while the new one has ID 'ghsa-qg5g-gv98-5ffh_advisory'.
Note that according to the OASIS standard, both IDs are mapped to the same filename 'ghsa-qg5g-gv98-5ffh_advisory.json'.
For more information, see Section 5.1 of
https://docs.oasis-open.org/csaf/csaf/v2.0/os/csaf-v2.0-os.html#51-filename
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:
Eingabe (lange Variante)
bomnipotent_client csaf download /home/csaf --overwrite
Eingabe (kurze Variante)
bomnipotent_client csaf download /home/csaf -o
Ausgabe
[INFO] Storing CSAF documents under /home/csaf
[INFO] Overwriting existing CSAF document at '/home/csaf/amber/2025/ghsa-qg5g-gv98-5ffh_advisory.json'.
Der Download Befehl akzeptiert exakt die gleichen Filter
wie der Befehl zum Auflisten, sodass Sie nur die Dokumente herunterladen können, welche relevant für Sie sind.
Anzeigen
Sie können den Inhalt eines einzelnen CSAF Dokuments direkt in die Konsole ausgeben lassen, indem Sie folgendes rufen:
Eingabe
bomnipotent_client csaf get ghsa-qg5g-gv98-5ffh_advisory | tail -n 16
Ausgabe
"your_project_1.1.0"
]
},
"remediations": [
{
"category": "vendor_fix",
"date": "2025-01-01T11:00:00.000Z",
"details": "Update to version 1.1.0.",
"product_ids": [
"your_project_1.0.0"
]
}
]
}
]
}
Das ist besonder praktisch falls Sie den Inhalt des CSAF Dokuments in einem Skript weiterverwenden wollen.
Existenz
Der Sub-Befehl "exist" prüft, wie viele Einträge auf dem Server mit bestimmten Filtern übereinstimmt. Er ist für alle Befehle verfügbar, die den "list" Sub-Befehl akzeptieren, und akzeptiert dieselben Filter.
Basierend auf dem Ausgabeformat gibt der Client Folgendes aus:
- Normaler Modus: Ein Satz, der die Anzahl der gefundenen Objekte enthält.
- code: Den String "200", falls mindestens ein Element gefunden wurde, oder "404", falls keine gefunden wurden.
- raw: Die Anzahl der Einträge, die gefunden wurden.
Eingabe (lange Variante)
bomnipotent_client csaf exist --year=2023
Eingabe (kurze Variante)
bomnipotent_client csaf exist -y 2023
Ausgabe
[INFO] The server does not contain any CSAF document(s) matching the filters.
Produkte
Auflisten
Um genau zu sehen, welche Produkte von welchem CSAF Dokument behandelt werden, führen Sie den folgenden Befehl aus:
Eingabe
bomnipotent_client product list
Ausgabe
[INFO]
╭────────────────────────────┬──────────────┬─────────────┬────────────────────────────┬────────────────┬────────────────────────────┬───────────╮
│ Full Product Name │ BOM Name │ BOM Version │ Vulnerability │ Status │ CSAF ID │ TLP │
├────────────────────────────┼──────────────┼─────────────┼────────────────────────────┼────────────────┼────────────────────────────┼───────────┤
│ Best Vendor's Your Project │ Your Project │ 1.0.0 │ GHSA-qg5g-gv98-5ffh │ known_affected │ ghsa-qg5g-gv98-5ffh_adviso │ TLP:AMBER │
│ v1.0.0 │ │ │ Rustls network-reachable p │ │ ry │ │
│ │ │ │ anic │ │ │ │
│ Best Vendor's Your Project │ Your Project │ 1.1.0 │ GHSA-qg5g-gv98-5ffh │ fixed │ ghsa-qg5g-gv98-5ffh_adviso │ TLP:AMBER │
│ v1.1.0 │ │ │ Rustls network-reachable p │ │ ry │ │
│ │ │ │ anic │ │ │ │
│ Best Vendor's Your Project │ Your Project │ 1.1.0 │ GHSA-qg5g-gv98-5ffh │ recommended │ ghsa-qg5g-gv98-5ffh_adviso │ TLP:AMBER │
│ v1.1.0 │ │ │ Rustls network-reachable p │ │ ry │ │
│ │ │ │ anic │ │ │ │
╰────────────────────────────┴──────────────┴─────────────┴────────────────────────────┴────────────────┴────────────────────────────┴───────────╯
Der Befehl akzeptiert die optionalen Filter “name”, “vulnerability”, “status” und “csaf”:
Eingabe (lange Variante)
bomnipotent_client product list --status=known_affected --csaf="ghsa-qg5g-gv98-5ffh_advisory"
Eingabe (kurze Variante)
bomnipotent_client product list -s known_affected -c "ghsa-qg5g-gv98-5ffh_advisory"
Ausgabe
[INFO]
╭────────────────────────────┬──────────────┬─────────────┬────────────────────────────┬────────────────┬────────────────────────────┬───────────╮
│ Full Product Name │ BOM Name │ BOM Version │ Vulnerability │ Status │ CSAF ID │ TLP │
├────────────────────────────┼──────────────┼─────────────┼────────────────────────────┼────────────────┼────────────────────────────┼───────────┤
│ Best Vendor's Your Project │ Your Project │ 1.0.0 │ GHSA-qg5g-gv98-5ffh │ known_affected │ ghsa-qg5g-gv98-5ffh_adviso │ TLP:AMBER │
│ v1.0.0 │ │ │ Rustls network-reachable p │ │ ry │ │
│ │ │ │ anic │ │ │ │
╰────────────────────────────┴──────────────┴─────────────┴────────────────────────────┴────────────────┴────────────────────────────┴───────────╯
Existenz
Der Sub-Befehl "exist" prüft, wie viele Einträge auf dem Server mit bestimmten Filtern übereinstimmt. Er ist für alle Befehle verfügbar, die den "list" Sub-Befehl akzeptieren, und akzeptiert dieselben Filter.
Basierend auf dem Ausgabeformat gibt der Client Folgendes aus:
- Normaler Modus: Ein Satz, der die Anzahl der gefundenen Objekte enthält.
- code: Den String "200", falls mindestens ein Element gefunden wurde, oder "404", falls keine gefunden wurden.
- raw: Die Anzahl der Einträge, die gefunden wurden.
Eingabe (lange Variante)
bomnipotent_client product exist --status=known_affected
Eingabe (kurze Variante)
bomnipotent_client product exist -s known_affected
Ausgabe
[INFO] The server contains 1 product(s) matching the filters.