Sesja w obcych rękach

Ważne logi

Rejestrowanie informacji o pracy serwera oraz o podejrzeniach manipulacji sesją, parametrami przekazywanymi za pomocą pól czy plikami cookie powinno być regułą w przypadku istotnych aplikacji webowych. Niestety, podczas audytu odkrywane jest coś przeciwnego - udany atak przeprowadzany przy testach penetracyjnych często nie zostawia żadnych śladów w logach serwera czy aplikacji. Stąd wynika, że przy projektowaniu i realizacji aplikacji należy wziąć pod uwagę rejestrowanie tych zdarzeń. Ponieważ istota manipulacji sesją nie powoduje wysyłania do serwera dziwnych informacji, takiego ataku nie wykryją typowe zapory z dogłębną inspekcją pakietów czy systemy IPS.

Dziurawy serwer

Przy audycie bezpieczeństwa aplikacji webowej nie można zapomnieć o odpowiednim zabezpieczeniu serwera WWW w miejscu jego hostowania. Należy pamiętać o tym, że nawet najlepiej napisana aplikacja będzie bezbronna, gdy napastnik przejmie kontrolę nad serwerem, eksploitując jakiś błąd, na przykład przepełnienie bufora. Przy kompleksowym audycie bezpieczeństwa aplikacji webowej należy kontrolować poprawność konfiguracji serwera webowego, jego stan aktualizacji oraz stan hardeningu systemu operacyjnego. Do tego celu wykorzystuje się dokumentację dostarczoną przez producenta oraz bazę wiedzy zawierającą zestaw najlepszych praktyk w tej dziedzinie. Niektóre rozwiązania techniczne umożliwiają automatyzację części prac, sprawdzając podatność serwerów na typowe ataki.

Jak sprawdzić podatność aplikacji

Aby uzyskać informacje o rzeczywistej odporności aplikacji webowej na ataki, należy przeprowadzić testy penetracyjne. Bardzo dobre wytyczne w tym kierunku publikuje organizacja OWASP w dokumentach związanych z projektem o tej samej nazwie (Open Web Application Security Project).

Zazwyczaj proces audytu bezpieczeństwa aplikacji webowej, który symuluje sytuację napastnika, składa się z następujących kroków:

1) Identyfikacja systemu.

2) Rozpoznawanie dostępnych z Internetu urządzeń sieciowych, rozpoznanie otwartych portów.

3) Wstępna penetracja za pomocą powszechnie dostępnych skanerów, fingerprinting widocznych rozwiązań.

4) Testy zabezpieczeń przy pomocy profesjonalnych narzędzi.

5) Analiza topologii sieci komputerowej.

6) Analiza wyników pod kątem przygotowania symulacji włamania.

7) Wyszukiwanie informacji na temat testowanych aplikacji.

8) Testy konfiguracji, informacje o używanych protokołach.

9) Testy uwierzytelnienia.

10) Rozpoznanie sposobu zarządzania sesją (np. cookie).

11) Testy logiki biznesowej (na przykład pominięcie jakiegoś etapu uwierzytelnienia lub elewacji uprawnień).

12) Sprawdzenie walidacji danych (SQL Injection, Cross Site Scripting, inne ataki, wliczając przepełnienie bufora).

13) Odporność na ataki odmowy obsługi.

14) Komunikacja aplikacji, skrypty AJAX i inne zaawansowane analizy.

15) Porównanie wyników z zapisami w logach serwera i aplikacji.

16) Audyt kodu źródłowego.

17) Analiza otrzymanych wyników, propozycje zaradcze.


TOP 200