EA - Czym jest Software Bill of Materials?

 SBOM (Software Bill of Materials), czyli "spis treści" oprogramowania, to dokument, który zawiera szczegółowy wykaz wszystkich komponentów używanych w danej aplikacji, w tym bibliotek open-source, frameworków i innych zależności. W kontekście narzędzia OWASP Dependency-Track, SBOM pełni kluczową rolę w zarządzaniu bezpieczeństwem i zgodnością oprogramowania.


Dlaczego SBOM jest ważne?

  1. Przejrzystość: Dzięki SBOM zespół ma pełny obraz używanych zależności, co ułatwia identyfikację potencjalnych podatności.
  2. Zgodność regulacyjna: SBOM staje się coraz bardziej wymagane przez przepisy prawa, takie jak Executive Order on Improving the Nation’s Cybersecurity w USA, które nakładają obowiązek dostarczania SBOM przez dostawców oprogramowania.
  3. Monitorowanie ryzyk: SBOM pozwala szybko reagować na nowe podatności, ponieważ dokładnie wiadomo, które komponenty wymagają uwagi.

Dependency-Track i SBOM

Dependency-Track automatycznie generuje i zarządza SBOM dla każdego projektu. Narzędzie obsługuje formaty standardowe, takie jak:

  • CycloneDX – rekomendowany format SBOM rozwijany przez OWASP.
  • SPDX (Software Package Data Exchange) – szeroko stosowany w dużych projektach open-source.

Dzięki wbudowanej obsłudze SBOM, Dependency-Track:

  • Analizuje wszystkie komponenty wymienione w SBOM pod kątem znanych podatności.
  • Monitoruje zmiany w zależnościach na przestrzeni czasu.
  • Pozwala na łatwe udostępnianie SBOM interesariuszom i partnerom w celu spełnienia wymagań zgodności.

Praktyczne zastosowanie SBOM

Przykład: Jeśli pojawi się nowa podatność w popularnej bibliotece open-source, Dependency-Track automatycznie porówna SBOM projektu z bazą danych podatności (np. CVE). Jeśli podatna wersja znajduje się w projekcie, zespół natychmiast otrzyma ostrzeżenie wraz z zaleceniem aktualizacji lub usunięcia podatnego komponentu.

Budowanie SBOM (Software Bill of Materials) jest kluczowe dla zarządzania bezpieczeństwem zależności w projektach programistycznych. W różnych językach programowania można wykorzystać różne narzędzia i techniki do automatycznego generowania SBOM. Poniżej przedstawiam najpopularniejsze rozwiązania dla języków Java, C#, PHP i JavaScript.

1. Java

Java wykorzystuje narzędzia zarządzania zależnościami, takie jak Maven czy Gradle, które są kompatybilne z formatami SBOM, takimi jak CycloneDX.

Budowanie SBOM w Maven:

  1. Zainstaluj wtyczkę CycloneDX:
    <plugin> <groupId>org.cyclonedx</groupId> <artifactId>cyclonedx-maven-plugin</artifactId> <version>2.7.9</version> </plugin>
  2. Uruchom wtyczkę:
    mvn cyclonedx:makeAggregateBom
  3. Plik SBOM (bom.xml) zostanie wygenerowany w katalogu projektu.

Budowanie SBOM w Gradle:

  1. Dodaj wtyczkę CycloneDX do build.gradle:
    plugins { id "org.cyclonedx.bom" version "1.7.4" }
  2. Wygeneruj SBOM:
    gradle cyclonedxBom
  3. Plik SBOM (bom.xml lub bom.json) znajdziesz w katalogu build/reports.

2. C#

W ekosystemie .NET generowanie SBOM można zrealizować za pomocą narzędzia dotnet CLI lub specjalnych bibliotek.

Budowanie SBOM za pomocą dotnet CLI:

  1. Zainstaluj narzędzie dotnet-project-assets:
    dotnet tool install -g dotnet-project-assets
  2. Wygeneruj SBOM:
    dotnet-project-assets
  3. Plik sbom.json zawierający zależności projektu zostanie utworzony.

Inne narzędzia:

  • Użycie platformy CycloneDX: istnieją gotowe wtyczki dla .NET pozwalające na generowanie SBOM w formacie CycloneDX.

3. PHP

W projektach PHP zależności są zarządzane przez Composer, który również wspiera generowanie SBOM.

Budowanie SBOM za pomocą Composer:

  1. Dodaj wtyczkę Composer CycloneDX:
    composer require --dev cyclonedx/cyclonedx-php-composer
  2. Wygeneruj SBOM:
    vendor/bin/cyclonedx-composer make-bom
  3. Plik SBOM (bom.json) zostanie zapisany w katalogu projektu.

Dodatkowe rozwiązania:

  • Narzędzia takie jak SCA (Software Composition Analysis) mogą również generować SBOM dla projektów PHP.

4. JavaScript (Node.js)

W projektach JavaScript i Node.js używa się narzędzi takich jak npm lub yarn do zarządzania zależnościami.

Budowanie SBOM za pomocą CycloneDX npm:

  1. Zainstaluj CycloneDX CLI:
    npm install -g @cyclonedx/cyclonedx-npm
  2. Wygeneruj SBOM:

    cyclonedx-npm --output bom.json
  3. Plik bom.json zostanie zapisany w katalogu projektu.

Budowanie SBOM za pomocą yarn:

  1. Zainstaluj wtyczkę CycloneDX:
    yarn global add @cyclonedx/cyclonedx-npm
  2. Wygeneruj SBOM:
    cyclonedx-npm --output bom.json


Podsumowanie roli SBOM w Dependency-Track

SBOM jest fundamentem skutecznego zarządzania zależnościami. W kontekście Dependency-Track to nie tylko dokument, ale także narzędzie, które zapewnia bezpieczeństwo, przejrzystość i zgodność oprogramowania. Dzięki automatycznemu generowaniu i monitorowaniu SBOM, zespoły DevOps mogą zyskać pełną kontrolę nad komponentami swoich aplikacji i szybko reagować na pojawiające się zagrożenia.

Komentarze