Najczęstsze podatności aplikacji webowych

Zgodnie ze statystykami prowadzonymi przez organizację OWASP (Open Web Application Security Project) zajmującą się tematyką bezpieczeństwa aplikacji internetowych można wyróżnić dziesięć najczęściej występujących błędów bezpieczeństwa. Grafika poniżej przedstawia częstość wykrywania tych podatności podczas wstępnej oceny ryzyka przez organizację Veracode zajmującej się badaniem bezpieczeństwa aplikacji internetowych.

Częstość wykrywania podatności z listy OWASP Top 10 podczas wstępnej oceny ryzyka przez organizację Veracode
Częstość wykrywania podatności z listy OWASP Top 10 podczas wstępnej oceny ryzyka przez organizację Veracode. Źródło: [Veracode]

Przytaczanymi powyżej najczęstszymi podatnościami według OWASP są:

  1. Podatności polegające na możliwości wstrzyknięcia niezaufanych danych do interpretera kodu jako część polecenia albo zapytania (SQLi, OS, XXE, LDAP). Atakujący może przechytrzyć interpreter w celu wykonania niezaplanowanych komend bądź też zdobycia dostępu do danych bez właściwej autoryzacji.
  2. Niepoprawnie zaimplementowane mechanizmy autentykacji i zarządzania sesją. Pozwala to atakującemu na skompromitowanie haseł, kluczy, tokenów sesyjnych lub też przejęcie tożsamości innego użytkownika aplikacji.
  3. Cross-site scripting (XSS) czyli atak polegający na wstrzyknięciu w treść atakowanej strony kodu JavaScript. Może zostać wykorzystany do przejęcia sesji użytkownika, przekierowania na niebezpieczną stronę użytkownika bądź też ataków socjotechnicznych.
  4. Zepsute mechanizmy kontroli dostępu dotyczące tego jakie uprawnienia i do jakich zasobów ma dostęp dany użytkownik systemu. Atakujący może wykorzystać tego typu lukę w celu uzyskania dostępu to nieautoryzowanej funkcjonalności lub poufnych danych, a także do zdobycia dostępu do kont innych użytkowników.
  5. Błędne ustawienia bezpieczeństwa – aby odpowiednio zabezpieczyć system wymagane są zdefiniowane oraz wdrożone  odpowiednie ustawienia dla aplikacji, frameworku, serwera aplikacyjnego, serwera bazy danych, platformy itp. Dodatkowo oprogramowanie powinno być regularnie aktualizowane.
  6. Udostępnienie wrażliwych danych – wiele aplikacji webowych oraz API nie chroni w poprawny sposób wrażliwych danych takich jak dane finansowe, medyczne czy też personalne. Atakujący może wykraść lub zmodyfikować tak słabo chronione informacje i za ich pomocą dokonać fraudów na karcie kredytowej, ukraść tożsamość czy też dokonać innych przestępstw. Wrażliwe dane powinny być dodatkowo chronione za pomocą szyfrowania podczas przesyłania i przechowywania.
  7. Nieodpowiednia ochrona przed atakami – wiele systemów nie posiada podstawowych możliwości wykrywania, zapobiegania oraz reagowania na zarówno ręczne jak i zautomatyzowane ataki. Należy wdrażać mechanizmy które wykraczają poza podstawowe mechanizmy sprawdzania poprawności danych wejściowych i obejmują także automatyczne wykrywanie, rejestrowania a nawet blokowanie prób ataków. Ponadto właściciele aplikacji muszą mieć możliwość łatwego wgrywania poprawek bezpieczeństwa.
  8. Cross-Site Request Forgery (CSRF) – polega na zmuszeniu przeglądarki użytkownika na wysłaniu zapytania do serwera w kontekście tegoż użytkownika. Pozwala tym samym na zmuszeniu ofiary do wykonania pewnej nieautoryzowanej akcji np. zmiany hasła, wykonania przelewu.
  9. Używanie komponentów ze znanymi podatnościami – komponenty takie jak biblioteki, frameworki, oraz inne moduły wykorzystywane w oprogramowaniu działają na takich samych uprawnieniach jak sama aplikacja. Jeżeli jakiś podatny komponent zostanie skompromitowany to taki atak może spowodować poważne zagrożenie dla danych czy też całego systemu. Aplikacje, które używają komponentów ze znanymi podatnościami mogą zlikwidować warstwę chroniącą aplikację otwierając ją na różnego rodzaju ataki.
  10. Niezabezpieczone interfejsy API – współczesne aplikacje oprócz podstawowej funkcjonalności często udostępniają interfejsy API do komunikacji z nimi (SOAP/XML, REST/JSON, RPC, GWT itp.). Interfejsy te są często niezabezpieczone oraz zawierają wiele luk w zabezpieczeniach.

Chcesz wiedzieć więcej?

Zapisz się i bądź informowany o nowych postach (zero spamu!). Dodatkowo otrzymasz, moją prywatną listę 15 najbardziej przydatnych narzędzi (wraz z krótkim opisem), których używam przy testach penetracyjnych.

Nigdy nie podam, nie wymienię ani nie sprzedam Twojego adresu e-mail. W każdej chwili możesz zrezygnować z subskrypcji.

Otagowano , , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *