OWASP AppSensor – opis mechanizmu
OWASP
OWASP (Open Web Application Security Project) jest to organizacja non-profit mająca na celu analizę zagadnień związanych z bezpieczeństwem aplikacji i opracowywanie rozwiązań, które byłyby użyteczne zarówno dla organizacji jak i dla pojedynczych twórców oprogramowania. Organizacja ta działa otwarcie, a wszystkie materiały są darmowe i ogólnodostępne. Nie jest ona także związna z żadnym dostawcą oprogramowania i pozwala na niezależność w tym zakresie. Jej główną siłą napędową jest społeczność ludzi zainteresowanych tematem bezpieczeństwa. Tworzą oni narzędzia wspomagające zabezpieczanie i testowanie zabezpieczeń systemów komputerowych. Znane projekty to:
- OWASP Zed Attack Proxy – narzędzie do automatycznego testowania bezpieczeństwa systemów
- OWASP Top Ten – lista największych zagrożeń dla aplikacji webowych wraz z metodami zapobiegania im
- OWASP OWTF – narzędzie do automatyzacji testów penetracyjnych
Wybór AppSensor
Od pewnego czasu interesuję się tematem bezpieczeństwa i dzięki temu trafiłem na ogranizację OWASP. Jest ona nastawiona w dość dużym stopniu na środowisko Java. Tak więc pisząc w .NET mogę korzystać z gotowych narzędzi OWASP, zaś korzystanie z bibliotek jest już dla mnie niemożliwe. Istnieją czasem porty bibliotek na platformę .NET, jednak nie są one dopasowane do tego środowiska. Projekt AppSensor zainteresował mnie swoją prostotą i możliwościami, które są z nim związane. Dlatego też postanowiłem zająć się jego implementacją dopasowaną dla webowych mechanizmów .NET w szczególności do WebAPI, ale z możliwością samodzielnego dostosowania do dowolnego frameworku np. Nancy czy ServiceStack.
AppSensor
Pomysł biblioteki AppSensor polega na tym, że w środowisku produkcyjnym aplikacja cały czas przetwarza różnego rodzaju informacje i akcje. Dzięki umieszczeniu wewnątrz kodu aplikacji odpowiednich punktów detekcji podejrzanych zachowań, jesteśmy w stanie na bieżąco, niemalże w czasie rzeczywistym, reagować na pojawiające się zagrożenia. W klasycznym podejściu ataki wykrywamy i blokujemy głównie na wejściu do aplikacji. Umożliwia nam to wykrycie podejrzanych zachowań takich jak wysłanie niepoprawnych ciągów znaków w requestach HTTP, co może sygnalizować próbę użycia np. SQL Injection. Nie biorą one jednak pod uwagę kontekstu w jakim wykonywane są te zapytania. System wykrywania, znając kontekst biznesowy konkretnego zapytania, jest w stanie wykryć więcej nadużyć, z większą trafnością. Jest na przykład w stanie wykryć zbyt częste próby logowania do aplikacji lub próby naruszenia uprawnień.
Podsumowując możemy powiedzieć, że AppSensor obejmuje wykrywanie nadużyć i reagowanie na zagrożenia:
- zależne od kontekstu,
- specyficzne dla danej aplikacji,
- dynamicznie,
- reagując w czasie rzeczywistym,
- z możliwością adaptacji zasad reakcji.
Zasada działania
Cały mechanizm jest zasadniczo prosty w użyciu i składa się z trzech kroków:
- Detekcja – rozpoznanie nietypowego zachowania.
- Identyfikacja próby ataku – ocenienie czy wykryte zachowanie jest poza zakresem dopuszczalnych akcji użytkownika za pomocą interfejsu lub API.
- Reakcja – zastosowanie środka informującego lub zapobiegającego dalszym nadużyciom.
Identyfikacja ataku bazuje na prostym założeniu, że w większości aplikacji użytkowych, zbiór akcji dopuszczalnych jest rozłączny ze zbiorem akcji będących zagrożniem.
Kluczem jest więc odpowiednie odseparowanie tych 2 rodzajów zachowań. W podstawowej wersji tego mechanizmu można skorzystać z gotowego zbioru najpopularniejszych punktów detekcji zagrozeń https://www.owasp.org/index.php/AppSensor_DetectionPoints.
Bardzo dobrze przemówiło do mnie porównanie aplikacji z systemem wczesnego wykrywania zagrożeń i bez niego do banku zabezpieczonego i zarządzanego jak niektóre projekty informatyczne.