Jak zabezpieczyć aplikację webową

Błędy w aplikacjach webowych stanowią najważniejszą przyczynę utraty danych. Jak uchronić się przed takim zagrożeniem.

Aplikacje webowe są budowane w szybkim tempie w celu zaspokojenia wielu różnych potrzeb biznesowych. Testy bezpieczeństwa są wykonywane zazwyczaj na końcu procesu produkcji, gdy większość funkcjonalności jest już zaprogramowana – a w takim przypadku odkrycie wielu podatności tuż przed wydaniem do eksploatacji sprawia, że usuwanie ich odbywa się w niesłychanym pośpiechu, ryzykując przy tym załamaniem całego projektu. Niekiedy aplikacja zostaje wydana mimo to, że wiadomo o podatnościach i podejmowane są mniej lub bardziej skuteczne próby obejścia problemu.

Podejście to niesie ze sobą istotne problemy, o których mówi Yaroslav Popov, Enterprise Security Specialist – Application Security w firmie HP: „Budowanie dobrych aplikacji jest wyzwaniem, gdyż z jednej strony obserwujemy nacisk biznesu, który oczekuje kolejnych funkcjonalności, a z drugiej strony rosną wymagania związane z czasem, budżetem i planem. O bezpieczeństwie myślimy tuż przed wydaniem i dopiero wtedy prowadzi się pierwsze automatyczne analizy podatności. Skutkiem tych analiz są raporty z listą wielu krytycznych podatności, które należy niezwłocznie usunąć, zachowując przy tym sztywny termin wydania – a zatem programiści pracują po nocach. Mało kto spogląda na aplikację z punktu widzenia włamywacza, bo zazwyczaj biznes chce wszystko na jutro, a o problemach być może porozmawia później”.

Zobacz również:

Dlaczego podatność aplikacji webowych jest problemem?
Yaroslaw Popov, Enterprise Security Specialist – Application Security w firmie HP

Yaroslaw Popov, Enterprise Security Specialist – Application Security w firmie HP

„Na tytułowe pytanie najkrótsza odpowiedź brzmi – bo w wielu przypadkach jest to najprostsza droga do włamania. Organizacje przez lata inwestowały w obronę punktu styku firmy z Internetem, ale połączenie przez HTTP cały czas jest otwarte. Jeśli tylko w tych połączeniach włamywacz może pozyskać informacje, które chce dostać, to z możliwości włamań przez aplikacje webowe na pewno skorzysta. Do tego celu nie potrzeba żadnego sprzętu, dlatego 84% włamań rozpoczyna się od poziomu aplikacyjnego”.

Do przeprowadzenia włamania tą drogą nie są potrzebne duże zasoby po stronie włamywacza. W odróżnieniu od przełamywania zaawansowanych zabezpieczeń systemów operacyjnych i zapór sieciowych, do wykorzystania błędów w podatnych aplikacjach nie trzeba kupować na czarnym rynku podatności dnia zerowego. Yaroslaw Popov uważa, że do tego celu wystarczy wiedza studenta drugiego roku informatyki na przeciętnej uczelni. Skutki takiego włamania mogą być poważne, gdyż aplikacje mają dostęp do danych, które udostępniają użytkownikom, a zatem jeśli można te dane wydobyć z aplikacji w nieautoryzowany sposób, to włamywacze będą mieli otwartą drogę do kradzieży informacji z firmy. Brak kontroli na poziomie aplikacyjnym powoduje wzrost ryzyka włamania.

Bezpieczeństwo aplikacji - jak tę samą aplikację widzą programiści i włamywacze.

Bezpieczeństwo aplikacji - jak tę samą aplikację widzą programiści i włamywacze.

Jeśli budowa aplikacji zakłada uzyskanie kompletu funkcjonalności, a następnie w ostatnim kroku zapewnienie bezpieczeństwa, ten ostatni krok zazwyczaj niesie ze sobą wprowadzanie dużych zmian w kodzie. Proces budowy oprogramowania w tym modelu sprawia, że właśnie pod koniec prac pojawiają się problemy, które należało rozwiązać na bardzo wczesnym etapie, gdyż ich usunięcie tuż przed wydaniem aplikacji będzie o wiele bardziej kosztowne od poprawek umieszczanych w trakcie produkcji.

Prewencja na dwa sposoby, reakcja w trakcie ataku

Budowa bezpiecznej aplikacji wymaga znacznych nakładów pracy, a zatem najkorzystniej dla projektu będzie wykonać tę pracę prewencyjnie, stopniowo w czasie całego projektu, implementując procesy związane z zapewnieniem bezpieczeństwa oprogramowania w trakcie jego powstawania. Możliwe są tu dwa podejścia – pierwsze, w którym zakłada się badanie aplikacji z zewnątrz przy niewielkiej wiedzy napastnika oraz drugie, w którym analizie podlega kod źródłowy. Wprowadzenie automatycznych testów sprawia, że można bardzo szybko wykryć te podatności, które znalazłby włamywacz wyposażony w podstawowe narzędzia. Proces ten powtarza się wielokrotnie, na przykład przy wydaniu każdej nowej wersji testowej aplikacji. W ten sposób najważniejsze podatności związane z podstawową funkcjonalnością można wykryć i usunąć (lub zablokować) na możliwie wczesnym etapie projektu.

Osobną metodą obrony jest wykrywanie symptomów ataku i blokowanie połączeń, które mogły spowodować naruszenie bezpieczeństwa aplikacji webowych. W odróżnieniu od metod prewencyjnych, ta opcja nie wymaga zmian kodu i stanowi ostatnią linię obrony podatnej aplikacji.