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 2.2.1 jest wersją ustandaryzowaną jako ISO/IEC 5962:2021; SPDX 2.3 to aktualna stabilna wersja zachowująca wsteczną zgodność z bazą ISO. SPDX 3.0 jest opracowywany jako ISO/IEC DIS 5962
  • 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
VEX
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 2.3 (aktualna); 3.0 w ISO DIS
Uznanie standardów OWASP, ECMA TC54 (w toku) ISO/IEC 5962:2021 (obejmuje SPDX 2.2.1)
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 2.2.1 jest uznany jako ISO/IEC 5962:2021; SPDX 2.3 to aktualna stabilna wersja zachowująca wsteczną zgodność z bazą ISO. 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 (minimum wersja 1.4 dla CRA).
  2. Sprawdź wymagane pola w odniesieniu do poziomów jakości 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), gotowy dla organów nadzoru rynku. 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.