Przejdź do głównej zawartości

⚙️ 3.2.3 – Weryfikacja konfiguracji aplikacji i serwera: Cryptographic Failures

🎯 Cel sekcji

Zidentyfikować błędy konfiguracyjne w aplikacji i na serwerze, które mogą prowadzić do Cryptographic Failures.


🔍 Co weryfikować?

1. HTTPS / TLS

✅ Czy aplikacja działa wyłącznie przez HTTPS?
✅ Czy wymuszony jest HSTS?
✅ Czy wyłączone są przestarzałe protokoły (TLS 1.0/1.1)?
✅ Czy certyfikat jest ważny i wystawiony przez zaufany CA?

2. Algorytmy i klucze

✅ Czy używane są silne algorytmy (AES-256, RSA-2048+, SHA-256+)?
✅ Czy tokeny JWT mają odpowiedni alg (HS256, RS256) i są podpisywane?
✅ Czy istnieje rotacja kluczy szyfrowania?

3. Hasła użytkowników

✅ Czy hasła są haszowane przy użyciu BCrypt, Argon2?
✅ Czy stosowany jest salt i odpowiedni koszt (work factor)?
✅ Czy nie przechowuje się haseł w plaintext?

4. Certyfikaty i komunikacja z API

✅ Czy aplikacja weryfikuje certyfikaty SSL API zewnętrznych?
✅ Czy nie akceptuje połączeń z self-signed cert bez walidacji?
✅ Czy serwer odrzuca słabe cyphery (sprawdzić ssl_ciphers w Nginx/Apache)?


🧪 Przykład sprawdzenia TLS na serwerze (z linii poleceń)

openssl s_client -connect example.com:443

Zwróć uwagę na:

  • wersję TLS,
  • certyfikat (issuer, ważność),
  • cipher suite (Cipher).

🧪 Przykład z nginx.conf

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'HIGH:!aNULL:!MD5';
add_header Strict-Transport-Security "max-age=31536000" always;

🔒 Zła konfiguracja = podatność

Jeśli aplikacja:

❌ działa przez HTTP,
❌ akceptuje JWT bez podpisu,
❌ nie waliduje certyfikatów API,
❌ trzyma hasła w plaintext,

to jesteśmy narażeni na ujawnienie danych wrażliwych, podszywanie się pod użytkowników, a nawet masowe przejęcie kont.


W kolejnym kroku przejdziemy do narzędzi do testowania tych podatności (3.2.4).