Software Bill of Materials (SBOM)
Software Bill of Materials (SBOM), w dosłownym tłumaczeniu lista materiałów oprogramowania, to szczegółowy spis wszystkich komponentów, bibliotek i zależności, które tworzą dany produkt oprogramowanie. Dokument ten pełni rolę „składu” aplikacji, podobnie jak lista składników w produkcie spożywczym, umożliwiając identyfikację, analizę i zarządzanie elementami użytymi w procesie tworzenia oprogramowania.
Historia i geneza
Pierwsze koncepcje podobne do SBOM pojawiły się w latach 1990 w kontekście zarządzania pakietami w systemach Linux. Wzrost popularności oprogramowania open source oraz rosnące zagrożenia w łańcuchu dostaw cyberbezpieczeństwa przyspieszyły potrzebę standaryzacji takiej dokumentacji. W 2015 r. inicjatywa NIST opublikowała wytyczne dotyczące SBOM w ramach Frameworku Cyberbezpieczeństwa. Kolejne lata przyniosły rozwój standardów, m.in. SPDX (Software Package Data Exchange) oraz CycloneDX.
Cel i zastosowania
- Bezpieczeństwo informacji – umożliwia szybką identyfikację podatności w konkretnych komponentach oraz ich szybką aktualizację.
- Zarządzanie ryzykiem – pozwala ocenić ryzyko związane z użyciem komponentów o niejasnym pochodzeniu lub o nieaktualnych licencjach.
- Zgodność licencyjna – ułatwia śledzenie licencji open source (np. MIT, GPL) i zapewnia zgodność z wymogami prawnymi.
- Utrzymanie i wsparcie techniczne – przyspiesza diagnozę problemów oraz planowanie aktualizacji.
- Audyt i certyfikacja – stanowi dowód transparentności w procesie tworzenia oprogramowania, co jest wymagane w niektórych branżach (np. lotnictwo, medycyna).
Struktura SBOM
Standardowy SBOM zawiera następujące elementy:
- Identyfikator komponentu – unikalny identyfikator (np.
purl,cpe). - Nazwa i wersja – pełna nazwa komponentu oraz wersja.
- Producent / dostawca – informacje o podmiocie dostarczającym komponent.
- Licencja – wskazanie obowiązującej licencji.
- Hashy kryptograficzne – sumy kontrolne (SHA‑1, SHA‑256) umożliwiające weryfikację integralności.
- Zależności (dependency tree) – powiązania między komponentami, tworzące drzewo zależności.
- Metadane – data utworzenia, narzędzia użyte do generacji SBOM, informacje o środowisku budowy.
Standardy i formaty
Najbardziej rozpowszechnione formaty SBOM to:
- SPDX – opracowany przez Linux Foundation, używa formatu JSON, YAML lub XML.
- CycloneDX – lekki format JSON/XML, skoncentrowany na bezpieczeństwie aplikacji i zarządzaniu podatnościami.
- SWID (Software Identification Tag) – standard opracowany przez ISO/IEC, głównie stosowany w środowiskach korporacyjnych.
Praktyka tworzenia SBOM
Generowanie SBOM może odbywać się na różnych etapach cyklu życia oprogramowania:
- Budowanie – narzędzia takie jak
syft,bom(w ramach CycloneDX) lubspdx-toolsanalizują artefakty i generują SBOM. - CI/CD – integracja w pipeline’ach Jenkins, GitHub Actions zapewnia automatyczne aktualizowanie SBOM przy każdej zmianie kodu.
- Dystrybucja – SBOM może być dołączone do paczek RPM, DEB, kontenerów Docker (manifest), a także udostępniane w repozytoriach typu Artifact Hub.
Wyzwania i ograniczenia
- Kompleksowość – w dużych projektach liczba komponentów może przekraczać setki tysięcy, co utrudnia utrzymanie aktualnego SBOM.
- Dynamiczne zależności – w środowiskach kontejnerowych i serverless nie zawsze wszystkie zależności są znane w czasie kompilacji.
- Prywatność i własność – ujawnienie szczegółowych informacji o komponentach może naruszyć tajemnice handlowe.
- Standaryzacja – różne branże przyjmują odrębne formaty, co utrudnia wymianę danych pomiędzy organizacjami.
Rola SBOM w łańcuchu dostaw oprogramowania
SBOM jest kluczowym elementem bezpieczeństwa łańcucha dostaw. Dzięki niemu organizacje mogą:
- Śledzić pochodzenie komponentów (tzw. software provenance).
- Szybko reagować na nowe podatności poprzez automatyczne dopasowanie ich do istniejących SBOM.
- Wdrożyć polityki Zero Trust w kontekście oprogramowania.
Regulacje prawne i wytyczne
W ostatnich latach wprowadzono szereg regulacji wymagających od dostawców utrzymywania SBOM, m.in.:
- Executive Order 14028 (USA) – nakazuje federalnym agencjom i ich kontrahentom publikowanie SBOM.
- Dyrektywa UE 2021/xxx – zobowiązuje podmioty działające w Unii do udostępniania SBOM w sektorze krytycznej infrastruktury.
- ISO/IEC 20247 – norma dotycząca identyfikacji i zarządzania komponentami oprogramowania.
Przyszłość SBOM
Perspektywy rozwoju SBOM obejmują:
- Integrację z sztuczną inteligencją do automatycznej klasyfikacji i oceny ryzyka komponentów.
- Rozszerzenie o metadane związane z zarządzaniem łańcuchem dostaw, takie jak daty wycofania komponentów.
- Ustandaryzowane API do wymiany SBOM pomiędzy dostawcami, klientami i platformami chmurowymi.
Podsumowanie
Software Bill of Materials stał się nieodzownym narzędziem w nowoczesnym rozwoju oprogramowania. Dzięki przejrzystości, jaką zapewnia, organizacje mogą lepiej zarządzać ryzykiem, zapewniać zgodność licencyjną oraz reagować na zagrożenia w łańcuchu dostaw. W miarę rosnącej liczby regulacji i wymagań bezpieczeństwa, rola SBOM będzie tylko wzrastać, przyczyniając się do bardziej odpornych i transparentnych ekosystemów programistycznych.