O 123% więcej zgłoszonych CVE dziennie w 2026 niż przed rokiem.

Łańcuch dostaw

Czym jest SLSA?

SLSA, wymawiane „salsa”, to skrót od Supply-chain Levels for Software Artifacts. To framework bezpieczeństwa pozwalający udowodnić, że oprogramowanie zbudowano tak, jak twierdzi jego producent, z deklarowanego źródła i bez ingerencji po drodze. Jego poziomy dają producentom ścieżkę do przejścia, a odbiorcom sposób, by tego wymagać.

Zaktualizowano

Jaki problem rozwiązuje SLSA?

Można przejrzeć każdy wiersz kodu źródłowego, a mimo to dostarczyć coś innego, ponieważ użytkownicy uruchamiają wynik buildu. Jeśli build zostanie przejęty, jak w przypadku SolarWinds, czysty kod źródłowy daje zatrute wydanie. SLSA skupia się na tej luce: czy ktokolwiek może zweryfikować, że ten artefakt powstał z tego źródła, w tym procesie?

Poziomy SLSA

SLSA porządkuje wymagania w ścieżki (tracks). Obecna wersja 1.2 ma ścieżkę Build i ścieżkę Source. Ścieżka Build ma cztery poziomy.

Poziom Nazwa Czego wymaga Co daje
Build L0 Brak gwarancji Niczego L0 oznacza brak SLSA
Build L1 Istnieją dane o pochodzeniu Spójnego procesu buildu oraz danych o pochodzeniu generowanych przez platformę buildu i przekazywanych odbiorcom Pomaga zapobiegać pomyłkom, ale łatwo to obejść lub sfałszować
Build L2 Hostowana platforma buildu Buildy działają na hostowanej platformie, która generuje i podpisuje dane o pochodzeniu, a odbiorcy je weryfikują Sfałszowanie danych o pochodzeniu wymaga już celowego ataku
Build L3 Utwardzone buildy Uruchomienia są od siebie odizolowane, a sekret podpisujący jest poza zasięgiem kroków buildu zdefiniowanych przez użytkownika Sfałszowanie danych o pochodzeniu wymaga wykorzystania podatności, co przekracza możliwości większości przeciwników

Poziomy to nie ocena, którą trzeba maksymalizować. Każdy chroni przed konkretnymi zagrożeniami, dlatego należy wybrać poziom odpowiedni do swojego ryzyka. Opiekunowie projektów open source korzystający z hostowanej usługi CI często mogą osiągnąć L2 bez większego wysiłku.

Czym jest pochodzenie (provenance)?

Dane o pochodzeniu to zapis tego, jak powstał artefakt. W SLSA mówią, która platforma go zbudowała, z jakiego źródła, w jakim procesie i z jakimi wejściami najwyższego poziomu. Od poziomu L2 dane o pochodzeniu są podpisywane, więc odbiorca może sprawdzić, że pochodzą z platformy buildu i nie zostały zmienione.

SBOM to składniki, a dane o pochodzeniu mówią, gdzie i jak przyrządzono danie. Odpowiadają na różne pytania i dobrze się uzupełniają: SBOM wymienia, co jest w środku, a dane o pochodzeniu mówią, skąd pochodzi artefakt.

Jak wdrożyć SLSA

  1. Budować w CI, za każdym razem tak samo. Przestać publikować wydania z laptopów. To większość pracy potrzebnej do osiągnięcia L1.
  2. Generować dane o pochodzeniu. W GitHub atestacje artefaktów (artifact attestations) tworzą podpisane dane o pochodzeniu. Zob. jak atestacje współpracują z SBOM-ami w GitHub Actions.
  3. Weryfikować je tam, gdzie to ma znaczenie. Podpisane dane o pochodzeniu, których nikt nie sprawdza, nikogo nie chronią. Weryfikację należy dodać do kroku wdrożenia lub kontrolera dopuszczania (admission controller).
  4. Utwardzać build. Izolować uruchomienia i trzymać klucze podpisujące z dala od kroków buildu. Zob. porównanie bezpieczeństwa runnerów.
  5. Wymagać tego od zależności. Wybierać pakiety publikujące dane o pochodzeniu, co obsługują już rejestry takie jak npm.

Czego SLSA nie obejmuje

  • Podatności. Doskonale zbudowany artefakt może zawierać błąd. SLSA nie mówi nic o tym, czy kod jest bezpieczny.
  • Złośliwego kodu źródłowego. Jeśli napastnik zatwierdzi zmiany w repozytorium, dane o pochodzeniu wiernie zapiszą build tego kodu. Część tego problemu rozwiązuje ścieżka Source.
  • Tego, co build pobrał. Dane o pochodzeniu wymieniają wejścia najwyższego poziomu. Nic w ścieżce Build nie wymaga pełnej listy zależności, a właśnie do tego służy SBOM.
  • Zaufanych osób z wewnątrz. Tylna furtka w xz pojawiła się za sprawą zaufanego opiekuna i samo SLSA by jej nie zatrzymało.

SLSA a inne frameworki

SLSA dogłębnie zajmuje się integralnością buildu. NIST SSDF jest znacznie szerszy: obejmuje bezpieczne wytwarzanie jako całość, w tym praktykę ochrony i archiwizacji wydań, którą wspierają dane o pochodzeniu SLSA. SLSA jest projektem OpenSSF, a wiele zespołów używa obu razem. Szerszy obraz przedstawia strona czym jest bezpieczeństwo łańcucha dostaw oprogramowania.

Miejsce CRACI

CRACI nie tworzy podpisanych danych o pochodzeniu i nie deklaruje żadnego poziomu SLSA, więc jeśli jest on Państwu potrzebny, należy skorzystać z atestacji artefaktów GitHub lub podobnej usługi. CRACI dodaje to, co SLSA pomija: pełny zapis tego, co pobrało każde zadanie GitHub Actions. Każde zadanie działa we własnej, odizolowanej maszynie wirtualnej, każdy pobrany pakiet trafia do SBOM, a polityka ruchu wychodzącego blokuje połączenia zbędne dla buildu. Zob. generowanie SBOM w czasie buildu.

SLSA: najczęściej zadawane pytania

Co oznacza skrót SLSA?

Supply-chain Levels for Software Artifacts. Wymawia się go „salsa”.

Jakie są poziomy SLSA?

Ścieżka Build ma cztery: L0, brak gwarancji; L1, istnieją dane o pochodzeniu; L2, hostowana platforma buildu podpisująca dane o pochodzeniu; oraz L3, utwardzone buildy z izolowanymi uruchomieniami i chronionymi sekretami podpisującymi. Wersja 1.2 dodaje też ścieżkę Source.

Czym są dane o pochodzeniu w SLSA?

To zapis tego, jak zbudowano artefakt: na jakiej platformie, z jakiego źródła, w jakim procesie i z jakimi wejściami najwyższego poziomu. Od poziomu Build L2 są podpisywane, więc odbiorcy mogą je zweryfikować.

Jaka jest różnica między SLSA a SBOM?

SBOM wymienia, co jest w oprogramowaniu. Dane o pochodzeniu SLSA opisują, jak i gdzie je zbudowano. Zwykle potrzebne jest jedno i drugie.

Czy SLSA jest obowiązkowe?

Nie. To dobrowolny framework społeczności OpenSSF. Niektórzy klienci i organizacje mogą wymagać określonego poziomu, ale nie jest to prawo.

Do którego poziomu SLSA dążyć?

Warto zacząć od Build L1, budując w CI i generując dane o pochodzeniu, a następnie przejść na L2 na hostowanej platformie, co wiele zespołów osiąga szybko. L3 jest odpowiedni dla wydań, od których zależy wielu innych lub które wiążą się z wysokim ryzykiem.

Co naprawdę pobrał Państwa build

Dane o pochodzeniu mówią, skąd pochodzi artefakt. Proszę zobaczyć, co do niego trafiło, dla każdego zadania GitHub Actions.

Umów demo