CycloneDX vs SPDX: wybór formatu SBOM zgodnego z CRA

CycloneDX i SPDX to dwa formaty spełniające wymóg CRA dotyczący nadającego się do odczytu maszynowego SBOM. Wybór między nimi nie jest kwestią zgodności z przepisami: oba formaty spełniają wymagania. To kwestia przepływu pracy, czyli tego, który format pasuje do sposobu, w jaki zespół realizuje śledzenie podatności i zgodność licencyjną. CycloneDX jest projektem OWASP zoptymalizowanym pod kątem zastosowań związanych z bezpieczeństwem. SPDX jest standardem Linux Foundation, który uzyskał uznanie w postaci ISO/IEC 5962:2021. Niniejsza strona porównuje oba formaty w wymiarach istotnych dla zgodności z CRA i BSI TR-03183, wraz z działającymi przykładami każdego z nich.

Najważniejsze informacje

  • Zarówno CycloneDX (OWASP), jak i SPDX (Linux Foundation) spełniają wymóg CRA dotyczący „powszechnie używanego formatu nadającego się do odczytu maszynowego"
  • CycloneDX 1.6 lub nowszy jest preferowany w przypadku zastosowań związanych z bezpieczeństwem; natywna obsługa VEX pojawiła się w wersji 1.4, a rozbudowana struktura evidence w wersji 1.5
  • SPDX 3.0.1 jest aktualną wersją specyfikacji SPDX; SPDX 2.2.1 pozostaje wersją ustandaryzowaną jako ISO/IEC 5962:2021, a ISO/IEC DIS 5962 obejmuje prace nad rewizją SPDX 3.0; BSI TR-03183 wymaga SPDX 3.0.1 lub nowszego
  • Wybór formatu nie wpływa na to, które pola są wymagane zgodnie z BSI TR-03183: wymagania dotyczące pól są takie same dla obu formatów
2
Akceptowane formaty
CycloneDX lub SPDX
Natywny w CycloneDX
Vulnerability eXploitability
ISO 5962
Uznanie SPDX 2.2.1
Międzynarodowy standard 2021
Grudzień 2027
Pełne egzekwowanie
Format musi być wdrożony

Jakie formaty SBOM są akceptowane przez CRA?

CRA wymaga formatów „powszechnie używanych i nadających się do odczytu maszynowego". W praktyce wymagania te spełniają dwa standardy:

Format Standard Najlepsze zastosowanie
CycloneDX OWASP Ukierunkowany na bezpieczeństwo, natywna obsługa VEX
SPDX Linux Foundation Zgodność licencyjna, szersze przyjęcie

Oba formaty są akceptowane. CycloneDX jest coraz częściej preferowany w zastosowaniach związanych z bezpieczeństwem ze względu na natywną obsługę:

  • Vulnerability Exploitability eXchange (VEX)
  • Powiadomień o bezpieczeństwie
  • Grafów zależności
graph LR
    SCN[Component Names] --- SBOM((SBOM))
    VS[Versions] --- SBOM
    SUP[Supplier Info] --- SBOM
    DEP[Dependencies] --- SBOM
    SBOM --- LIC[Licenses]
    SBOM --- PURL[Package URLs]
    SBOM --- HASH[Hash Values]
    SBOM --- OSC[Open Source Components]
    style SBOM fill:#008080,color:#fff,stroke:#006666,stroke-width:4px
    style SCN fill:#e8f4f8,stroke:#008080,color:#333
    style VS fill:#e8f4f8,stroke:#008080,color:#333
    style SUP fill:#e8f4f8,stroke:#008080,color:#333
    style DEP fill:#e8f4f8,stroke:#008080,color:#333
    style LIC fill:#e8f4f8,stroke:#008080,color:#333
    style PURL fill:#e8f4f8,stroke:#008080,color:#333
    style HASH fill:#e8f4f8,stroke:#008080,color:#333
    style OSC fill:#e8f4f8,stroke:#008080,color:#333

Porównanie formatów

Wymiar CycloneDX SPDX
Pochodzenie Projekt OWASP Linux Foundation
Najnowsza stabilna specyfikacja 1.7 (październik 2025 r.); zalecane 1.6 lub nowsze dla CRA 3.0.1 (aktualna); 2.2.1 to baza ISO/IEC 5962:2021
Uznanie standardów OWASP, ECMA-424 ISO/IEC 5962:2021 (SPDX 2.2.1); ISO/IEC DIS 5962 dla SPDX 3.0
Główny obszar zastosowania Zarządzanie bezpieczeństwem i podatnościami Zgodność licencyjna i przegląd prawny
Obsługa VEX Natywna (od wersji 1.4, styczeń 2022 r.) Poprzez zewnętrzny CSAF
evidence komponentu Tożsamość i wystąpienia od wersji 1.5 (czerwiec 2023 r.) Nie dotyczy
Wyrażenia licencyjne Wystarczające Kompleksowe (lista licencji SPDX jest kanoniczna)
Narzędzia Syft, Trivy, cdxgen generują CycloneDX natywnie Syft, scancode-toolkit, FOSSA
Złożoność specyfikacji Lżejsza, łatwiejsza do wdrożenia Bardziej kompleksowa, bardziej szczegółowa

CycloneDX

Projekt OWASP. Zaprojektowany z myślą o bezpieczeństwie: lżejsza specyfikacja, natywny VEX, bezpośrednie powiązanie z CVE, silne natywne narzędzia (Trivy, Syft, cdxgen). CycloneDX należy wybrać, gdy priorytetem jest śledzenie podatności.

Przykładowy wpis komponentu CycloneDX:

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "version": 1,
  "components": [
    {
      "type": "library",
      "name": "lodash",
      "version": "4.17.21",
      "purl": "pkg:npm/lodash@4.17.21",
      "hashes": [
        {
          "alg": "SHA-256",
          "content": "cc6d..."
        }
      ],
      "licenses": [
        {
          "license": {
            "id": "MIT"
          }
        }
      ]
    }
  ]
}

SPDX

Standard Linux Foundation. SPDX 3.0.1 jest aktualną wersją specyfikacji SPDX; SPDX 2.2.1 jest uznany jako ISO/IEC 5962:2021, a ISO/IEC DIS 5962 obejmuje prace nad rewizją SPDX 3.0. BSI TR-03183 wymaga SPDX 3.0.1 lub nowszego. Kompleksowa składnia wyrażeń licencyjnych, dłuższa historia w zakresie zgodności łańcucha dostaw i lepsze przetwarzanie złożonych scenariuszy licencyjnych. SPDX należy wybrać, gdy przepływ pracy jest zdominowany przez zgodność licencyjną i przegląd prawny.

Przykładowy wpis komponentu SPDX:

{
  "spdxVersion": "SPDX-2.3",
  "dataLicense": "CC0-1.0",
  "SPDXID": "SPDXRef-DOCUMENT",
  "name": "my-application",
  "packages": [
    {
      "SPDXID": "SPDXRef-Package-lodash",
      "name": "lodash",
      "versionInfo": "4.17.21",
      "downloadLocation": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
      "licenseConcluded": "MIT",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "cc6d..."
        }
      ]
    }
  ]
}

Jak wybrać format

Przypadek użycia Rekomendacja
Priorytetem jest bezpieczeństwo i podatności CycloneDX
Priorytetem jest zgodność licencyjna SPDX
Wymagana integracja VEX dla procesów zarządzania podatnościami CycloneDX
Przedsiębiorstwo z istniejącymi narzędziami SPDX SPDX
Rynek niemiecki (zgodność z BSI TR-03183) Dowolny (oba zalecane)
Start bez wcześniejszych preferencji formatowych CycloneDX (prostszy, ukierunkowany na bezpieczeństwo)

W przypadku zgodności z CRA oba formaty są właściwe. CRA nie wskazuje preferowanego formatu. Należy wybrać jeden i stosować go konsekwentnie w całym portfolio produktów. Oba formaty można generować z tej samej kompilacji przy użyciu narzędzi takich jak Syft lub Trivy, jednak ustandaryzowanie jednego formatu zmniejsza koszty operacyjne.

Wymagania dotyczące pól z BSI TR-03183 dotyczą obu formatów

Wybrany format nie wpływa na to, które pola należy wypełnić. Nazwa, wersja, dostawca, PURL, skrót, licencja i relacje zależności są wymagane zgodnie z BSI TR-03183 niezależnie od tego, czy SBOM jest w formacie CycloneDX, czy SPDX.

Najczęściej zadawane pytania

Jakie formaty SBOM są akceptowane przez CRA?

CRA wymaga formatów „powszechnie używanych i nadających się do odczytu maszynowego". CycloneDX (OWASP) i SPDX (Linux Foundation) to dwa formaty spełniające ten wymóg. Rozporządzenie nie wymienia ich z nazwy, jednak żaden inny format nie spełnia w praktyce tego wymogu.

CycloneDX czy SPDX: który wybrać dla zgodności z CRA?

Oba formaty spełniają wymóg CRA dotyczący „powszechnie używanych i nadających się do odczytu maszynowego" formatów. CycloneDX należy wybrać, gdy priorytetem jest bezpieczeństwo: ma natywną obsługę VEX (Vulnerability Exploitability eXchange), ściślejsze dopasowanie do procesów zarządzania podatnościami i jest coraz częściej wybieranym formatem dla narzędzi zgodnych z CRA. SPDX należy wybrać, gdy priorytetem jest zgodność licencyjna, szersze uznanie ISO (ISO/IEC 5962) lub gdy SPDX jest już stosowany w ramach wcześniejszych prac z zakresu zgodności z oprogramowaniem open source. Oba formaty można generować z tej samej kompilacji, jednak ustandaryzowanie jednego formatu w całym portfolio produktów zmniejsza koszty operacyjne. Wybór formatu nie wpływa na to, które pola są wymagane zgodnie z BSI TR-03183.

Co zrobić dalej

  1. Wybierz format: CycloneDX dla zespołów stawiających bezpieczeństwo na pierwszym miejscu, SPDX jeśli istnieją już procesy zgodności licencyjnej. W razie wątpliwości zacznij od CycloneDX (CRA nie wyznacza minimalnej wersji; używaj 1.6 lub nowszego, aby spełnić również BSI TR-03183).
  2. Sprawdź wymagane pola w odniesieniu do pól Wymaganych i Dodatkowych BSI TR-03183: nazwa, wersja, dostawca, PURL/CPE, skrót, zależności, licencje. Wymagania dotyczą obu formatów.
  3. Zapoznaj się z obowiązkami wynikającymi z Załącznika I, które musi spełniać SBOM: szczegóły dotyczące formatu, zakresu i zasad dokumentacji Załącznika VII zawiera strona wymogi CRA dotyczące SBOM.
  4. Zautomatyzuj generowanie w CI/CD przy użyciu Syft, Trivy lub cdxgen. Jednorazowy eksport nie spełnia ciągłego obowiązku aktualizacji, który jest wyzwalany przez każde wydanie, poprawkę lub zmianę komponentu.
  5. Umieść SBOM w dokumentacji technicznej zgodnie z Załącznikiem VII (pkt 2(b) dla opisu postępowania w przypadku podatności; pkt 8 dla kopii udostępnianych na wniosek). Przewodnik po dokumentacji technicznej pokazuje, gdzie ten element się mieści. Jeśli integrowanie przyjmowania SBOM od podstaw jest nieopłacalne, CRA Evidence obsługuje intake CycloneDX/SPDX i ocenę jakości zgodną z TR-03183 dla wszystkich wersji produktów.