SBOM (wykaz komponentów oprogramowania)
| Po angielsku | software bill of materials (SBOM) |
|---|---|
| Którą formą pisać | bez tłumaczenia Skrót, nazwa własna albo nazwa standardu — nie tłumaczymy w ogóle. |
| Inne formy | wykaz komponentów oprogramowania · spis komponentów oprogramowania · zestawienie podstawowych materiałów do produkcji oprogramowania |
| Kategoria | Chmura, kontenery i łańcuch dostaw |
SBOM (Software Bill of Materials) to maszynowo czytelny wykaz komponentów, bibliotek i zależności, z których składa się oprogramowanie, wraz z ich wersjami. CISA opisuje SBOM jako zagnieżdżony spis, listę składników tworzących komponenty oprogramowania [1]. NTIA definiuje go jako formalny zapis szczegółów i relacji w łańcuchu dostaw komponentów użytych do zbudowania oprogramowania [2]. Dzięki takiemu wykazowi można szybko sprawdzić, czy produkt zawiera element z nowo ogłoszoną podatnością.
Jak działa
SBOM powstaje zwykle automatycznie podczas budowania oprogramowania. Narzędzie odczytuje pliki zależności, na przykład composer.lock czy package-lock.json, i zapisuje listę komponentów w standardowym formacie. Wykaz trafia do dokumentacji produktu albo do odbiorcy. Gdy pojawia się nowy wpis CVE, odbiorca porównuje go z wykazem, zamiast przeszukiwać kod.
Porównanie z bazą podatności, na przykład OSV, daje listę trafień. Nie każde trafienie oznacza realne zagrożenie: podatna funkcja może nie być używana. Do przekazania tej informacji służy VEX, czyli według CISA poświadczenie w formie komunikatu bezpieczeństwa, które mówi, czy produkt jest dotknięty znaną podatnością [1]. Cały obieg pokazuje schemat poniżej.
Składniki
Raport NTIA z 12 lipca 2021 roku, przygotowany na polecenie amerykańskiego rozporządzenia wykonawczego 14028, określa minimalne elementy SBOM [2]. Dane o każdym komponencie zestawia tabela.
| Pole | Znaczenie |
|---|---|
| dostawca [2] | kto wytworzył komponent |
| nazwa komponentu [2] | jak komponent się nazywa |
| wersja [2] | którą wersję użyto |
| inne unikalne identyfikatory [2] | np. identyfikator pakietu |
| relacja zależności [2] | co zależy od czego |
| autor danych SBOM [2] | kto sporządził wykaz |
| znacznik czasu [2] | kiedy wykaz powstał |
CISA opublikowała w 2025 roku projekt zaktualizowanych minimalnych elementów SBOM do konsultacji [1].
Formaty
W praktyce używa się dwóch otwartych standardów.
- CycloneDX rozwijają OWASP Foundation i Ecma International; specyfikacja została znormalizowana jako ECMA-424 [5]. Poza SBOM opisuje też wymianę informacji o podatnościach (VEX) i dostępna jest w JSON, XML i Protocol Buffers [5].
- SPDX to otwarty standard przekazywania informacji o składzie oprogramowania, w tym o pochodzeniu, licencjach i bezpieczeństwie; jest uznany jako norma ISO/IEC 5962:2021 i rozwijany jako projekt Linux Foundation [6].
Znaczenie
SBOM skraca czas od ogłoszenia podatności do odpowiedzi na pytanie, czy dotyczy ona danego produktu. Jest narzędziem zarządzania podatnościami i zarządzania ryzykiem dostawców (third-party risk management), a także podstawą obrony przed atakiem na łańcuch dostaw (supply chain attack). Sekurak, omawiając zgodność z NIS2, wymienia prowadzenie wykazu komponentów obok oceny kondycji projektów, zamrażania wersji, weryfikacji sum kontrolnych i szybkiej reakcji na podatności [8].
W Unii Europejskiej SBOM staje się obowiązkiem prawnym. Akt o cyberodporności (Cyber Resilience Act) w załączniku I wymaga od producentów identyfikowania i dokumentowania podatności i komponentów produktu, w tym sporządzenia zestawienia podstawowych materiałów do produkcji oprogramowania w powszechnie stosowanym formacie nadającym się do odczytu maszynowego, obejmującego co najmniej zależności najwyższego poziomu [3]. Organy nadzoru rynku mogą zwrócić się do producentów o przedłożenie takich zestawień [3]. Rozporządzenie weszło w życie 10 grudnia 2024 roku, obowiązki zgłaszania stosuje się od 11 września 2026 roku, a główne przepisy od 11 grudnia 2027 roku [4].
Ograniczenia
SBOM jest tylko wykazem. Nie usuwa podatności, nie ocenia jakości kodu i nie mówi, czy komponent jest nadal utrzymywany. Jego wartość zależy od kompletności: wykaz obejmujący tylko zależności bezpośrednie pominie biblioteki dołączone pośrednio. Wymóg aktu o cyberodporności obejmuje co najmniej zależności najwyższego poziomu [3], więc głębszy wykaz jest decyzją producenta. Wykaz starzeje się też z każdą aktualizacją, dlatego powinien powstawać razem z każdym wydaniem. Wreszcie SBOM odpowiada na pytanie, co jest w produkcie, ale nie na pytanie, czy da się to wykorzystać; do tego służą ocena trafień i dokumenty VEX [1].
W WordPressie
Strona WordPress to zbiór komponentów: rdzeń, wtyczki, motywy i biblioteki dołączone do nich przez autorów. Wytyczne katalogu WordPress.org wymagają, by wtyczki korzystały z bibliotek dostarczanych przez WordPress, takich jak jQuery, SimplePie czy PHPMailer, zamiast dołączać własne kopie [7]. Inne biblioteki, np. instalowane przez Composer, wtyczka może mieć w swoim katalogu i właściciel strony zwykle ich nie widzi.
Taka ukryta biblioteka bywa źródłem podatności we wtyczce, o której właściciel strony dowiaduje się dopiero z komunikatu autora. Kategoria Vulnerable and Outdated Components z listy OWASP opisuje właśnie ten problem. Namiastką SBOM na poziomie witryny jest spis wtyczek i motywów z wersjami, np. z polecenia wp plugin list, porównywany z bazami podatności. Warto przy tym oznaczać porzucone wtyczki, bo dla nich nikt nie wyda poprawki.
Autorzy wtyczek komercyjnych, którzy sprzedają je w UE, powinni sprawdzić, czy ich produkt podlega aktowi o cyberodporności [4].
Dobre praktyki
- Generować SBOM automatycznie przy każdym wydaniu, a nie ręcznie.
- Używać formatu CycloneDX albo SPDX [5] [6], żeby wykaz dało się przetwarzać narzędziami.
- Porównywać wykaz z bazami podatności stale, a nie tylko w chwili wydania; zob. skanowanie podatności.
- Publikować VEX dla trafień, które nie dotyczą produktu [1].
- Łączyć SBOM z podpisywaniem kodu (code signing), by odbiorca wiedział, że wykaz i artefakt pochodzą od producenta.
- Dla obrazów kontenerów stosować skanowanie obrazów kontenerów przed wdrożeniem.
Przypisy
8- [1] Software Bill of Materials (SBOM) · CISA
- [2] The Minimum Elements For a Software Bill of Materials (SBOM) · NTIA
- [3] Rozporządzenie (UE) 2024/2847 (akt o cyberodporności) · EUR-Lex
- [4] Cyber Resilience Act — summary · Komisja Europejska
- [5] CycloneDX Specification Overview · OWASP / Ecma International
- [6] SPDX Overview · Linux Foundation
- [7] Detailed Plugin Guidelines · WordPress.org
- [8] Czy open source wystarczy do zapewnienia zgodności z NIS2/KSC2? · Sekurak
Hasła w tym artykule
14Linkują tutaj
15- Vulnerable and Outdated Components
- atak na łańcuch dostaw
- biuletyn bezpieczeństwa
- zero-day
- prototype pollution
- zarządzanie podatnościami
- zarządzanie poprawkami
- due diligence
- slopsquatting
- akt o cyberodporności
- zatruwanie danych / zatruwanie modelu
- dependency confusion (podmiana zależności)
- skanowanie obrazów kontenerów
- NVD
- OSV