Przewodnik bezpiecznej żeglugi

9. Brak odporności na awarie (denial of service)

Aplikacje internetowe są środowiskami szczególnie podatnymi na ataki typu denial of service. Wynika to stąd, że aplikacja taka nie odróżnia prawidłowego ruchu rozproszonego ataku. Nawet jeżeli nie przestanie działać, pod nawałem żądań aplikacja przestaje być dostępna, co jest skutkiem pożądanym przez atakującego. Rezultatem jest skonsumowanie całych zasobów serwera lub aplikacji, co powoduje jego faktycznie unieruchomienie.

Zasoby, które mogą być w ten sposób atakowane, to nie tylko dostępne pasmo sieciowe, ale również ilość równolegle obsługiwanych sesji aplikacji, ilość równoległych połączeń z bazą danych, zasoby serwera oraz inne - specyficzne dla danej platformy lub aplikacji. Szczególnie podatne są aplikacje nielimitujące zasobów dostępnych dla pojedynczego użytkownika. Innym przykładem ataków denial of service jest uniemożliwienie użytkownikom dostępu do kont, np. poprzez celowe, wielokrotne próby uwierzytelnienia z przypadkowym hasłem.

10. Nieprawidłowe zarządzanie konfiguracją (insecure configuration management)

Współczesne serwery aplikacji to bardzo rozbudowane i skomplikowane oprogramowanie. Podstawą bezpieczeństwa aplikacji jest prawidłowe, bezpieczne skonfigurowanie środowiska, w jakim ona działa. Problemy w tej kategorii dotyczą aspektów bezpieczeństwa systemów operacyjnych, serwerów WWW, serwerów aplikacyjnych i bazodanowych. Przykładami podatności mogą być: pozostawienie w środowisku działających wersji demonstracyjnych, poprzednich wersji skryptów (pliki z rozszerzeniami bak czy old), złe zabezpieczenie katalogów w systemie plików, dostęp z poziomu przeglądarki do plików konfiguracyjnych i interfejsów administracyjnych itp. Wszystkie te błędy wynikają z braku wiedzy lub zaniedbania zasad zarządzania konfiguracją.

Wojciech Dworakowski jest ekspertem ds. bezpieczeństwa IT w firmie SecuRing. Zajmuje się m.in. testowaniem bezpieczeństwa aplikacji.

Dorobek OWASP

OWASP Guide

OWASP Guide to rodzaj podręcznika bezpiecznego tworzenia aplikacji internetowych. Ten dość obszerny dokument (aktualna wersja nosi numer 1.1) liczy ponad 70 stron. Na koniec roku 2004 jest zapowiadana wersja 2.0, która według słów jej autorów będzie obejmować więcej obszarów, a materiał będzie lepiej pogrupowany. Mimo to nawet w obecnej wersji OWASP Guide to użyteczna lektura. Zawiera m.in. wprowadzenie do problematyki bezpieczeństwa aplikacji, wytyczne wysokopoziomowe, które powinny być stosowane dla wszystkich rodzajów aplikacji, omówienie problemów związanych z architekturą aplikacji, a także szczegółowy opis problemów bezpieczeństwa z podziałem na poszczególne dziedziny przedmiotowe (np. uwierzytelnienie, zarządzanie sesją, kontrola dostępu, logowanie zdarzeń, sprawdzanie wejścia, kryptografia). OWASP Guide należy traktować jako zbiór zaleceń.

OWASP Testing

Produktem projektu OWASP Testing jest lista kontrolna Web Application Penetration Checklist, która ma na celu stworzenie spójnego zestawu testów bezpieczeństwa dla typowej aplikacji internetowej. Lista jest spisana w dużym stopniu ogólności, tak żeby pasowała do specyfiki różnego typu aplikacji i środowisk (J2EE, .Net, PHP itd.). Lista ma znaczenie w praktyce. Przykładowo, powołanie się na nią przez zamawiającego w zaproszeniu do składania ofert umożliwia mu łatwe porównanie ofert różnych zespołów wykonujących testy bezpieczeństwa aplikacji. Oprócz zamawiania testów można ją stosować jako standard przy definiowaniu wymagań - w wypadkach, gdy potrzebne są zwięzłe wytyczne.

Narzędzia OWASP

Oprócz tworzenia dokumentacji, specjaliści związani z projektem OWASP stworzyli wiele ciekawych programów i modułów udostępnianych na stronie projektu. Do programów tych należą programy wspomagające proces budowania i testowania aplikacji, a także programy "edukacyjne". Do najciekawszych narzędzi należą:

WebGoat - przykładowa aplikacja J2EE zawierająca podatności z samouczkiem umożliwiającym prześledzenie mechanizmów działania błędów/podatności.

WebScarab - narzędzie wspomagające testowanie bezpieczeństwa aplikacji internetowych. Wspomagające, bo w praktyce nie da się stworzyć uniwersalnego skanera zabezpieczeń aplikacji internetowych. Proces testowania bezpieczeństwa polega na próbach wykorzystania określonych grup podatności (w tym niektórych umieszczonych na liście OWASP Top10). WebScarab działa na zasadzie lokalnego proxy przechwytującego żądania HTTP z przeglądarki. Pozwala "w locie" modyfikować żądania HTTP oraz analizować odpowiedzi aplikacji.

Stinger - jest zbiorem mechanizmów sprawdzających parametry wejściowe dla środowiska J2EE. Można go użyć jako zbioru procedur walidujących dla własnej aplikacji internetowej. Reguły sprawdzające są definiowane w prostym XML.

PHP Filters - proste funkcje sprawdzające parametry wejścia dla aplikacji PHP.

OWASP .Net - podprojekt dotyczący różneych aspektów bezpieczeństwa aplikacji .Net. Są tutaj programy sprawdzające konfiguracje środowiska, analizatory bezpieczeństwa kodu źródłowego, a także różnego rodzaju zbiory dokumentacji. Projekt jest we wczesnej fazie rozwoju.

W ramach projektu OWASP ciągle powstają nowe inicjatywy. Do najciekawszych należy zaliczyć OWASP ISO 17799. Jest to próba wykorzystania standardu ISO 17799 ("Praktyczne zasady zarządzania bezpieczeństwem informacji") w kontekście aplikacji internetowych. Od bieżącego roku w ramach OWASP są również organizowane konferencje poświęcone tematyce bezpieczeństwa aplikacji internetowych. Materiały z pierwszej konferencji OWASP są dostępne na stronie projektu.


TOP 200