{"id":11520,"date":"2026-10-20T14:29:53","date_gmt":"2026-10-20T12:29:53","guid":{"rendered":"https:\/\/erminas.com\/?p=11520"},"modified":"2026-10-14T14:53:56","modified_gmt":"2026-10-14T12:53:56","slug":"sbom-erstellen-mit-cdxgen-einstieg-und-qualitaetspruefung","status":"publish","type":"post","link":"https:\/\/erminas.com\/de\/blog\/sbom-erstellen-mit-cdxgen-einstieg-und-qualitaetspruefung\/","title":{"rendered":"SBOM erstellen mit cdxgen: Einstieg und Qualit\u00e4tspr\u00fcfung"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"11520\" class=\"elementor elementor-11520\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-789fa19 e-flex e-con-boxed e-con e-parent\" data-id=\"789fa19\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df37ea8 elementor-widget elementor-widget-text-editor\" data-id=\"df37ea8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wer eine SBOM erstellen m\u00f6chte, braucht einen klar abgegrenzten Softwarestand und einen passenden Generator. Ein Softwareprojekt enth\u00e4lt mehrere Bibliotheken und weitere Abh\u00e4ngigkeiten, die diese Bibliotheken mitbringen. Wie l\u00e4sst sich dieser Bestand als maschinenlesbare SBOM erfassen? Dieser Beitrag f\u00fchrt von der Auswahl des untersuchten Softwarestands \u00fcber den Generatoraufruf bis zur Pr\u00fcfung der entstandenen Datei.<\/p>\n\n<p>Eine SBOM, kurz f\u00fcr Software Bill of Materials, erfasst Softwarekomponenten und ihre Abh\u00e4ngigkeiten in strukturierter Form. In unserem Vortrag \u201eCRA \u2013 SBOM \u2013 Wie Software-St\u00fccklisten wirklich in Entwicklung und Betrieb ankommen\u201c zeigen unsere Experten und Referenten Ruben Brick und Yvette Teiken, wie solche Daten erzeugt und im Entwicklungs- und Sicherheitsprozess genutzt werden k\u00f6nnen. Die Live-Demo f\u00fchrt vom .NET-Projekt zur CycloneDX-Datei und weiter zur Auswertung in Dependency-Track.<\/p>\n\n<p>Warum diese Transparenz im Unternehmensalltag wichtig ist, erl\u00e4utert unser Beitrag <a href=\"https:\/\/erminas.com\/de\/blog\/cybersicherheit-ist-nicht-nur-etwas-fur-tech-giganten-kmu-mussen-jetzt-handeln\/\" target=\"_blank\" rel=\"noopener\">\u201eCybersicherheit ist nicht nur etwas f\u00fcr Tech-Giganten \u2013 KMU m\u00fcssen jetzt handeln\u201c<\/a>. Hier geht es um die technische Umsetzung: Welche Eingabedaten braucht die Erzeugung, was liefert cdxgen und wie pr\u00fcfen Sie das Ergebnis?<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-068286f elementor-widget elementor-widget-heading\" data-id=\"068286f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Welche Informationen eine SBOM enthalten sollte<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8a2efc elementor-widget elementor-widget-text-editor\" data-id=\"d8a2efc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ein brauchbares Inventar beschreibt nicht nur die Anwendung selbst. Es erfasst auch ihre direkten und transitiven Abh\u00e4ngigkeiten. Direkte Abh\u00e4ngigkeiten bindet das Entwicklungsteam ausdr\u00fccklich ein. Transitive Abh\u00e4ngigkeiten gelangen \u00fcber andere Pakete in das Projekt.<\/p><p>Die erzeugte JSON-Datei l\u00e4sst sich in einem Editor \u00f6ffnen. Bei vielen Komponenten und verschachtelten Abh\u00e4ngigkeiten wird eine manuelle Pr\u00fcfung jedoch schnell aufwendig. Analysewerkzeuge bereiten diese Daten so auf, dass sich Komponenten und ihre Beziehungen gezielter untersuchen lassen.<\/p><p>F\u00fcr die sp\u00e4tere Untersuchung sind insbesondere die Namen und Versionen der Komponenten sowie ihre Beziehungen relevant. Kennungen wie eine Package URL, kurz PURL, helfen dabei, ein Paket seinem \u00d6kosystem zuzuordnen. Lizenzinformationen k\u00f6nnen einen weiteren Anwendungsfall unterst\u00fctzen: die Pr\u00fcfung der im Produkt verwendeten Softwarelizenzen.<\/p><p>F\u00fcr den Einstieg lohnt sich eine klare Abgrenzung: Beschreibt die SBOM ein Quellcodeprojekt, einen konkreten Build oder ein ausgeliefertes Artefakt? Diese Frage bestimmt, welche Bestandteile erwartet werden. Eine Analyse des Projekts ist nicht automatisch ein vollst\u00e4ndiges Inventar des sp\u00e4teren Containers oder der gesamten Kundeninstallation.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a66c721 elementor-widget elementor-widget-heading\" data-id=\"a66c721\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">SBOM erstellen mit cdxgen: das .NET-Beispiel<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a3ca554 elementor-widget elementor-widget-text-editor\" data-id=\"a3ca554\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In der Live-Demo kommt cdxgen zum Einsatz. Das Werkzeug unterst\u00fctzt die Erzeugung von CycloneDX-SBOMs f\u00fcr unterschiedliche Technologien. Voraussetzung f\u00fcr das folgende Beispiel sind ein eingerichtetes cdxgen und eine zum .NET-Projekt passende Entwicklungsumgebung.<\/p>\n\n<p>Ein Aufruf entsprechend der Demo sieht so aus:<\/p>\n\n<pre><code class=\"language-bash\">cdxgen -t dotnet --spec-version 1.7 --json-pretty -o sbom.cdx.json<\/code><\/pre>\n\n<p>Der Befehl wird im Projektverzeichnis ausgef\u00fchrt. <code>-t dotnet<\/code> legt den Projekttyp fest, <code>--spec-version 1.7<\/code> die gew\u00fcnschte CycloneDX-Version und <code>-o<\/code> den Namen der Ausgabedatei. Bei einer lokal bereitgestellten ausf\u00fchrbaren Datei kann der Aufruf mit <code>.\/cdxgen<\/code> beginnen, wie im Vortrag gezeigt.<\/p>\n\n<p>Die Aufnahme zeigt ein konkretes Ergebnis: cdxgen erkennt 16 Komponenten, meldet eine erfolgreiche Validierung und schreibt die Datei <code>sbom.cdx.json<\/code>. Diese Zahl geh\u00f6rt zum Demo-Projekt; sie ist kein Erwartungswert f\u00fcr andere Anwendungen. Welche Voraussetzungen und Optionen f\u00fcr das eigene Projekt gelten, beschreibt die <a href=\"https:\/\/github.com\/cdxgen\/cdxgen\" target=\"_blank\" rel=\"noopener\">offizielle cdxgen-Dokumentation<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3481daf elementor-widget elementor-widget-video\" data-id=\"3481daf\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/erminas.com\/wp-content\/uploads\/2026\/10\/Highlight_1_Erstellen.mp4\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dcab17e elementor-widget elementor-widget-heading\" data-id=\"dcab17e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Eine g\u00fcltige Datei ist noch keine vollst\u00e4ndige SBOM<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32e80cc elementor-widget elementor-widget-text-editor\" data-id=\"32e80cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Nach der Generierung beginnt die Qualit\u00e4tspr\u00fcfung. Eine erfolgreiche Schema-Validierung best\u00e4tigt, dass die Datei dem gepr\u00fcften Format entspricht. Ob alle relevanten Bestandteile erfasst wurden, muss zus\u00e4tzlich gepr\u00fcft werden.<\/p><p>Ein sinnvoller erster Test ist der Vergleich mit bekannten Projektabh\u00e4ngigkeiten: Tauchen bewusst eingebaute Pakete mit den erwarteten Versionen auf? Sind indirekte Abh\u00e4ngigkeiten erkennbar? L\u00e4sst sich die Datei dem richtigen Produktstand zuordnen? Auff\u00e4llige L\u00fccken sollten untersucht werden, bevor die Daten an ein Analysewerkzeug weitergegeben werden.<\/p><p>Auch das Ausgabeformat muss zur weiteren Verarbeitung passen. Im Vortrag werden SPDX und CycloneDX als Standards vorgestellt. F\u00fcr die gezeigte Verarbeitung in Dependency-Track wird CycloneDX verwendet. Die Wahl sollte sich deshalb an der gesamten Werkzeugkette orientieren und nicht nur daran, welches Format ein Generator standardm\u00e4\u00dfig ausgibt.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b8270d5 elementor-widget elementor-widget-heading\" data-id=\"b8270d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Mit einem \u00fcberschaubaren Projekt beginnen<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbf55c9 elementor-widget elementor-widget-text-editor\" data-id=\"cbf55c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><\/p><p>F\u00fcr einen ersten Versuch eignet sich eine Anwendung, deren Abh\u00e4ngigkeiten das Team gut kennt. So lassen sich die erzeugten Daten leichter \u00fcberpr\u00fcfen. Dokumentieren Sie dabei den verwendeten Generator, seine Konfiguration und den untersuchten Softwarestand. Das erleichtert die Wiederholung und die sp\u00e4tere \u00dcbernahme in den Build-Prozess.<\/p><p>Mit einer \u00fcberpr\u00fcften SBOM ist die Grundlage gelegt. Im n\u00e4chsten Schritt sollte ihre Erzeugung regelm\u00e4\u00dfig und verl\u00e4sslich erfolgen. Wie daraus ein fester Bestandteil der Entwicklung wird, zeigt unser Beitrag <strong>\u201eSBOM in den Entwicklungsprozess integrieren: von der Datei zum CI\/CD-Workflow\u201c<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eaf57e4 elementor-widget elementor-widget-heading\" data-id=\"eaf57e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Quellen und weiterf\u00fchrende Informationen<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-203ef89 elementor-widget elementor-widget-text-editor\" data-id=\"203ef89\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n  <li><a href=\"https:\/\/www.youtube.com\/watch?v=cEdKo-h0JLU\" target=\"_blank\" rel=\"noopener\">Vortrag und Live-Demo<\/a>, insbesondere 28:31\u201330:16.<\/li>\n  <li><a href=\"https:\/\/github.com\/cdxgen\/cdxgen\" target=\"_blank\" rel=\"noopener\">cdxgen: offizielle Projektdokumentation<\/a>.<\/li>\n  <li><a href=\"https:\/\/cyclonedx.org\/guides\/sbom\/\" target=\"_blank\" rel=\"noopener\">OWASP CycloneDX: Authoritative Guide to SBOM<\/a>.<\/li>\n<\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Wer eine SBOM erstellen m\u00f6chte, braucht einen klar abgegrenzten Softwarestand und einen passenden Generator. Ein Softwareprojekt enth\u00e4lt mehrere Bibliotheken und weitere Abh\u00e4ngigkeiten, die diese Bibliotheken mitbringen. Wie l\u00e4sst sich dieser Bestand als maschinenlesbare SBOM erfassen? Dieser Beitrag f\u00fchrt von der Auswahl des untersuchten Softwarestands \u00fcber den Generatoraufruf bis zur Pr\u00fcfung der entstandenen Datei. Eine SBOM, [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":11529,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"SBOM erstellen mit cdxgen: Einstieg und Qualit\u00e4tspr\u00fcfung","_seopress_titles_desc":"SBOM erstellen mit cdxgen: Wie Sie Komponenten und Abh\u00e4ngigkeiten erfassen, eine CycloneDX-Datei erzeugen und deren Qualit\u00e4t pr\u00fcfen.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"SBOM,CycloneDX,.NET,transitive Abh\u00e4ngigkeiten,SBOM erstellen","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"iawp_total_views":1,"footnotes":""},"categories":[148,1,221],"tags":[],"class_list":["post-11520","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cyber-resilience","category-erminas","category-it-sicherheit"],"_links":{"self":[{"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/posts\/11520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/comments?post=11520"}],"version-history":[{"count":22,"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/posts\/11520\/revisions"}],"predecessor-version":[{"id":11575,"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/posts\/11520\/revisions\/11575"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/media\/11529"}],"wp:attachment":[{"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/media?parent=11520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/categories?post=11520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/erminas.com\/de\/wp-json\/wp\/v2\/tags?post=11520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}