Open Source pod kontrolą

Damian Fajfer
Jesień Linuksowa · Kraków, 23.10.2026

Jesień Linuksowa 2026 · Kraków
Wstęp

O mnie

Damian Fajfer

Architekt Bezpieczeństwa Aplikacji
Bank Pekao S.A.

Bezpieczeństwo SDLC, Platform Engineering, Chmury, Kubernetes

Afiliacje

  • koordynator we Free Software Foundation Europe
  • Członek OpenChain Meridian 22
  • Polska Grupa Użytkowników Linuxa
  • Warszawski Hackerspace
  • Fundacja Wolnego Oprogramowania Reszka
Jesień Linuksowa 2026 · Kraków
Wstęp

Piątek, 10 grudnia 2021

„Czy mamy Log4j?”

Jesień Linuksowa 2026 · Kraków
Wstęp

Piątek, 10 grudnia 2021

„Czy mamy Log4j? A jeśli tak, to gdzie?”

Jesień Linuksowa 2026 · Kraków
Wstęp

Piątek, 10 grudnia 2021

„Czy mamy Log4j? A jeśli tak, to gdzie?”

Kto znał odpowiedź po godzinie? Po dniu? Po tygodniu? Miesiącach?

Jesień Linuksowa 2026 · Kraków
Wstęp



Źródło: https://tools.spdx.org/app/spdx3_viz/

Jesień Linuksowa 2026 · Kraków
Wstęp
Jesień Linuksowa 2026 · Kraków
Wstęp

5 lat później

Regulacje wymagają zarządzania otwartymi źródłami

  • Wymogi DORA w sektorze finansowym (również dla dostawców)
  • Nadchodzące wymogi CRA (przekazywanie SBOMów produktów)

Ktoś mógłby zastanawiać się - po co?

Jesień Linuksowa 2026 · Kraków
Wstęp

Open Source nie jest dostawcą

Odpowiedzialność jest po stronie użytkownika

  1. Jak działa ekosystem Open Source?
  2. Mechanizmy warstwowego modelu ochrony
  3. Odpowiedzialność po stronie organizacji
Jesień Linuksowa 2026 · Kraków
Wstęp

Część 1

Jak działa ekosystem Open Source

Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Na czym stoi Twoja aplikacja?

Warstwa Kto ją utrzymuje?
Twoja aplikacja Ty
Framework fundacje, korporacje, konsorcja
Biblioteka społeczność, od jednej do kilku osób
Zależności Twoich zależności zwykle nikt nie sprawdza
Inna biblioteka jedna osoba, po godzinach
Obraz bazowy, system, środowisko uruchomieniowe fundacje, korporacje, konsorcja
Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Większość oprogramowania ma jednego konserwatora


Źródło: https://opensourcesecurity.io/2025/08-oss-one-person/

Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Projekty powyżej 1 mln pobrań miesięcznie


Źródło: https://opensourcesecurity.io/2025/08-oss-one-person/

Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Mapa ekosystemu

Fundacje

Apache, Linux Foundation, Eclipse, PSF. Zarządzanie, infrastruktura, standardy.

Firmy, konsorcja

Zatrudniają maintainerów, sprzedają wsparcie i produkty z open source w środku.

Maintainerzy

Często wolontariusze. Nie mają wobec Ciebie żadnych zobowiązań (eg. Daniel Stenberg i korporacja MetLife)

Dystrybucje

Debian, Fedora, Rancher. Wybierają, budują, łatają i utrzymują stabilne wydania.

Rejestry

npm, PyPI, Maven Central, Docker Hub. Hostują paczki, nie gwarantują ich jakości.

Ty

Bierzesz to wszystko i wdrażasz na produkcję.

Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Droga paczki: od zmiany do produkcji

Źródło Build Rejestr Wejście Nasz build Środowisko
Kto/co maintainer CI projektu npm, PyPI, Maven Central proxy, mirror nasz CI, środowiska deweloperskie produkcja
Zakładamy, że… kod jest bezpieczny artefakt powstał z tego kodu pobieramy ten artefakt to jest dokładnie ten sam artefakt budujemy ze sprawdzonych składników uruchamiamy to, co zbudowaliśmy
Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Maintainer nie jest Twoim dostawcą

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND…
– licencja MIT

Nie ma

  • umowy, SLA ani terminu na poprawkę
  • obowiązku odpowiadania na zgłoszenia i maile
  • gwarancji, że projekt będzie przez niego utrzymywany

Jest

  • kod, który możesz użyć, przeanalizować, dzielić się nim i go poprawiać
  • licencja, która Ci na to pozwala
  • społeczność, do której możesz dołączyć
Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Dlaczego jest to istotne?

Atakujący zmienili cel

Włamywanie się do firm jest trudniejsze i bardziej kosztowne. Łatwiej zaatakować łańcuch dostaw.

Regulacje

CRA, NIS2, DORA wymuszają na organizacjach wiedzę o składnikach oprogramowania i zarządzanie ryzykiem

Skrócony czas reakcji

Coraz więcej CVE i coraz mniej czasu na ocenę. Sztuczna inteligencja przyspiesza rozwój oprogramowania jak i szybciej wykorzystuje luki.



Ekosystem jest wspólny dla nas wszystkich, powyższe problemy dotyczą nas wszystkich
Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Skrócony czas reakcji


https://seclists.org/oss-sec/2026/q3/991

https://www.computerweekly.com/news/366652119/Microsoft-CVE-volumes-on-relentless-upward-trajectory

Jesień Linuksowa 2026 · Kraków
Ekosystem Open Source

Część 2

Mechanizmy warstwowego modelu ochrony

Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony


Źródło: https://aniagotuje.pl/przepis/tort-malinowy-z-truskawkami-w-czekoladzie

Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Matryca pytań

Pytanie Etap łańcucha Mechanizmy
➔ Co mam? nasz build, produkcja SCA, SBOM, VEX
Skąd to przyszło? build, rejestr podpisy (Sigstore), SLSA
Czy chcę to wpuścić? źródło, wejście Scorecard, proxy, pinning, karencja
Czy wdrażam to, co zbudowano? nasz build, produkcja podpis, poświadczenie, weryfikacja przy wdrożeniu

Gdy nie budujemy sami, tylko wdrażamy istniejące oprogramowanie od dostawców mechanizmy bezpieczeństwa pozostają bez zmian

Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

SCA - Software Composition Analysis

Narzędzie rozpoznaje komponenty oprogramowania i porównuje je z bazami znanych podatności.

Czy w artefaktach, które rozpoznałem, są znane podatności?

Potwierdza

  • podatności w dopasowanych komponentach
  • według stanu konkretnej bazy, tylko w momencie skanowania

Nie gwarantuje

  • wykrycia malware ani 0-day
  • przeskanowania wszystkich warstw komponentu

Komentarz

  • skanuj to, co trafia do organizacji
  • podatny kod nie musi być osiągalny
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

SBOM - Software Bill of Materials

Lista składników oprogramowania w formacie maszynowym (SPDX lub CycloneDX)

Na co składa się dane oprogramowanie?

Potwierdza

  • deklarację, co znalazło się w artefakcie
  • stan na moment generowania (aktualizacji)

Nie gwarantuje

  • kompletności ani poprawności
  • opisu uruchamianego artefaktu

Komentarz

  • SBOM powinien być żywym dokumentem, warto pielęgnować te dane (CBOM, VEX)
  • CISA Minimum Elements for SBOM (29.07.2026)
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

VEX

Log4Shell, podejście drugie

Gdzie mamy Log4j? - SBOM

# przy każdym buildzie obrazu
syft registry.example.com/app@sha256:… \
  -o cyclonedx-json > sboms/app.cdx.json

# piątek, 18:00
grep -l log4j-core sboms/*.json

Czy nas dotyczy? - VEX

{
  "vulnerability": { "name": "CVE-2021-44228" },
  "products": [{ "@id": "pkg:oci/app@sha256%3A…" }],
  "status": "not_affected",
  "justification": "vulnerable_code_not_present"
}

VEX potwierdza jedynie deklarację autora, że podatność go (nie) dotyka.

Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Matryca pytań

Pytanie Etap łańcucha Mechanizmy
Co mam? nasz build, produkcja SCA, SBOM, VEX
➔ Skąd to przyszło? build, rejestr podpisy (Sigstore), SLSA
Czy chcę to wpuścić? źródło, wejście Scorecard, proxy, pinning, karencja
Czy wdrażam to, co zbudowano? nasz build, produkcja podpis, poświadczenie, weryfikacja przy wdrożeniu
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Podpis artefaktu (np. Sigstore)

Dowód, kto opublikował artefakt. Stan sztuki, Sigstore, stosuje podpis tożsamością zamiast klucza.

Kto to opublikował i czy ktoś to po drodze zmienił?

Potwierdza

  • integralność od chwili podpisu
  • tożsamość podpisującego
  • publiczny ślad w rejestrze Rekor (z możliwością użycia niezależnego serwera TSA)

Nie gwarantuje

  • że podpisujący jest godny zaufania
  • że jego konto albo CI nie zostało przejęte
  • że kod jest bezpieczny

Komentarz

  • samo istnienie podpisu samo w sobie nic nie dowodzi
  • analogicznie do 'zielonej kłódki'
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

SLSA

Supply-chain Levels for Software Architects (SLSA) - framework (zestaw standardów i kontrolek bezpieczeństwa) do zabezpieczania łańcucha dostaw

Czy ciężko jest ingerować w artefakt pomiędzy commitem a wynikiem końcowym procesu?

Poziom Wymóg Nacisk na
L1 Utworzony provenance (pochodzenie) artefaktu Dokumentację
L2 Podpisany provenance w procesie CI Brak ingerencji po zbudowaniu artefaktu
L3 Środowisko nie pozwalające na zewnętrzną ingerencję w artefakt Brak ingerencji podczas budowy artefaktu
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Provenance

Provenance (pochodzenie): poświadczenie, z czego i gdzie zbudowano artefakt.

Jak, gdzie i z czego to zbudowano?

Potwierdza

  • zbudowano na platformie X z repo Y, commit Z
  • dla SLSA L3 build nie podrobi poświadczenia

Nie gwarantuje

  • że podpisujący jest godny zaufania
  • że jego konto albo CI nie zostało przejęte
  • że zależności są bezpieczny

Komentarz

  • wymagaj provenance od własnych buildów
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Weryfikacja w praktyce

# podpis obrazu: sprawdzamy nie tylko CZY, ale KTO podpisał
cosign verify registry.example.com/app@sha256:… \
  --certificate-identity https://github.com/org/app/.github/workflows/release.yml@refs/heads/main \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

# provenance (SLSA) z GitHub Artifact Attestations
gh attestation verify oci://registry.example.com/app@sha256:… --repo org/app

# podpisy rejestru i provenance zainstalowanych paczek npm
npm audit signatures

Bez weryfikacji konkretnych kluczy weryfikacja potwierdza tylko, że ktoś podpisał.

Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

xz-utils (2024) oczami obrońcy

Mechanizm Pomógłby?
Podpisywanie artefaktów nie - podpisał je maintainer
SCA nie - do ujawnienia nie mamy CVE
SBOM tak - po ujawnieniu ataku
Build ze źródeł tak - wyjątkowo, brak backdooru w gicie
Provenance częściowo - dopiero przy SLSA L3 (podpis przez OIDC)
Stabilny kanał dystrybucji tak - stabilne wydania nie zdążyły przyjąć tej wersji
Człowiek tak - wykrył to inżynier, któremu SSH logował się 500ms wolniej
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Matryca pytań

Pytanie Etap łańcucha Mechanizmy
Co mam? nasz build, produkcja SCA, SBOM, VEX
Skąd to przyszło? build, rejestr podpisy (Sigstore), SLSA
➔ Czy chcę to wpuścić? źródło, wejście Scorecard, proxy, pinning, karencja
Czy wdrażam to, co zbudowano? nasz build, produkcja podpis, poświadczenie, weryfikacja przy wdrożeniu
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Metryki CHAOSS

CHAOSS Practictioner Guides jako kontekst do LLMa (prompty, serwery MCP)

Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

OpenSSF Scorecard

Automatyczna ocena praktyk w repozytorium projektu (review, CI, wydania).

Czy projekt stosuje dobre praktyki?

Potwierdza

  • heurystyki higieny repozytorium
  • stan na dany moment (aktualizacja raz na tydzień / na żądanie)

Nie gwarantuje

  • bezpieczeństwa kodu
  • niski wynik ≠ niebezpieczny
  • wysoki wynik ≠ bezpieczny

Komentarz

  • OpenSSF Concise Guide for Evaluating Open Source Software

Checklista: https://best.openssf.org/Concise-Guide-for-Evaluating-Open-Source-Software.html

Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Higiena korzystania z zewnętrznych paczek

Trzy praktyczne mechanizmy

  • Proxy/mirror - miejsce składowania zasobów z internetu po stronie organizacji
    • daje nam odporność na niedostępność zasobu sieciowego
    • zapewnia pobranie tego samego artefaktu w całej organizacji
  • Pinning - zaczepienie się, na jedną, konkretną instancję artefaktu w danej wersji
  • Karencja - czas od powołania nowej paczki, podczas którego nie pobieramy jej
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Wejście do organizacji

Proxy / mirror Pinning Karencja
Pytanie Skąd pobieramy paczki? Czy instaluję to samo co wczoraj? Czy wersja żyje kilka dni publicznie?
Potwierdza jedno wejście, log, możliwość blokady niezmienność bajt w bajt czas na wykrycie przez społeczność i skanery
Nie gwarantuje że to, co przepuszcza, jest dobre że przypięta wersja była bezpieczna że ktokolwiek tę wersję przeanalizował
Zalecenia blokuj znane złośliwe paczki, chroń nazwy wewnętrzne aktualizuj automatycznie (Renovate, Dependabot) szybka ścieżka dla poprawek bezpieczeństwa
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Matryca pytań

Pytanie Etap łańcucha Mechanizmy
Co mam? nasz build, produkcja SCA, SBOM, VEX
Skąd to przyszło? build, rejestr podpisy (Sigstore), SLSA
Czy chcę to wpuścić? źródło, wejście Scorecard, proxy, pinning, karencja
➔ Czy wdrażam to, co zbudowano? nasz build, produkcja podpis, poświadczenie, weryfikacja przy wdrożeniu
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

Czy wdrażam to, co zbudowano?

  • Bądźmi gotowi na ataki z wewnątrz
  • Stosujmy najlepsze praktyki (podpisywanie, poświadczanie et al.) w skali i w sposób zautomatyzowany
  • Automatyczna weryfikacja silnikami polityk na środowiskach
  • Polityki jako kod konsultowane/tworzone z zespołami bezpieczeństwa
  • Korzystajmy z efemerycznych workerów, każda akcja w CI powołuje nowy kontener/maszynę
    • cache poisoning
    • potencjalnie wrażliwe dane leżące na maszynach
Jesień Linuksowa 2026 · Kraków
Mechanizmy warstwowego modelu ochrony

CI/CD to też łańcuch dostaw

  • Minimalne uprawnienia tokenów w pipeline'ach
  • Akcje - lokalne kopie mogą tworzyć dług technologiczny. Warto wymusić na nich analizę statyczną (np. zizmor)
  • Obrazy z przypiętymi SHA - kolejne zależności, zwykle nieobecne w SBOM aplikacji
  • Efemeryczne workery - każdy build na czystym środowisku
Jesień Linuksowa 2026 · Kraków
Warstwy

Żaden mechanizm nie wystarczy sam

Incydent SBOM + SCA Podpis Provenance Pinning Karencja
Log4Shell (2021) 🟩 ⬜ ⬜ ⬜ ⬜
xz-utils (2024) 🟧 ⬜ 🟧 ⬜ 🟩
Ultralytics (2024) 🟧 ⬜ 🟧 🟩 🟩
tj-actions (2025) ⬜ ⬜ ⬜ 🟩 🟧
chalk/debug, Shai-Hulud (2025) 🟧 ⬜ ⬜ 🟩 🟩

🟩 pomaga · 🟧 częściowo · ⬜ nie pomaga

Każda warstwa jest dziurawa. Nie pozwól, żeby dziury ułożyły się w jednej linii.

Jesień Linuksowa 2026 · Kraków
Warstwy

Warstwy obrony

Warstwa Co robimy Mechanizmy
Analiza analiza, czy można to włączyć Concise Guide, Scorecard, analiza manualna
Wejście kontrola, co i kiedy wpada proxy, pinning, karencja
Build wiemy, z czego i jak zbudowaliśmy SBOM, podpis, provenance, utwardzone CI
Wdrożenie uruchamiamy tylko to, co zbudowaliśmy weryfikacja przy wdrożeniu
Eksploatacja trzymamy fabrykę w ryzach SCA na SBOM-ach, VEX
Ludzie ktoś za to wszystko odpowiada OSPO, zespoły analityczne ds. aplikacji
Jesień Linuksowa 2026 · Kraków
Warstwy

Część 3

Odpowiedzialność po stronie organizacji

Jesień Linuksowa 2026 · Kraków
Odpowiedzialność

Regulacje: dostawcy ICT, w tym open source

Kogo dotyczy Co z tego wynika dla open source
CRA producentów produktów z elementami cyfrowymi należyta staranność przy komponentach (także FOSS), SBOM, obsługa podatności
NIS2 / KSC podmiotów kluczowych i ważnych bezpieczeństwo łańcucha dostaw, obsługa podatności
DORA sektora finansowego ryzyko ICT stron trzecich, śledzenie bibliotek (także open source)

Wspólny mianownik: wiedz, co masz, oceń ryzyko, zarządzaj podatnościami przez cały cykl życia, udokumentuj i monitoruj ten proces

Jesień Linuksowa 2026 · Kraków
Odpowiedzialność

OSPO - Open Source Program Office

Zespół osób w organizacji, których zadania stykają się przy zarządzaniu open sourcem. Dostawca open source w organizacji

  • Strategia i zasady - jak korzystamy z open source i jak kontrybuujemy
  • Zgodność - licencje, regulacje, SBOM dla klientów
  • Bezpieczeństwo - razem z AppSec: dopuszczanie, monitorowanie, wycofywanie
  • Upstream - kontakt z projektami, kontrybucje, finansowanie
  • Edukacja w zakresie ekosystemu otwartego oprogramowania

OSPO nie musi być dedykowanym biurem. Często jest wirtualnym ciałem w organizacji.

Jesień Linuksowa 2026 · Kraków
Odpowiedzialność

Trendy rynkowe

  • 79% badanych organizacji planuje stworzyć OSPO w ciągu 2 następnych lat
  • Co trzeci badany wskazuje bezpieczeństwo, zgodność, oszczędność w rozwijaniu oprogramowania i zmniejszenie kosztu ponownego użycia jako uzasadnienie biznesowe
  • 58% OSPO jest bezpośrednio zaangażowanych w tematykę AI w kontekście ładu, zarządzania, bezpieczeństwa i tworzenia standardów

Źródło: Trinkenreich, B. Santamaría, A.J., Lawson, A. 2026. "The 2026 State of OSPOs and Open Source Management." Research Report. Linux Foundation Research. https://doi.org/10.70828/UCLW3741

Jesień Linuksowa 2026 · Kraków
Odpowiedzialność

Cykl życia komponentu

Dopuszczenie

  • uzasadnienie biznesowe
  • dostępne frameworki i checklisty jako wsparcie
  • licencja zgodna z polityką
  • wejście tylko przez proxy

Monitorowanie

  • SBOM każdego artefaktu, odpytywany codziennie
  • aktualizacje automatyczne, z karencją
  • szybka ścieżka dla poprawek bezpieczeństwa

Wycofanie

  • koniec wsparcia, porzucony projekt, zmiana licencji, kompromitacja
  • zamiana, fork, płatne wsparcie
  • wyjątek tylko na jakiś okres

Mapa dojrzałości dla konsumenta: OpenSSF S2C2F (Secure Supply Chain Consumption Framework)

Jesień Linuksowa 2026 · Kraków
Odpowiedzialność

OpenChain: ISO/IEC 5230 i ISO/IEC 18974

Standardy zarządzania open sourcem w organizacji

ISO/IEC 5230

Zgodność licencyjna: polityka, role, kompetencje, lista komponentów, artefakty zgodności, kontrybucje.

ISO/IEC 18974

Bezpieczeństwo: SBOM, wykrywanie i obsługa znanych podatności, także po wydaniu.

Po co?

Zaufanie w łańcuchu dostaw. Tego samego możesz wymagać od dostawców. Dostęp do standardów jest bezkosztowy.

Jesień Linuksowa 2026 · Kraków
Odpowiedzialność

Odpowiedzialność to też wkład własny

  • Stwórz proces - pozwól ludziom zgłaszać poprawki, kontrybuować do kluczowych dla Twojej organizacji projektów
  • Zgłaszaj i poprawiaj u źródła - poprawka w lokalnej kopii pomaga tylko Tobie, dodatkowy fork ciąży tylko organizacji
  • Wspieraj ekosystem - czas inżynierów, pieniądze, członkostwo w organizacjach
  • Dbajmy o naszą wspólną infrastrukturę - poruszamy się po tych samych drogach, otwarty ekosystem i jego bezpieczeństwo to zmartwienie i wspólne dobro każdego z nas
Jesień Linuksowa 2026 · Kraków
Podsumowanie

Open Source nie jest dostawcą

Odpowiedzialność jest po stronie użytkownika

  • Organizacja musi bezpieczenie korzystać z oprogramowania otwartoźródłowego
  • Model obrony jest warstwowy, wymusza zbudowanie procesów
  • Nie kupujcie magicznych narzędzi do zabezpieczania łańcucha dostaw
Jesień Linuksowa 2026 · Kraków
Podsumowanie

Dziękuję

Q&A

Jesień Linuksowa 2026 · Kraków

Wyjaśnić zależności od dostawców, którzy również mają niejasne zależności

Czas: 1:45 (łącznie 13:20) - Definicja dla wszystkich: SCA czyta manifesty, lockfile'y albo zawartość obrazu, rozpoznaje komponenty i wersje, a potem porównuje je z bazą podatności. - Narzędzia open source: OSV-Scanner, Trivy, Grype, Dependency-Track. Komercyjnych jest sporo, zasada działania ta sama. - Kluczowe: „rozpoznanych” i „znanych”. Czego narzędzie nie rozpozna (vendoring, skopiowany kod, shading w Javie, binaria), tego nie sprawdzi. Czego nie ma w bazie, tego nie zgłosi. - Złośliwe paczki: baza OSV ma wpisy MAL- (projekt OpenSSF malicious-packages), więc część narzędzi oznaczy znane złośliwe wersje – ale dopiero, gdy ktoś je zgłosi. - Osiągalność: większość zgłoszeń dotyczy kodu, którego aplikacja nigdy nie wywołuje. Dlatego wynik to lista do oceny, a nie automatyczny wyrok. Przejście: „SCA odpowiada na pytanie dziś. A co, jeśli pytanie pojawi się za pół roku?”

Czas: 1:45 (łącznie 15:05) - Formaty: SPDX (norma ISO/IEC 5962) i CycloneDX (ECMA-424). Generatory open source: Syft, Trivy, cdxgen. Do przechowywania i odpytywania: Dependency-Track, GUAC. - SBOM to deklaracja, nie dowód. Jest tak dobry jak narzędzie, które go wygenerowało, i opisuje konkretny artefakt w konkretnej chwili. - Wiązanie z digestem: SBOM musi wskazywać dokładnie ten obraz, który działa na produkcji (sha256), a najlepiej być podpisanym poświadczeniem tego obrazu. - Wartość pojawia się dopiero, gdy ktoś go używa: codzienne dopasowanie do nowych podatności, odpowiedź na „gdzie mamy X?”. - Oprogramowanie kupowane: proś dostawców o SBOM. CRA każe producentom go mieć, ale nie każe go publikować – warto to zapisać w umowie. Przejście: „Wróćmy do piątku, 10 grudnia – tym razem z SBOM-ami.”

Czas: 1:45 (łącznie 16:50) - Lewa strona: jeśli SBOM-y powstają przy każdym buildzie i leżą w jednym miejscu, odpowiedź na pytanie z piątku to jedna komenda. Trudne nie jest zapytanie, tylko to, żeby SBOM-y istniały i były aktualne. W praktyce zamiast grepa: Dependency-Track albo GUAC. - Prawa strona: VEX (Vulnerability Exploitability eXchange) – producent mówi, czy podatność dotyczy jego produktu. Tu fragment w formacie OpenVEX: Log4j jest w obrazie, ale klasa JndiLookup została usunięta, więc podatnego kodu nie ma. Inne formaty: CSAF VEX, CycloneDX VEX. - VEX odsiewa szum ze skanów, ale to deklaracja. Od dostawców bierz VEX, ale miej możliwość sprawdzenia; własne VEX-y wystawiaj tylko z uzasadnieniem, które obronisz. Przejście: „Wiemy już, co mamy. Kolejne pytanie: skąd to przyszło?”

Czas: 1:45 (łącznie 18:35) - Definicja: podpis wiąże artefakt (dokładnie te bajty) z tożsamością. Sigstore (projekt OpenSSF) zdejmuje problem zarządzania kluczami: CI podpisuje swoją tożsamością OIDC, Fulcio wydaje krótko żyjący certyfikat, a wpis trafia do publicznego logu Rekor. - Podpis odpowiada na pytanie „kto”, a nie „czy dobrze”. Podpisany złośliwy kod jest nadal złośliwy – za chwilę xz-utils. - Najczęstszy błąd: weryfikacja „czy podpis jest poprawny” bez sprawdzenia, czyj. Atakujący też umie podpisać. Polityka musi mówić, kto powinien był podpisać: które repozytorium, który workflow, która gałąź. - Upstream: pokrycie podpisami w ekosystemach wciąż jest dziurawe (kontenery i npm najlepiej). Własne buildy: tu możesz wymagać podpisu na 100%. Przejście: „Podpis mówi kto. A jak i z czego to zbudowano?”

Czas: 1:45 (łącznie 20:20) - SLSA (Supply-chain Levels for Software Artifacts, projekt OpenSSF). Ścieżka Build: L1 – provenance istnieje, L2 – podpisane przez hostowaną platformę, L3 – platforma utwardzona, build nie ma dostępu do klucza podpisującego. - Provenance zamyka lukę „artefakt ≠ źródło”: wiesz, z którego commita powstały te bajty. - Granica: SLSA nic nie mówi o jakości samego kodu ani o zależnościach. Przykład z PyPI, Ultralytics (2024): pierwsze złośliwe wersje opublikował przejęty, ale prawdziwy workflow projektu, więc miały poprawne provenance. Kolejne wrzucono kradzionym tokenem i provenance już nie miały. Poprawne provenance ≠ bezpieczny kod, a brak provenance tam, gdzie zwykle było, to sygnał. - Uwaga dla audytorów: „mamy SLSA” bez podania ścieżki i poziomu nic nie znaczy. Przejście: „Jak to wygląda w terminalu?”

Czas: 1:15 (łącznie 21:35) - cosign: tożsamość to konkretny workflow w konkretnym repozytorium i gałęzi, a wystawca to GitHub Actions. Inny workflow, fork albo czyjeś konto – weryfikacja nie przejdzie. - gh attestation verify: sprawdza poświadczenie provenance, czyli że obraz zbudowało CI z repozytorium org/app. - npm audit signatures: szybki test dla projektów w JS – sprawdza podpisy rejestru i provenance paczek z lockfile'a. - Odpowiedniki w innych ekosystemach: PyPI ma poświadczenia z Trusted Publishing, Maven Central ma podpisy PGP – z różną jakością weryfikacji po stronie klienta. Przejście: „Teraz najważniejszy przykład: xz-utils.”

Czas: 1:45 (łącznie 23:20) - Jedno zdanie o incydencie (CVE-2024-3094): atakujący przez dwa lata zdobywał zaufanie i prawa maintainera, a potem wypuścił wydania z backdoorem. Bez szczegółów ataku – patrzymy, co by zadziałało. - Podpis: tarballe były podpisane przez osobę z prawem wydawania. Podpis zadziałał dokładnie tak, jak powinien – i nie miało to znaczenia. - Build ze źródła: skrypt aktywujący backdoor (build-to-host.m4) był tylko w tarballu, nie w repozytorium. Budowanie z git i provenance odsłoniłyby różnicę. Ale tylko częściowo – sam ładunek był w plikach testowych w git, czyli w źródle, którego SLSA nie ocenia. - Weryfikacja „tarball = git” to praca dla wszystkich naraz: dystrybucje i reproducible builds. Nie każda firma musi przebudowywać świat u siebie. - Stabilny kanał działa jak długa karencja: dotknęło to głównie wersji rozwojowych i rolling. - Wykrył to Andres Freund, inżynier, któremu logowanie SSH trwało ok. pół sekundy dłużej i chciał wiedzieć dlaczego. Najlepszy „mechanizm” to ludzie, którzy patrzą. Przejście: „Część rzeczy da się zatrzymać wcześniej – zanim w ogóle wpuścimy je do siebie.”

Czas: 0:45 (łącznie 29:20) - Pipeline ma dostęp do sekretów, rejestrów i produkcji, więc jest celem samym w sobie. - Ultralytics (2024) zaczął się właśnie tu: wstrzyknięcie przez pull_request_target i zatruty cache w CI projektu. tj-actions (2025) – przez akcję używaną w pipeline'ach. - Narzędzia open source: zizmor (statyczna analiza workflowów GitHub Actions) i OpenSSF Scorecard (sprawdza m.in. uprawnienia tokenów i przypięcie akcji). - Reproducible builds: jeśli niezależne buildy dają identyczne bajty, nie musisz ślepo ufać jednej platformie. To robota wspólna – dystrybucje (Debian, Arch, NixOS) i projekty robią ją dla wszystkich. Przejście: „Mamy mechanizmy. Jak je złożyć w całość?”

Czas: 1:45 (łącznie 38:15) - Dopuszczenie: lekki proces, nie komisja. Większość zależności przechodzi automatycznie, człowiek patrzy tylko na nowe i nietypowe. - Monitorowanie: tu pracują SBOM, SCA i automatyczne aktualizacje z poprzedniej części. Pin + automatyczne PR-y + kilka dni karencji, a poprawki bezpieczeństwa idą od razu. - Wycofanie: najczęściej pomijany etap. Wyzwalacze: koniec wsparcia (EOL), porzucony projekt, krytyczna podatność bez poprawki, kompromitacja, zmiana licencji. Opcje: zamiana na inny komponent, fork i własne utrzymanie, płatne wsparcie rozszerzone, izolacja ze środkami kompensującymi albo świadoma akceptacja ryzyka – zawsze z datą ważności, bo wyjątek bez daty staje się stanem docelowym. - S2C2F (Secure Supply Chain Consumption Framework, OpenSSF): 8 praktyk – od pobierania przez proxy i inwentaryzacji, przez aktualizacje i skanowanie, po przebudowę ze źródeł i poprawki w upstreamie – ułożonych w 4 poziomy. - Najwyższy poziom, czyli przebudowa wszystkiego ze źródeł u siebie, dla większości organizacji to przesada. Lepiej robić to wspólnie – dystrybucje, reproducible builds, fundacje – niż żeby każdy powtarzał tę samą pracę. Przejście: „Skąd wiadomo, że taki program jest dobry? Tu wchodzi OpenChain.”