CycloneDX
CycloneDX jest otwartym standardem opisującym Software Bill of Materials (SBOM) – listę komponentów, zależności i metadanych używanych w aplikacjach oraz ich artefaktach. Standard został opracowany w ramach inicjatywy OWASP i po raz pierwszy opublikowany w 2020 roku. Jego głównym celem jest udostępnienie niezależnego i interoperacyjnego formatu, który umożliwia wymianę informacji o łańcuchu dostaw oprogramowania oraz wsparcie procesów zarządzania ryzykiem i bezpieczeństwa łańcucha dostaw.
Historia
W odpowiedzi na rosnące zapotrzebowanie na przejrzyste i standaryzowane dane o komponentach oprogramowania, grupa OWASP stworzyła projekt CycloneDX. Pierwsza wersja specyfikacji (1.0) została wydana w 2020 roku, a od tego czasu standard jest stale rozwijany – najnowsza stabilna wersja to 1.5, opublikowana w 2023 roku. Rozwój projektu jest otwarty i prowadzony przez społeczność, a jego kod źródłowy jest dostępny w repozytorium GitHub (link wewnętrzny do artykułu o platformie GitHub).
Zakres i przeznaczenie
CycloneDX służy do:
- Tworzenia i udostępniania SBOM w formacie JSON lub XML.
- Wspierania procesów Software Composition Analysis (SCA) oraz zarządzania podatnościami.
- Ułatwiania automatycznej integracji z narzędziami CI/CD, systemami zarządzania ryzykiem oraz platformami do monitorowania bezpieczeństwa.
- Umożliwienia zgodności z wymaganiami prawnymi i regulacyjnymi, takimi jak NIST czy ISO 27001.
Struktura specyfikacji
Specyfikacja CycloneDX definiuje następujące podstawowe sekcje dokumentu:
- metadata – informacje o projekcie, wersji, autorach oraz zastosowanych standardach.
- components – lista komponentów (bibliotek, modułów, kontenerów) wraz z ich identyfikatorami, wersjami, licencjami i źródłami.
- dependencies – zależności pomiędzy komponentami, opisujące drzewo zależności.
- services – opis usług zewnętrznych i API, które są wykorzystywane przez aplikację.
- vulnerabilities – opcjonalna sekcja zawierająca znane podatności i ich referencje.
Formaty plików
Dokumenty CycloneDX mogą być zapisywane w dwóch głównych formatach:
- JSON – bardziej kompaktowy, łatwy do przetwarzania w aplikacjach webowych i skryptach.
- XML – lepszy do integracji z istniejącymi systemami opartymi na XML oraz do walidacji przy użyciu schematów XSD.
Wsparcie narzędziowe
Wiele popularnych narzędzi i platform wspiera generowanie oraz analizę CycloneDX, m.in.:
- Maven i Gradle – wtyczki do generowania SBOM dla projektów Java.
- npm oraz Yarn – integracje umożliwiające eksport zależności Node.js.
- Docker – narzędzia do tworzenia SBOM z obrazów kontenerowych.
- Komercyjne platformy SCA, takie jak Snyk, Black Duck czy WhiteSource, które potrafią importować i analizować pliki CycloneDX.
Powiązane standardy
CycloneDX współistnieje i jest kompatybilny z innymi standardami SBOM, w tym:
- SPDX – rozwijany przez Linux Foundation, koncentrujący się na licencjonowaniu i prawach własności.
- ISO/IEC 19770‑2 – opisujący metodologię zarządzania zasobami oprogramowania.
Licencja i rozwój
Specyfikacja oraz wszystkie narzędzia referencyjne CycloneDX są udostępniane na licencji Apache License 2.0, co pozwala na szerokie wykorzystanie komercyjne oraz modyfikacje przez społeczność.
Znaczenie dla bezpieczeństwa i zgodności
Dzięki standaryzowanemu opisowi komponentów, CycloneDX umożliwia:
- Szybką identyfikację komponentów zawierających podatności z baz NVD lub CVE.
- Automatyzację procesów zarządzania licencjami i ryzykiem prawnym.
- Ułatwienie audytów bezpieczeństwa i spełniania wymagań regulacyjnych, np. Executive Order on Improving the Nation’s Cybersecurity w Stanach Zjednoczonych.