SBOM - Software Bill of Materials
Das Modul SBOM erzeugt ein CycloneDX 1.4-JSON-Dokument, das das Plugin-Verzeichnis und seine Abhängigkeiten beschreibt. Es ist ein strukturelles Artefakt, das nach Art. 13 des EU Cyber Resilience Act erforderlich ist und von den meisten SBOM-Verbrauchern (Trivy, Dependency-Track, Grype) akzeptiert wird.
Warum CycloneDX und nicht SPDX
Abschnitt betitelt „Warum CycloneDX und nicht SPDX“Beide Formate sind weit verbreitet. CycloneDX 1.4 JSON wurde gewählt, weil die Struktur einfacher ist, direkt von Trivy und Dependency-Track verarbeitet wird und Package URLs (purl) verwendet, die für Composer und npm standardmäßig mitgeliefert werden.
Konfiguration
Abschnitt betitelt „Konfiguration“Gehen Sie zu Polski > SBOM. Das Modul ist standardmäßig aktiviert. Zum Deaktivieren: Polski > Module > Haken bei “SBOM” entfernen.
Quellen
Abschnitt betitelt „Quellen“Für jedes Zielverzeichnis liest der Generator:
| Datei | Inhalt |
|---|---|
composer.lock |
PHP-Pakete (Abschnitte packages und packages-dev) |
package-lock.json |
JavaScript-Pakete (Map packages unter node_modules/...) |
| Plugin-Header | Name und Version (aus der Konstante VERSION) |
Der Generator läuft ausschließlich auf Anforderung. Das JSON wird nicht zwischengespeichert - die Erzeugung für ein FREE-Plugin mit rund 100 Abhängigkeiten dauert unter 200 ms.
polski- das FREE-Plugin (WP_PLUGIN_DIR/polskioderPolski\PLUGIN_DIR)polski-pro- nur sichtbar, wenn PRO installiert ist und die KonstantenPolski\Pro\PLUGIN_DIR/Polski\Pro\VERSIONdefiniert sind
Ausgabe
Abschnitt betitelt „Ausgabe“Die Datei wird ausgeliefert mit:
Content-Type: application/vnd.cyclonedx+json; charset=utf-8Content-Disposition: attachment; filename="polski-sbom-<version>-<UTC timestamp>.cdx.json"Beispiel (gekürzt):
{ "bomFormat": "CycloneDX", "specVersion": "1.4", "serialNumber": "urn:uuid:5a3b....", "version": 1, "metadata": { "timestamp": "2026-04-19T08:30:00+00:00", "tools": [{ "vendor": "WPPoland", "name": "Polski SBOM generator", "version": "1.0" }], "component": { "type": "application", "bom-ref": "wppoland/polski", "name": "polski", "version": "2.1.0", "publisher": "WPPoland" } }, "components": [ { "type": "library", "bom-ref": "composer:woocommerce/woocommerce-blocks", "name": "woocommerce/woocommerce-blocks", "version": "10.8.4", "scope": "required", "licenses": [{ "license": { "id": "GPL-3.0-or-later" } }] } ]}Verwendung
Abschnitt betitelt „Verwendung“trivy sbom polski-sbom-2.1.0-20260419-083000.cdx.jsonDependency-Track
Abschnitt betitelt „Dependency-Track“- Legen Sie ein Projekt in Dependency-Track an (eines pro Plugin).
- Laden Sie das JSON über die Oberfläche oder den Endpunkt
/api/v1/bomhoch. - Verbinden Sie das Projekt mit einer CI-Pipeline, sodass jedes Release die BOM aktualisiert.
CRA-Kontext
Abschnitt betitelt „CRA-Kontext“Art. 13 des Cyber Resilience Act verpflichtet Hersteller, SBOMs für ihre Produkte vorzuhalten. Das CycloneDX-JSON neben dem getaggten Release abzulegen ist eine gängige Möglichkeit, dieser Pflicht nachzukommen. Der Dateiname enthält die Version und den UTC-Zeitstempel, damit die Artefakte über Releases hinweg eindeutig bleiben.
Berechtigungen
Abschnitt betitelt „Berechtigungen“- Oberfläche und Download:
manage_woocommerce - Nonce:
polski_sbom_download(für die POST-Aktion erforderlich)
Einschränkungen
Abschnitt betitelt „Einschränkungen“- Transitive Abhängigkeitsbeziehungen (
dependencies-Baum) werden noch nicht ausgegeben (nur flache Liste) - WordPress selbst ist keine Komponente in der BOM (es ist die Laufzeitumgebung, keine gebündelte Abhängigkeit)
- Version wird nur aus den Plugin-Konstanten ermittelt - nicht aus dem Feld in
composer.json - Keine HMAC-Signatur auf der BOM (in PRO geplant)