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
evidencew 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
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.
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.