Wie man SBOMs abruft oder generiert
von praktisch jeder Software?
Um loszulegen, müssen Sie SBOMs mithilfe eines der verschiedenen Tools generieren, abhängig vom zu verfolgenden System oder der zu überwachenden Anwendung.
Den zusätzlichen Schritt der Automatisierung der SBOM-Generierung zu gehen, stellt sicher, dass Ihr Software-Inventar immer auf dem neuesten Stand bleibt und Ihre Reise zur Software-Transparenz erleichtert. Weitere Informationen zur Automatisierung der SBOM-Übertragung finden Sie auf dieser Dokumentationsseite.
Da das Abrufen von SBOMs ein sich ständig weiterentwickelndes Thema ist, bei dem im Laufe der Zeit Tools auftauchen oder verschwinden, werden wir unser Bestes tun, um diese Seite auf dem neuesten Stand zu halten und den aktuellen Stand der Open-Source-Community widerzuspiegeln.
Kontaktieren Sie uns, um zusätzliche großartige Tools zu teilen, die Sie gefunden haben, um den SBOM-Generierungsprozess zu erleichtern. Wir werden sie prüfen und hier aufnehmen, um anderen zu helfen.Jetzt lassen Sie uns praktisch werden…
SBOM bei der Build-Phase extrahieren
Anwendungen, die durch ihren Quellcode erstellt werden, sollten idealerweise als zusätzlichen Schritt im CI/CD-Prozess ihr SBOM generieren.
Viele verschiedene Tools und Plugins können je nach zugrunde liegender Technologie Ihrer Anwendungen verwendet werden:
- Angular Webpack
- C / C++ Conan
- Dockerfile
- Erlang / Elixir Mix oder Rebar3
- Go Module oder eine ältere Alternative
- .NET Core nuGet
- Node npm
- Java Maven, Gradle
- JavaScript Bower oder Webpack
- Objective-C / Swift CocoaPods
- PHP Composer
- Python Conda oder buildroot
- React Webpack
- Ruby Gem
- Rust Cargo
- Scala sbt
Alternativ können Sie auch cdxgen verwenden, welches ein vielseitiger SBOM-Generator ist und mit praktisch jeder Programmiersprache, Paketverwaltung und Betriebssystem kompatibel ist.
SBOM in der Bereitstellungsphase extrahieren
Idealerweise sollten Sie das SBOM für jede Drittanbieterlösung direkt von ihrem Anbieter erhalten. Dennoch sind viele Anbieter darauf noch nicht vorbereitet. Daher müssen Sie möglicherweise das SBOM von Drittanwendungen selbst generieren, während die Branche in diesem Bereich reift.
Glücklicherweise kann dies vollständig automatisiert und in Ihren Bereitstellungsprozess integriert werden. In diesem Abschnitt zeigen wir Ihnen die Tools, die Sie für diese Extraktion verwenden können.
Anwendungen, die über Paketverwaltungen installiert werden
SBOMs für über Paketverwaltungen installierte Anwendungen können recht einfach mit Tools wie syft oder spdx gescannt werden. In den folgenden Beispielen konzentrieren wir uns auf syft, da es keine Konvertierung erfordert und etwas ausgereifter ist als spdx.
Linux / MacOS
Die Analyse kann auf jeder Distribution durchgeführt werden:
# Syft installieren
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sudo sh -s -- -b /usr/local/bin
# Den gesamten Host scannen
sudo /usr/local/bin/syft scan dir:/ --output cyclonedx-json > "$HOSTNAME.sbom.json"
Oder wenn Sie Docker auf diesem Rechner haben und syft ohne vorherige Installation bevorzugen, um den Host zu scannen, führen Sie einfach aus:
docker run --rm -a stdout -v /:/host:ro anchore/syft scan dir:/host --output cyclonedx-json > "$HOSTNAME.sbom.json"
Windows
Ebenso für Windows kann die neueste Syft-Binärdatei von der Release-Seite heruntergeladen werden. Manchmal wird die Windows-Version nach den Linux- und Darwin-Versionen veröffentlicht. Verwenden Sie entweder eine vorherige Binärversion oder führen Sie die Linux-Version in WSL oder die Docker-Version aus, wenn Sie die neueste Version ohne Warten haben möchten.
Um die Windows-Version auszuführen, passen Sie den folgenden Befehl nach Bedarf in einer administrativen Eingabeaufforderung an:
syft scan dir:"c:" --output cyclonedx-json > "%ComputerName%.sbom.json"
Virtual environments
Docker containers
Wir empfehlen die Verwendung unseres einfachen syft.sh
Skripts, das unten gezeigt wird.
#!/bin/bash
docker run --rm
-v /:/host:ro
-v ${PWD}:/out
-v /var/lib/docker/volumes:/var/lib/docker/volumes:ro
-v /var/run/docker.sock:/var/run/docker.sock:ro
-a stdin -a stdout -a stderr
-i anchore/syft "$@"
Es kann auf viele verschiedene Arten verwendet werden (prüfen Sie alle Möglichkeiten mit syft.sh --help
). Zum Beispiel, um vorhandene Images zu scannen, würden Sie verwenden:
# Ersetzen Sie den Platzhalter {{container:tag}}
syft.sh scan registry:{{container:tag}} --output cyclonedx-json > {{container:tag}}.sbom.json
Betriebssystem / Virtuelle Maschine / Andere Anwendungen
Manuell installierte Anwendungen, einschließlich geschlossener Quellcode-Anwendungen, sind derzeit schwieriger zu scannen. Sie können nach Anwendungen suchen, die über Paketmanager installiert wurden, indem Sie syft verwenden, wie im oben gezeigten Abschnitt, oder möglicherweise zusätzliche Szenarien mit cdxgen abdecken.
# Nur OS-Pakete mit syft scannen (z. B. Debian)
syft scan dir:/var/lib/dpkg --output cyclonedx-json > "$HOSTNAME.sbom.json"
# Alles mit syft scannen (kann langsam sein)
syft scan dir:/ --output cyclonedx-json > "$HOSTNAME.sbom.json"
Binärdateien / Mobile App
Die Analyse von Binärdateien, wie beispielsweise von Paketen für mobile Anwendungen (APK für Android und IPA für iOS), birgt erhebliche Herausforderungen. Dennoch bleibt diese Praxis wichtig, insbesondere in Fällen, in denen der Anbieter noch keine Liste der Softwarekomponenten (SBOM - Software Bill of Materials) bereitgestellt hat. cve-bin-tool kann in solchen Situationen nützlich sein, um bestimmte Informationen zu extrahieren:
cve-bin-tool --nvd api2 --sbom-type cyclonedx --sbom-output application.sbom.json Application.apk
Fazit
Die Community stellt viele verschiedene Tools zur Extraktion und Generierung von SBOM bereit. Hoffentlich konnten wir Ihnen mit dieser Seite helfen, die für Ihren Fall am besten geeigneten auszuwählen.
SBOMs sind bereits Standard bei der Bereitstellung von Software an die US-Regierung. Wir vertrauen darauf, dass sich diese Praxis weltweit entwickeln wird und dass SBOM zu einem standardmäßigen Lieferartefakt wird, das der Branche hilft, die Transparenz der Lieferkette zu verbessern.
Die Erstellung eines SBOM ist nur der erste Schritt auf Ihrem Weg. Für eine einfachere Integration und optimierte Nutzung bieten wir eine verwaltete Version von Dependency-Track als Cloud-Lösung an.
Als nächstes empfehlen wir Ihnen unsere Automatisierung der SBOM-Übertragung Seite.
Noch unsicher, wie man SBOM extrahiert?
Nehmen Sie noch heute Kontakt auf!