🧪 Praktyczne ćwiczenie: Testowanie i mitigacja – Software and Data Integrity Failures (A08:2025)
🎯 Cel ćwiczenia
Nauczyć się wykrywać i skutecznie przeciwdziałać podatnościom typu Software and Data Integrity Failures w środowisku aplikacji webowej poprzez analizę łańcucha dostarczania kodu, użycie podpisów cyfrowych oraz testowanie plików konfiguracyjnych i zależności.
🛠️ Scenariusz testowy
Aplikacja:
System CI/CD oparty na GitHub Actions z automatycznym deploymentem aplikacji Node.js na serwerze produkcyjnym.
Założenia:
- Projekt korzysta z zależności NPM.
- Brak podpisanych commitów ani weryfikacji autorstwa w pipeline.
- Brak sprawdzania integralności zależności.
- Konfiguracja serwera pobierana z pliku
.env
z repozytorium.
🔍 Krok po kroku: testowanie integralności
1. Wstrzyknięcie złośliwego pakietu (symulacja)
- Utwórz forka projektu.
- Podmień jedną z zależności w
package.json
na złośliwy fork z tym samym API. - Zainicjuj pull request.
➡️ Sprawdź, czy CI/CD automatycznie deployuje kod bez walidacji źródeł.
2. Sprawdzenie konfiguracji .env
- Upewnij się, że
.env
nie zawiera wrażliwych danych. - Sprawdź, czy plik ten nie jest wersjonowany (np. przez
.gitignore
). - Sprawdź, czy środowisko produkcyjne nie ładuje
.env
z repozytorium.
3. Walidacja podpisów Git (opcjonalnie)
- Sprawdź, czy repo wymaga GPG podpisów commitów.
- Wymuś w ustawieniach GitHub -> Branch Protection -> Require signed commits.
🧰 Narzędzia pomocnicze
- Snyk CLI – analiza podatności w zależnościach.
- Gitleaks – wyszukiwanie sekretów w historii Git.
- Trivy – skanowanie obrazów i paczek.
npm audit
– szybka analiza zagrożeń w paczkach NPM.
✅ Mitigacja
-
Weryfikacja zależności:
- Włącz
package-lock.json
w repo. - Regularnie używaj
npm audit fix
.
- Włącz
-
Bezpieczny CI/CD:
- Weryfikuj sygnatury commitów (
Require signed commits
). - Blokuj pull requesty z nieznanych źródeł bez review.
- Używaj zaufanych runnerów.
- Weryfikuj sygnatury commitów (
-
Integralność danych konfiguracyjnych:
- Nie wersjonuj
.env
. - Korzystaj z managerów sekretów (np. HashiCorp Vault, AWS Secrets Manager).
- Nie wersjonuj
🧪 Rezultat końcowy
Po ukończeniu ćwiczenia uczestnik:
- Zrozumie zagrożenia związane z brakiem walidacji integralności kodu i zależności.
- Potrafi skonfigurować pipeline CI/CD w sposób bezpieczny.
- Umie wykrywać i usuwać wrażliwe dane z repozytorium.
- Zna sposoby mitigacji dla Software and Data Integrity Failures.