10 najpoważniejszych zagrożeń dla aplikacji webowych

Jednym z najprzydatniejszych dokumentów publikowanych cyklicznie przez OWASP (ang. Open Web Application Security Project) jest lista 10 najbardziej istotnych błędów w zabezpieczeniach aplikacji internetowych. Obok ataków DDoS na infrastrukturę sieciową (warstwę sieciową i transportową według modelu OSI) coraz większą popularność zyskują bowiem ataki na warstwę aplikacji. Wystarczy zajrzeć do ostatniego raportu firmy Akamai, by przekonać się, że w drugim kwartale 2015 roku liczba takich ataków zwiększyła się o 17,65% w stosunku do pierwszego kwartału. Jeżeli natomiast porównamy ją z liczbą ataków w analogicznym okresie ubiegłego roku, to okaże się, że wzrosła ona aż o 122,22%. Aby móc przeciwstawić się takim atakom, bez wątpienia warto zapoznać się z listą OWASP Top 10.

A1. Injection – wstrzyknięcia

Na pierwszym miejscu uplasowały się błędy wstrzyknięcia, w tym SQL, OS, LDAP, XPath Injection itp. Jeżeli w aplikacji nie zostanie zastosowane odpowiednie filtrowanie danych, to atakujący będzie mógł przesłać exploit w formie tekstowej wykorzystujący odpowiednią składnię docelowego interpretera. Wartości zostaną potraktowane jak polecenia, co może skutkować nieautoryzowanym dostępem do poufnych informacji, a nawet przejęciem kontroli nad atakowanym systemem.

A2. Broken Authentication and Session Management – wadliwa obsługa uwierzytelniania i sesji

Poprawne wdrożenie funkcji związanych z uwierzytelnianiem i obsługą sesji w aplikacji nie jest łatwe. Atakujący może wykorzystać nie tylko odkryte przez siebie usterki techniczne w implementacji lub konfiguracji oprogramowania, ale też błędy projektowe i organizacyjne. Konsekwencje ataku bywają zwykle poważne i obejmują uzyskanie nieautoryzowanego dostępu do sesji, przejęcie haseł lub tokenów, wykonanie poleceń na prawach zalogowanego użytkownika itp.

A3. Cross-Site Scripting (XSS) – skrypty międzyserwisowe

Luki XSS, w przeciwieństwie do wspomnianych wyżej wstrzyknięć, nie mają wpływu na logikę aplikacji po stronie serwera, pozwalają za to atakującemu na wykonywanie złośliwych skryptów w przeglądarce ofiary. Dzieje się tak, gdy aplikacja pobiera niezaufane dane i wysyła je do przeglądarki bez wcześniejszej walidacji. Skutkiem wykorzystania błędów tego typu może być np. przechwycenie sesji zalogowanego użytkownika, dynamiczna podmiana zawartości strony, jak również hostowanie złośliwego oprogramowania z wykorzystaniem zaatakowanej aplikacji.

A4. Insecure Direct Object References – nieodpowiednio zabezpieczone bezpośrednie odwołania do obiektów

W aplikacjach, w których występują różne poziomy uprawnień, zdarzają się problemy wynikające z możliwości bezpośredniego dostępu do różnych obiektów w systemie (takich jak pliki, katalogi czy klucze bazy danych). Brak zdefiniowanych reguł dostępności sprawia, że atakujący może odpowiednio manipulować odwołaniami w celu dostania się do poufnych danych. Przykładowo, jeśli aplikacja nie sprawdza uprawnień użytkownika na poziomie funkcji przyjmującej identyfikator obiektu, a te tworzone są w przewidywalny sposób, to znajomość identyfikatora będzie wystarczająca, by móc wykonać takie same operacje na obiekcie jak uprawniony użytkownik.

A5. Security Misconfiguration – niepoprawna konfiguracja

Błędy konfiguracji zabezpieczeń mogą wystąpić w każdej warstwie aplikacji – nie tylko w jej własnym kodzie, ale też w innych elementach składających się na całość systemu, m.in. w użytych przez programistów bibliotekach i frameworkach, silnikach baz danych, serwerach aplikacyjnych czy urządzeniach sieciowych. Atakujący wykorzystuje zwykle domyślne konta, nieużywane strony, niezałatane podatności lub niezabezpieczone pliki i katalogi, by uzyskać nieautoryzowany dostęp do danych. Może się zdarzyć, że umożliwi mu to całkowite przejęcie kontroli nad zaatakowanym systemem.

A6. Sensitive Data Exposure – nieodpowiednie zabezpieczenie poufnych danych

Omawiając to zagrożenie, należy przede wszystkim wspomnieć o niewystarczających zabezpieczeniach kryptograficznych i niewłaściwym zabezpieczeniu wymiany danych. Wciąż wiele aplikacji przechowuje poufne dane (takie jak hasła użytkowników czy numery kart kredytowych), używając błędnie zaimplementowanej enkrypcji lub hashowania bez tzw. salta. W wyniku ataku może dojść do kradzieży takich danych i ich ujawnienia. Równie często aplikacje przesyłają w sieci dane, nie dbając o ich poufność i integralność. Mogą np. stosować wygasłe certyfikaty lub zbyt słabe algorytmy szyfrowania, co stwarza szerokie pole do nadużyć.

A7. Missing Function Level Access Control – nieodpowiednia kontrola uprawnień użytkowników

Aplikacje często obsługują zapytania do stron bez odpowiedniej walidacji. Niesprawdzanie, czy dana osoba powinna mieć dostęp do żądanej strony, pozwala atakującemu na wykonywanie akcji bez uwierzytelnienia lub z prawami innego użytkownika. Głównym celem tego typu ataków są oczywiście funkcje administracyjne.

A8. Cross-Site Request Forgery (CSRF) – fałszowanie żądań

Podatność ta często bywa mylona z XSS, ponieważ tak jak ona pozwala zaatakować przeglądarkę użytkownika, nie część serwerową aplikacji webowej. W tym przypadku celem atakującego jest wykorzystanie uprawnień ofiary do wykonania interesujących go nieautoryzowanych akcji. Odbywa się to dzięki podmienionym zapytaniom HTTP. Powodzenie ataku zależy od tego, czy atakujący jest w stanie przewidzieć, jak powinno wyglądać żądanie, które zostanie zaakceptowane przez serwer.

A9. Using Components with Known Vulnerabilities – używanie komponentów ze znanymi podatnościami

Zdecydowana większość powstających obecnie aplikacji bazuje na gotowych już bibliotekach i frameworkach, które – jak każde oprogramowanie – mogą mieć błędy. W teorii można temu zaradzić, instalując udostępniane przez producentów poprawki. Często jednak okazuje się, że zaktualizowane komponenty nie będą współdziałać z tymi, które nie otrzymały łatek. W efekcie aplikacja pozostaje niezałatana, co pozwala na przeprowadzanie mniej lub bardziej wyrafinowanych ataków.

A10. Unvalidated Redirects and Forwards – nieodpowiednia walidacja przekierowań

Ostatnie zagrożenie w zestawieniu OWASP dotyczy sytuacji, w których aplikacje webowe przekierowują użytkownika na inne strony, wykorzystując niezaufane dane. Przy braku odpowiedniej walidacji atakujący może dodać do oryginalnego odnośnika ciąg znaków, który zaprowadzi ofiarę na stronę ze złośliwym oprogramowaniem albo wyłudzającą poufne dane.

Powyżej opisane błędy należą do najbardziej krytycznych i najczęściej wykorzystywanych, dlatego warto je mieć na uwadze, tworząc i zabezpieczając własne aplikacje internetowe.

Brak komentarzy :

Prześlij komentarz