Przejdź do głównej zawartości

⚙️ Weryfikacja konfiguracji aplikacji i serwera – Server-Side Request Forgery (SSRF) (A10:2025)

🎯 Cel

Zweryfikowanie, czy konfiguracja aplikacji i serwera chroni przed możliwością wykonywania nieautoryzowanych żądań HTTP do wewnętrznych zasobów lub usług zaufanych.


🔐 Obszary do sprawdzenia

1. 🔗 Aplikacja (kod i biblioteki)

  • Czy aplikacja umożliwia użytkownikowi podanie URL jako wejścia?
  • Czy URL jest walidowany lub filtrowany?
  • Czy aplikacja korzysta z funkcji wykonujących żądania (fetch, axios, requests, curl)?
  • Czy istnieje whitelist/blacklist domen dozwolonych?

2. 🧱 Serwer i zapora sieciowa (firewall)

  • Czy serwer ma dostęp do usług wewnętrznych (np. metadata service w chmurze)?
  • Czy outbound traffic jest filtrowany?
  • Czy stosowane są reguły iptables lub ufw, ograniczające połączenia wychodzące?

📋 Przykłady zabezpieczeń w konfiguracji

KomponentPrzykład konfiguracjiCel
AplikacjaWalidacja domen i IP przed wykonaniem żądaniaBlokada SSRF
Serwerufw deny out to 169.254.169.254Ochrona metadata API
Serwis chmurowyIAM deny dla GetMetadataBlokada kradzieży tożsamości
Reverse Proxy (nginx)Blokada lokalnych adresów (127.0.0.0/8)Ochrona backendu

🚨 Typowe błędy konfiguracyjne

  • Brak filtrowania parametrów URL.
  • Domyślnie dozwolony outbound traffic do wszystkich IP.
  • Zbyt szerokie uprawnienia instancji w chmurze (brak segmentacji).
  • Brak audytu logów połączeń wychodzących.

✅ Rekomendacje

  • Wprowadź whitelistę akceptowanych domen lub endpointów.
  • Zablokuj dostęp aplikacji do lokalnych i prywatnych adresów IP.
  • W środowiskach chmurowych ogranicz dostęp do 169.254.169.254.
  • Korzystaj z serwisów proxy z inspekcją i filtracją ruchu.
  • Monitoruj outbound traffic aplikacji.

🔍 Weryfikacja

  • Sprawdź kod źródłowy aplikacji – czy dane wejściowe są walidowane.
  • Przeanalizuj konfigurację serwera sieciowego i firewalli.
  • W środowisku chmurowym – sprawdź uprawnienia IAM i dostęp do metadata API.