
Scannt Software-Stücklisten (SBOMs) auf Sicherheitsschwachstellen.

bomber ist eine Anwendung, die SBOMs auf Sicherheitslücken scannt.
Sie haben also einen Anbieter um eine Software Bill of Materials (SBOM) für eines seiner Closed-Source-Produkte gebeten, und er hat Ihnen eine in einer JSON-Datei zur Verfügung gestellt … und was nun?
Das Erste, was Sie tun möchten, ist zu überprüfen, ob Komponenten in der SBOM Sicherheitslücken aufweisen und welche Lizenzen diese Komponenten haben. Dies hilft Ihnen, das Risiko einzuschätzen, das Sie mit der Nutzung des Produkts eingehen.
Das Erkennen von Sicherheitslücken und Lizenzinformationen für in einer SBOM identifizierte Komponenten ist genau das, wofür bomber gedacht ist. bomber kann jedes JSON- oder XML-basierte CycloneDX Format sowie eine JSON SPDX oder Syft formatierte SBOM lesen und Ihnen schnell mitteilen, ob Sicherheitslücken vorhanden sind.
Software kann entweder Open Source oder Closed Source sein. Sie können Drittanbieterkomponenten, die Sie auf Github oder in jedem öffentlichen Quellcode-Repository finden, als Open Source betrachten. Technisch gesehen ist auch die Software, die Sie intern in Ihrem eigenen Unternehmen entwickeln, Open Source – sie ist nicht öffentlich, aber Ihre internen Teams können sie einsehen. Closed-Source-Software kann ebenfalls intern sein, aber meist handelt es sich um Software, die Sie von externen Anbietern kaufen.
Unternehmen können SCA-Tools von Anbietern wie Github, Sonatype, Snyk usw. verwenden, um jede Art von Open Source zu scannen und Schwachstellendaten bereitzustellen – und in einigen Fällen sogar SBOMs zu generieren. Was sie (noch...) nicht können, ist Closed-Source-Software zu scannen, in die Sie keinen Einblick haben. Hier kommen SBOMs und bomber ins Spiel. SBOMs liefern die Zusammensetzung von Software, auf die Sie nicht zugreifen können, und bomber ermittelt, ob etwas in der SBOM Sicherheitslücken aufweist.
Wir haben bomber entwickelt, um die Closed-Source-SBOMs zu scannen, die Sie von Anbietern erhalten. Es kann auch Open-Source-SBOMs scannen, und technisch gesehen könnten Sie bomber als Open-Source-SCA-Tool verwenden, wenn Sie möchten.
Es gibt heutzutage einige SBOM-Formate. bomber unterstützt die folgenden:

bomber unterstützt mehrere Quellen für Schwachstelleninformationen. Wir nennen sie Anbieter. Derzeit verwendet bomber OSV als Standard-Anbieter, aber Sie können auch die Github Advisory Database, den Sonatype OSS Index oder Snyk verwenden.
Beachten Sie, dass OSV kostenlos ist und keine Anmeldeinformationen erfordert, Sonatype OSS Index ist kostenlos, erfordert jedoch eine Registrierung und einen Token, und die Snyk-Unterstützung erfordert eine Snyk-Lizenz.
Zusätzlich zu den Daten, die bomber von den Anbietern sammelt, reichert es die Schwachstellendaten mit zusätzlichen Informationen wie Ausbeutungswahrscheinlichkeiten an.
Bitte beachten Sie, dass jeder Anbieter verschiedene Ökosysteme unterstützt. Wenn Sie also bei einem keine Sicherheitslücken sehen, versuchen Sie es mit einem anderen. Ein Ökosystem ist einfach der Paketmanager oder der Pakettyp. Beispiele sind rpm, npm, gems usw. Es ist wichtig zu verstehen, dass jeder Anbieter unterschiedliche Sicherheitslücken melden kann. Im Zweifelsfall schauen Sie bei mehreren nach.
Wenn bomber keine Sicherheitslücken findet, heißt das nicht, dass es keine gibt. Es bedeutet lediglich, dass der verwendete Anbieter keine erkannt hat oder das Ökosystem nicht unterstützt. Manche Anbieter liefern Sicherheitslücken ohne Schweregrad-Informationen. In diesem Fall wird der Schweregrad als "UNDEFINED" angegeben.
Die Dokumentation der Anbieter für bomber finden Sie hier:
Sie können Homebrew verwenden, um bomber mit folgendem Befehl zu installieren:
brew tap devops-kung-fu/homebrew-tap
brew install devops-kung-fu/homebrew-tap/bomber
Wenn Sie Homebrew nicht haben, können Sie die neueste Version herunterladen (z. B. bomber_0.4.1_darwin_all.tar.gz), die Dateien aus dem Archiv extrahieren und die bomber-Binärdatei verwenden.
Wenn Sie möchten, können Sie die bomber-Binärdatei in Ihr /usr/local/bin-Verzeichnis oder an einen beliebigen Pfad verschieben.
Um bomber zu installieren, laden Sie die neueste Version für Ihre Plattform herunter und installieren Sie sie lokal. Beispiel für die Installation von bomber auf Ubuntu:
dpkg -i bomber_0.5.0_linux_arm64.deb
Sie können entweder einen gesamten Ordner mit SBOMs oder eine einzelne SBOM mit bomber scannen. bomber ist egal, ob Sie mehrere Formate in einem Ordner haben. Es sortiert alles für Sie.
Beachten Sie, dass die Standardausgabe von bomber nach STDOUT erfolgt. Optionen für die Ausgabe in HTML oder JSON werden später in diesem Dokument beschrieben.
# Verwendung von OSV (dem Standard-Anbieter), der keine Anmeldeinformationen erfordert
bomber scan cyclonedx.sbom.json
# Verwendung eines Anbieters, der Anmeldeinformationen erfordert (ossindex)
bomber scan --provider=xxx --username=xxx --token=xxx [sbom.json]
Wenn der Anbieter Sicherheitslücken findet, sehen Sie eine Ausgabe ähnlich der folgenden:

Wenn der Anbieter keine Sicherheitslücken zurückgibt, wird eine Meldung angezeigt, dass keine Sicherheitslücken gefunden wurden.
HINWEIS: Nur weil ein bestimmter Anbieter keine Sicherheitslücken gefunden hat, heißt das nicht, dass es keine gibt. Bitte versuchen Sie es mit den anderen von bomber unterstützten Anbietern.
Dies ist nützlich, wenn Sie mehrere SBOMs von einem Anbieter für dasselbe Produkt erhalten. Oder vielleicht möchten Sie herausfinden, welche Sicherheitslücken in Ihrer gesamten Organisation vorhanden sind. Ein Ordner-Scan findet alle Komponenten, dedupliziert sie und scannt sie dann auf Sicherheitslücken.
# Scan eines Ordners mit SBOMs (der folgende Befehl scannt einen Ordner namens "sboms" in Ihrem aktuellen Verzeichnis)
bomber scan --provider=xxx --username=xxx --token=xxx ./sboms
Sie sehen ein ähnliches Ergebnis wie beim Einzelnen SBOM-Scan.
bomber gibt Daten in drei nützlichen Formaten aus. Standardmäßig wird die Ausgabe in der Befehlszeile gerendert. Für eine erweiterte Berichterstattung können Sie mit dem Flag --output=html in HTML ausgeben. Für JSON-Ausgabe verwenden Sie --output=json. Verwenden Sie eine durch Kommas getrennte Ausgabespezifikation, um die Ausgabe in mehreren Formaten zu erhalten: --output=html,stdout,json.
Wenn Sie einen lesbaren Bericht mit detaillierten Schwachstelleninformationen wünschen, können Sie das Flag --output verwenden, um einen Bericht in einer HTML-Datei zu speichern.
Beispielbefehl:
bomber scan bad-bom.json --output=html
Dies speichert eine Datei in Ihrem aktuellen Ordner im Format "YYYY-MM-DD-HH-MM-SS-bomber-results.html". Wenn Sie diese Datei in einem Webbrowser öffnen, sehen Sie eine Ausgabe wie die folgende:

bomber kann Schwachstellendaten im JSON-Format mit dem Flag --output ausgeben. Die Standardausgabe erfolgt nach STDOUT. Die JSON-Ausgabe enthält viel mehr Informationen als das, was im Terminal angezeigt wird. Sie können eine Paketbeschreibung, den Zweck, den Schwachstellennamen, eine Zusammenfassung der Schwachstelle und mehr sehen.

Beispielbefehl:
bomber scan bad-bom.json --output=json > filename.json
bomber unterstützt auch die Ausgabe im Markdown-Format. Dies ähnelt der HTML-Ausgabe, überlässt jedoch die Formatierung dem Markdown-Renderer, wie z.B. GitHub. Die Ausgabe wird in einer Datei im Format "YYYY-MM-DD-HH-MM-SS-bomber-results.md" gespeichert.
Beispielbefehl:
bomber scan bad-bom.json --output=md
Bei Bedarf können Sie das Flag --ignore-file verwenden, um eine Liste von CVEs zu laden, die in der Schwachstellenausgabe ignoriert werden sollen. Diese Liste muss in einem bestimmten Format vorliegen, bei dem jedes zu ignorierende CVE in einer eigenen Zeile steht, ähnlich wie folgt:
CVE-2022-31163
CVE-2022-23520
Eine Beispiel-bomber.ignore-Datei finden Sie hier
Um die bomber.ignore-Datei zu verwenden, nutzen Sie die folgende Syntax:
bomber --ignore-file=bomber.ignore scan bom.json
Sie können den Schweregrad mit dem Flag --severity festlegen, um bestimmte Schweregrade von Schwachstellen zurückzugeben. Wenn Sie beispielsweise --severity=moderate setzen, werden nur Schwachstellen mit einem Schweregrad von MODERATE oder höher zurückgegeben.
Der folgende Befehl gibt beispielsweise nur hohe und kritische Schwachstellen zurück.
bomber --severity=high scan bom.json
bomber hat die Möglichkeit, Schwachstellendaten, die es von den Anbietern erhält, anzureichern. Der erste "Enricher", den wir implementiert haben, ist für EPSS.
HINWEIS: Die EPSS-Bewertung ist in bomber 0.5.0 und höher nicht mehr standardmäßig aktiv. Um EPSS-Werte anzuzeigen, stellen Sie sicher, dass Sie das Flag --enrich=epss verwenden.
EPSS steht für Exploit Prediction Scoring System und ist ein Framework, das die Wahrscheinlichkeit einer Ausbeutung einer Schwachstelle vorhersagt. EPSS wird häufig verwendet, um risikoreiche Schwachstellen zu identifizieren, die für die Behebung priorisiert werden sollen.
EPSS verwendet einen Prozentsatz für die Wahrscheinlichkeit. Wenn Sie also 94 sehen, bedeutet dies, dass die Schwachstelle eine 94%ige Wahrscheinlichkeit der Ausbeutung hat. Und es ist vernünftig, dass eine Schwachstelle mit einem Wert wie 94 sofortige Aufmerksamkeit verdient, während eine Schwachstelle mit einem Wert wie 20 eine niedrigere Priorität hat.
Wenn Sie möchten, können Sie zwei Umgebungsvariablen setzen, um Ihre Anmeldeinformationen zu speichern und sie nicht jedes Mal in der Befehlszeile eingeben zu müssen. Weitere Informationen finden Sie unter Umgebungsvariablen weiter unten in dieser README.
Wenn Sie bomber in Ihren CI/CD-Pipelines verwenden, können Sie mit Syft einen All-in-One-Befehl ausführen, um eine SBOM zu generieren und auf Sicherheitslücken zu scannen. Dazu können Sie einen Befehl wie den folgenden verwenden:
# Stellen Sie sicher, dass Sie das Zeichen - am Ende des Befehls hinzufügen. Dies löst bomber aus, von STDIN zu lesen
syft packages . -o cyclonedx-json | bomber scan --provider ossindex --output json -
Dieser Befehl erstellt eine SBOM, leitet sie in bomber ein und generiert Ergebnisse im JSON-Format.
Wenn Sie nicht jedes Mal Anmeldeinformationen eingeben möchten, können Sie Folgendes zu Ihrer .bashrc oder .bash_profile hinzufügen:
export BOMBER_PROVIDER_USERNAME={{your OSS Index user name}}
export BOMBER_PROVIDER_TOKEN={{your OSS Index API Token}}
Die Verwendung des Flags --exitcode gibt einen Exit-Code zurück, der den höchsten gefundenen Schweregrad einer Schwachstelle darstellt. Ohne dieses Flag können Sie mit einem Exit-Code von 0 für Erfolg oder 1 bei einem Fehler rechnen.
Wenn kein Fehler auftritt, werden von bomber bei Verwendung von --exitcode die folgenden Werte zurückgegeben:
| Schweregrad | Rückgabecode |
|---|---|
| UNSPECIFIED (Dies ist ein Status, bei dem der Anbieter uns etwas Seltsames oder keine Info gibt) | 10 |
| LOW | 11 |
| MODERATE |
bomber enthält jetzt eine experimentelle Funktion, die die Beschreibung von Sicherheitslücken in einer html-Ausgabe anreichert. Diese Funktion nimmt eine Sicherheitslücke und ändert die Beschreibung in etwas Verständlicheres für nicht-technische Benutzer.
HINWEIS: Diese Funktion befindet sich derzeit in einem starken Alpha-Stadium. Sie ist extrem langsam und die Ausgabe ist nicht sehr gut formatiert.
Um diese Funktion zu nutzen, müssen Sie einen OpenAI-API-Schlüssel bereitstellen. Sie können diesen Schlüssel entweder über die CLI mit --openai-api-key={{your OpenAI API Key}} übergeben oder eine Umgebungsvariable hinzufügen:
export OPENAI_API_KEY={{your OpenAI API Key}}
Nachdem Sie Ihren OpenAI-API-Schlüssel gesetzt haben, können Sie das Ausgabe-Flag wie folgt setzen:
bomber scan --output ai [sbom.json]
Wenn Sie bomber ausprobieren möchten, finden Sie eine Auswahl von Test-SBOMs im test-Ordner.
--license. Wenn Sie Lizenzinformationen benötigen, fragen Sie explizit danach in der SBOM.bomber muss jeweils eine PURL senden, um Schwachstellen zurückzubekommen, daher dauert es bei einer großen SBOM eine Weile. Wir werden das im Auge behalten.Wenn Sie zur Entwicklung von bomber beitragen möchten, lesen Sie bitte die CONTRIBUTING.md-Datei in diesem Repository. Bitte lesen Sie vor dem Beitrag die CODE_OF_CONDUCT.md-Datei.
bomber verwendet Syft, um eine Software Bill of Materials zu erstellen, jedes Mal wenn ein Entwickler Code in dieses Repository commitet (solange Hookz verwendet und im Arbeitsverzeichnis initialisiert wurde). Weitere Informationen zu CycloneDX finden Sie hier.
Die aktuelle CycloneDX-SBOM für bomber ist hier verfügbar.
Vielen Dank an die Sponsoren und Unterstützer von bomber

Ein großes Dankeschön an unsere Freunde von ZERO für das bomber-Logo.
Danke an Sonatype für ein so tolles Tool wie den Sonatype OSS Index.
Vielen Dank an unsere Freunde und Mitwirkenden von bomber bei Snyk für die Erstellung eines Anbieters und das Programmieren der Verarbeitung einer SBOM von STDIN. Ihr seid großartig.
Die EPSS-Beschreibung stammt vom Team von Nucleus. Vielen Dank!
| 12 |
| HIGH | 13 |
| CRITICAL | 14 |