Analiza i testy bezpieczeństwa

Infrastruktura

Aplikacja wykorzystuje następujące usługi: system wiadomości RabbitMQ oraz bazę danych PostgreSQL. Autoryzacja dostępu do usług osiągana jest poprzez przydzielenie praw aplikacjom wykonywanych w obrębie tego samego konta CloudFoundry, co usługi. Bezpieczeństwo komunikacji zapewnia CloudFoundry.

CloudFoundry PaaS nie udostępnia możliwości konfiguracji serwera HTTP.

Aplikacja internetowa

Uwierzytelnianie użytkowników

Uwierzytelnianie użytkowników przeprowadzane jest przy pomocy narzędzia Spring Security poprzez protokół HTTP. Hasła w bazie danych są przechowywane zahaszowane.

Rozdział ról

Użytkownicy systemu mają przypisane następujące role:

  • superuser - administrator systemu
  • administrator - administrator tenanta
  • użytkownik - zwykły użytkownik należący do określonego tenanta

    Prawa dostępu do poszczególnych funkcji aplikacji internetowej są weryfikowane zarówno w warstwie logiki aplikacji jak i przez przechwytywacza kontrolującego dostęp do URL'i w zależności od roli użytkownika

Obrona przed typowymi atakami

  • SQL Injection - aplikacja nie wykonuje bezpośrednio zapytań SQL do bazy, zamiast tego korzysta z parametryzowanych zapytań JPQL
  • CSRF - wszystkie zapytania modyfikujące stan aplikacji przeprowadzane są metodą HTTP POST

Testy bezpieczeństwa

Ograniczenia

Z uwagi na fakt, że środowisko w którym uruchomiona jest aplikaca nie pozwala nam na pełny dostęp, możemy przeprowadzić tylko niektóre testy bezpieczeństwa - np. skanowanie aplikacji webowej. Poza tym musimy w dużej mierze polegać na zabezpieczeniach dostarczonych przez Cloud Foundry.

Przegląd narzędzi do testowania bezpieczeństwa

Nikto
  • narzędzie Open Sourcowe (GPL)
  • skanuje serwer w poszukiwaniu typowych luk bezpieczeństwa
  • pozwala na generowanie czytelnych raportów
  • niektóre z użytecznych funkcjonalności
    • SSL Support
    • Full HTTP proxy support
    • Checks for outdated server components
    • Scan multiple ports on a server, or multiple servers via input file
    • Subdomain guessing
    • Mutation techniques to "fish" for content on web servers
    • Reports "unusual" headers seen
    • Mutation techniques to "fish" for content on web servers
    • Apache and cgiwrap username enumeration

    Użycie narzędzie stosunkowo proste, sprowadza się do wywołania polecenia:

    perl nikto.pl -host http://iosr_client.cloudfoundry.com/ -output nikto_iosr_client_report.html

Nessus
  • profesionalne narzędze do testowania bezpieczeństwa aplikacji
  • nie jest darmowe, ale pozwala na korzystanie z dużej części funkcjonalności przez 15 dni za darmo
  • interfejs dostępny z poziomu przeglądarki
  • po zainstalowaniu narzędzie ściąga odpowiednie wtyczki
  • mnóstwo opcji konfiguracji
  • przejrzysty interfejs
  • ciekawe funkcjonalności:
    • tworzenie screenshotów aplikacji
    • tworzenie polityk skanów
    • uzupełnianie ‘login credentials’ różnego typu (np. poprzez formularz HTML, ssh, itp)
    • wykluczanie konkretnych linków z przeglądania
    • podawanie głęgokości skanu
  • SUPER NARZĘDZIE!!!
Exploit-Me
  • zestaw wtyczek do Firefoxa
  • sprawdza podatności na ataki XSS, SQL injection, dostęp do zasobów bez autoryzacji
  • generowanie czytelnych raportów