Strona główna > Web development > Bezpieczeństwo aplikacji webowych
Journal

Bezpieczeństwo aplikacji webowych

Oceń artykuł:

Bezpieczeństwo aplikacji webowych (Web Applications Security) wzbudza emocje i zainteresowanie.

Nie tylko u właścicieli biznesów, ale także coraz częściej bezpieczeństwem interesują się sami użytkownicy aplikacji, którzy są coraz bardziej świadomi zagrożeń związanych z cyberatakami.

Problematyka bezpieczeństwa, obok skalowalności, wydajności, User Experience, jest bodaj jedną z ważniejszych kwestii, którym należy się szczególna uwaga w procesie projektowania, tworzenia aplikacji webowych.

Przyczyna tego stanu rzeczy jest dość oczywista i zrozumiała. Aplikacja, która nie jest odpowiednio zabezpieczona, a więc stwarza ryzyko dla jej właścicieli oraz użytkowników jest aplikacją, której rynkowe fiasko jest kwestią miesięcy.

Prędzej, niż później, wadliwe, niedopracowane, amatorskie zabezpieczenia ściągną na nią kłopoty.

Warto pamiętać, że o ile zakres działalności firmy może być bardzo lokalny, o tyle jej obecność w internecie ma zawsze charakter globalny.

Ryzyko ataków istnieje zawsze i nie ma ono konkretnego źródła, nie można wskazać obszaru, z którego może ono pochodzić. Stąd też myślenie o bezpieczeństwie aplikacji webowej jest zasadne przy każdej skali biznesu.

Bardzo trudno wskazać także potencjalnych agresorów. Mogą nimi być pojedynczy ludzie (hakerzy), organizacje (np. zorganizowane grupy przestępcze), jak również państwa narodowe, używające do ataku swoich instytucji.

Agresorem może również być różnego rodzaju oprogramowanie, które nie wymaga żadnych intencjonalnych działań ze strony konkretnego człowieka. Rozprzestrzenia się w sposób przypadkowy jak wirusy.

Innymi słowy, trzeba być zawsze gotowym na odparcie ataku, który może pochodzić z różnych lokalizacji, przebiegać na różnych poziomach oraz charakteryzować się różnym poziomem złożoności i szkodliwości.

Rozwój technologii to jednocześnie rozwój zagrożeń oraz metod, technik, narzędzi ich minimalizowania, wykrywanie oraz eliminowanie.

Protekcja oznacza dziś nie tylko gotowość do skutecznego odparcia ataku, ale także konieczność solidnej prewencji.

Siłą rzeczy dochodzimy do kilku kluczowych pytań, na które będziemy poszukiwać odpowiedzi w poniższym artykule. Co to jest bezpieczeństwo aplikacji internetowych? Jakie są najczęstsze zagrożenia oraz luki w zabezpieczeniach?

Jakie są najlepsze, rekomendowane sposoby przeciwdziałania zagrożeniom? Jakie są najlepsze praktyki zabezpieczania aplikacji webowych?

Właśnie takimi kwestiami będziemy się dziś zajmować.

Jak zwykle, życzymy miłej lektury!

Chcesz wiedzieć, ile kosztuje aplikacja? 

Narastający problem bezpieczeństwa aplikacji webowych

Nim przejdziemy do zdefiniowania pojęcia bezpieczeństwa aplikacji webowych warto zdać sobie sprawę z charakteru, skali problemu.

Źródło: Norton Security

Dobrym do tego asumptem jest kolejny raport Accenture pt. „The state of cybersecurity resilience 2021”, z którego dość jasno wynika, że problem zapewnienia bezpieczeństwa aplikacji oraz jej użytkownikom staje się problemem palącym.

Zgodnie z wynikami raportu Accenture:

  • liczba cyberataków na firmy wzrasta z roku na rok
  • wysokość budżetów, inwestycji w bezpieczeństwo także lawinowo wzrasta.

Równie ciekawych, poglądowych i robiących wrażenie danych dostarcza inny raport Accenture pt. „Cyber Threat Intelligence Report”, z którego z kolei wynika, że w 2020 roku:

  • ponad 60% włamań wiązało się z wyłudzaniem danych
  • włamania typu Ransomware powodowały średnio dwunastodniowy przestój operacyjny w pracy aplikacji.

Jeśli przyjrzymy się jeszcze jednemu raportowi Accenture (pt. „Eighth Annual Cost of Cybercrime Study”), tym razem podejmującemu problem kosztów, to zrozumiemy, że skala problemu jest naprawdę poważna.

Średni koszt wydatków na naprawę szkód wyrządzonych przez złośliwe oprogramowanie wyniósł 2,5 miliona dolarów, a średni czas naprawy aplikacji po ataku wyniósł 50 dni.

Przyszłość raczej będzie nasilać aktualne tendencje, a wszystko wskazuje na to, że koszty cyberprzestępstw będą rosły z każdym rokiem o około 15%. Tak przynajmniej wynika z różnego rodzaju szacunków omówionych w artykule pt, „Cybercrime To Cost The World $10.5 Trillion Annually By 2025”.

Ogólny obraz sytuacji, jaki wyłania się z powyższych raportów oraz wielu innych źródeł jest dość jednoznaczny.

Bezpieczeństwo aplikacji webowych jest kwestią, która już przesądza o rynkowym „być albo nie być”, a będzie nabierać na znaczeniu jeszcze bardziej.

Jednocześnie rodzi to problem właściwej alokacji środków przeznaczonych na bezpieczeństwo.

Stwarza także problem znalezienia rozwiązań jednocześnie wydajnych, skutecznych oraz przekonujących atrakcyjnym kosztem.

Generalnie rzecz ujmując, złośliwe ataki na aplikacje webowe są źródłem szkód:

  • materialnych (np. uszkodzony serwer)
  • wizerunkowych
  • finansowych
  • biznesowych
  • społecznych i rynkowych (np. podważenie zaufania społecznego do produktów cyfrowych)
  • psychologicznych (traumy związane ze szkodami wyrządzonymi przez zaatakowane aplikacje).

Co to jest bezpieczeństwo aplikacji webowych?

Bezpieczeństwo aplikacji webowych (Web AppSec - Web Applications Security) polega na wdrożeniu odpowiednich mechanizmów, norm, zabezpieczeń, protokołów, narzędzi, które współpracując ze sobą pozwalają działać aplikacji w sposób niezawodny, nawet w sytuacji cyber ataku.

Źródło: Norton Security

Pod pojęciem bezpieczeństwa aplikacji webowych należy rozumieć procesy, technologie, metody ochrony serwerów i infrastruktury, aplikacji webowych i usług internetowych przed atakami.

Bezpieczeństwo aplikacji webowych ma przede wszystkim kluczowe znaczenie dla:

  • ochrony danych użytkowników oraz organizacji przed kradzieżą danych
  • zapewnienia ciągłości działania aplikacji.

Pisząc o bezpieczeństwie aplikacji webowych mamy także na myśli działania prewencyjne w postaci wyszukiwania, naprawiania, eliminowania luk w zabezpieczeniach.

Przede wszystkim mamy na myśli ochronę aplikacji webowych za pomocą rozwiązań:

  • zapór sieciowych (Web Application Firewalls - WAF)
  • uwierzytelniania wieloskładnikowego (Multi-Factor Authentication - MFA
  • sprawdzania poprawności plików Cookie (Cookies Validation)
  • sprawdzania poprawności danych wejściowych użytkownika (Validating User Input).

Podnosząc problem bezpieczeństwa warto podkreślić, że stworzenie aplikacji webowej, usługi webowej, aplikacji mobilnej pozbawionej niedoskonałości jest właściwie niemożliwe.

Aplikacja bezbłędna, taka, która nie posiada żadnych wad, niedoskonałości, błędów jest bardziej konceptem, ideałem, do urzeczywistnienia którego należy dążyć, niż realną możliwością.

Każde oprogramowanie zawiera wady. Stwarzające mniej lub bardziej ryzykowne zagrożenia. Bezpieczeństwo aplikacji webowych jest procesem, w którym istotną rolę pełni stała kontrola działania aplikacji, eliminowanie błędów oraz eliminowania potencjalnych przyczyn zagrożeń.

Dlatego w celu zabezpieczenia aplikacji webowej konieczne jest nie tylko jej regularne monitorowanie pod kątem luk zabezpieczeń oraz ich łatanie, ale też ciągłe doskonalenie wewnętrznych procedur i zbioru dobrych praktyk mających na celu zwiększenie poziomu bezpieczeństwa aplikacji.

Jakie są najpopularniejsze sposoby ataku na aplikację webową?

O lukach w zabezpieczeniach aplikacji webowych (Security Vulnerabilities) mówimy w sytuacji, kiedy jakaś cecha takiej aplikacji bądź ekosystemu, w którym ona operuje, pozwala na uzyskanie dostępu bądź wykonanie operacji na zasobie/danych bez zgody ich właściciela.

Źródło: 2021 Cyber Security Statistics

Luka w zabezpieczeniach to niezamierzona bądź zamierzona wada oprogramowania, w wyniku której osoby do tego nieuprawnione, mogą wykonać celową bądź nie, operację w aplikacji, która może narazić użytkowników na utratę danych, tożsamości bądź uniemożliwi dalsze korzystanie z aplikacji.

Najbardziej popularnymi przyczynami luk w zabezpieczeniach aplikacji webowych są:

  • złożoność systemu (Complexity), która podnosi prawdopodobieństwo wystąpienia błędów
  • znajomość systemu (Familiarity) - wykorzystywanie otwartego kodu, sprzętu, którego luki są ogólnie znane
  • błędy systemu operacyjnego
  • błędy w kodzie źródłowym
  • źle skonfigurowane komponenty systemu
  • słabe praktyki uwierzytelniania
  • brak silnego szyfrowania.

Atak na aplikację webową najczęściej definiuje się jako próbę złamania jej zabezpieczeń w celu uzyskania dostępu do danych poufnych lub wykorzystania aplikacji jako narzędzia do przeprowadzania ataków na użytkowników aplikacji bądź inne systemy informatyczne.

Popularne metody łamania zabezpieczeń, wykorzystania luk stosowane przez hakerów to:

  • wstrzykiwanie SQL (SQL Injections) - polega na użyciu złośliwego kodu SQL w celu uzyskania nieautoryzowanego dostępu administracyjnego
  • ataki XSS (Cross-Site Scripting) - również polega na wstrzykiwaniu złośliwego kodu bezpośrednio do aplikacji, by docelowo zaatakować przeglądarkę użytkownika, uzyskać dostęp do wielu funkcji (np. kamery, geolokalizacji)
  • fałszowanie żądań między witrynami (Cross-Site Request Forgery - CSRF) - polega na użyciu złośliwej aplikacji internetowej, która wykonuje niepożądane działanie w witrynie, w której użytkownik jest zalogowany
  • odmowa usługi (Denial of Service DoS) i rozproszona odmowa usługi (Distributed Denial of Service DDoS) - polegają na przeciążaniu infrastruktury aplikacji poprzez generowanie dużej ilości danych i zapytań.

Zgodnie z jeszcze innym podziałem, w którym głównym kryterium różnicującym jest cel ataku możemy wyróżnić zagrożenia, złośliwe działania wymierzone w:

  • klientów, użytkowników aplikacji
  • usługi aplikacji
  • warstwę dostępu.

Klienci są narażeni na zagrożenia w postaci:

  • Cross-Site Request Forgery 
  • Cross-Site Scripting 
  • Session Hijacking 
  • Malware
  • Malicious Scripts
  • Certificate Forging.

Celem ataków bardzo często są także komponenty, urządzenia, narzędzia bez których aplikacja webowa nie może działać.

W szczególności na ataki są narażone:

  • elementy infrastruktury
  • frameworki
  • biblioteki
  • wtyczki
  • wewnętrzny kod.

Usługi aplikacji są najczęściej atakowane za pomocą:

  • wstrzykiwania (SQL Injection, XSS)
  • Malware
  • DoS i DDoS
  • Cross-Site request Forgery.

Warstwa dostępu, pozwalająca użytkownikom dokonywać uwierzytelniania i uzyskiwania autoryzacji dostępu do aplikacji jest bardzo częstym celem ataków.

Szacuje się, że ponad 30% wszystkich złośliwych ataków na aplikacje webowe stanowią próby dokonywane za pomocą tej warstwy.

Warstwa dostępu jest najczęściej atakowana za pomocą:

  • Credential Theft
  • Credential Stuffing
  • Session Hijacking
  • Phishing.

Testowanie bezpieczeństwa aplikacji webowych (Web Application Security Testing)

Wykonywanie regularnych, zaplanowanych, różnorodnych testów aplikacji webowych jest dziś tyleż oczywiste, co po prostu konieczne.

Pojęcie bezpieczeństwa aplikacji webowej jest pojęciem w pierwszej kolejności wskazującym na procesualny charakter takich działań.

Testowanie bezpieczeństwa aplikacji webowej najczęściej definiuje się jako proces, w którym aplikacja jest testowana, analizowana pod kątem bezpieczeństwa, wdrożonych zabezpieczeń, pojawiających się luk.

Źródło: 2021 Cyber Security Statistics

W efekcie tych działań powstaje raport określający poziom bezpieczeństwa oraz stanu aplikacji webowej.

Testy bezpieczeństwa służą do mierzenia poziomu bezpieczeństwa aplikacji webowych za pomocą ręcznych i/lub automatycznych technik, metod, narzędzi testowania bezpieczeństwa.

Przy okazji warto zauważyć, że bezpieczeństwo aplikacji webowej nie jest stanem trwałym, ale raczej należy o nim myśleć jako o procesie.

Bezpieczeństwo należy ustawicznie poprawiać, zwiększać, zapewniać oraz weryfikować, za pomocą różnorodnych testów, które pozwalają wykryć oraz załatać luki.

Najbardziej popularnymi rodzajami testów bezpieczeństwa są:

  • dynamiczne testy bezpieczeństwa aplikacji (Dynamic Application Security Testing - DAST) - są to testy zautomatyzowane, rekomendowane do testowania bezpieczeństwa aplikacji wewnętrznych o niskim ryzyku
  • statyczne testy bezpieczeństwa aplikacji (Static Application Security Testing - SAST) - polecane są do identyfikowania błędów bez konieczności uruchamiania aplikacji w środowisku produkcyjnym
  • testy penetracyjne (Penetration Testing) - rekomendowane są dla testowania aplikacji o znaczeniu krytycznym, ich nadrzędnym celem jest wykrycie zaawansowanych scenariuszy ataków.

Pozostałe sposoby zwiększania bezpieczeństwa aplikacji webowej

Zwiększenie bezpieczeństwa aplikacji webowych nie sprowadza się jedynie do przeprowadzania testów, ale także obejmuje działania prewencyjne, których celem jest zmniejszenie ryzyka ataku.

Zasada minimalizowania uprawnień oraz ograniczonego zaufania pozwala zmniejszać ryzyko poprzez zarządzanie dostępem, który dla różnych grup użytkowników powinien być zróżnicowany. Nie każdy użytkownik potrzebuje takiego samego zestawu praw i uprawnień.

Co do zasady, uprawnienia najwyższego rzędu powinny być oferowane tylko wąskiej grupie użytkowników.

Innym sposobem przeciwdziałania atakowi jest walidowanie danych wejściowych użytkownika. Wprowadzany tekst, załączniki w różnych formatach bardzo często są celem ataków i jako takie powinny być poddawane walidowaniu.

Walidacji najczęściej poddawane jest:

  • typ danych (np. numeryczny)
  • format danych (np. zgodny ze schematami XML)
  • wartość danych (np. długość).

Dane wejściowe są walidowane także pod kątem syntaktycznym oraz semantycznym. A więc pod kątem ich składni oraz poprawności, zgodności z logiką biznesową, jaką została zaimplementowana w aplikacji.

W kwestii walidowania danych wejściowych warto także stosować zasadę domniemanej wrogości danych wejściowych, dopóki nie zostanie udowodnione, że nie mają one takiego charakteru.

Zapobieganiu przetwarzaniu danych wadliwych, wątpliwych sprzyja przetwarzanie tylko poprawnie wprowadzonych danych.

Więcej o tym problemie przeczytacie w bardzo ciekawym artykule pt. „All Input Data is Evil-So Make Sure You Handle It Correctly and with Due Care”.

Stosowanie dobrych praktyk i powszechnie uznanych narzędzi również znacząco podnosi poziom naszej aplikacji. Wdrożenie mechanizmów uwierzytelniania dwuskładnikowego, monitorowanie błędów, „miękkie” usuwanie danych, GDPR compliance oraz implementacja narzędzi oferujących dodatkowe mechanizmy bezpieczeństwa jak AWS WAF, bądź Shield - wszystko to znacząco podnosi poziom bezpieczeństwa naszej aplikacji.

Także regularne kopie bezpieczeństwa, szyfrowanie oraz dobre procedury zarządzania sytuacjami kryzysowymi zapewnią ciągły i stabilny rozwój aplikacji.

Bezpieczeństwo aplikacji webowych. Podsumowanie

  1. Bezpieczeństwo aplikacji webowych (Web Applications Security) to problem, który budzi zainteresowanie coraz szerszych grup – nie tylko właścicieli biznesów, ale także samych użytkowników aplikacji webowych oraz mobilnych.
  2. Ochrona, bezpieczeństwo aplikacji webowych, aplikacji mobilnych (obok skalowalności, wydajności, User Experience) jest jednym z najważniejszych problemów.
  3. Aplikacja webowa, mobilna, która nie jest odpowiednio zabezpieczona jest aplikacją, która nie ma przed sobą świetlanej przyszłości na rynku.
  4. Użytkownicy aplikacji coraz częściej zwracają uwagę na poziom wdrożonych zabezpieczeń w aplikacjach.
  5. Zakres działalności firmy nie ma znaczenia w kwestii zapewnienia bezpieczeństwa aplikacjom webowym oraz mobilnym.
  6. Obecność w internecie, posiadanie strony internetowej (www), aplikacji webowej lub mobilnej ma zawsze charakter globalny. A to oznacza, że ryzyko ataków istnieje zawsze i nie ma ono konkretnego źródła.
  7. Myślenie o bezpieczeństwie aplikacji webowych, mobilnych jest wskazane bez względu na wielkość organizacji.
  8. Każda organizacja powinna być przygotowana na ewentualny atak, który może pochodzić z różnych lokalizacji, przebiegać na różnych poziomach oraz charakteryzować się różnym poziomem złożoności i szkodliwości.
  9. Zgodnie z wynikami wielu cyklicznych raportów liczba cyber ataków na firmy wzrasta z roku na rok. Ilość ataków pociąga za sobą zwiększenie wysokości budżetów, inwestycji w bezpieczeństwo.
  10. Zgodnie z różnymi prognozami koszty cyber przestępstw będą z każdym rokiem rosnąć.
  11. Ochrona, bezpieczeństwo aplikacji webowych (Web AppSec - Web Applications Security) polega na wdrożeniu odpowiednich mechanizmów, norm, zabezpieczeń, protokołów, narzędzi, które współpracując ze sobą pozwalają działać aplikacji w sposób niezawodny, nawet w sytuacji cyber ataku.
  12. Web Applications Security to procesy, technologie, metody ochrony serwerów i infrastruktury, aplikacji webowych i usług internetowych przed atakami.
  13. Ochrona, bezpieczeństwo aplikacji webowych to także działania prewencyjne w postaci wyszukiwania, naprawiania, eliminowania luk w zabezpieczeniach.
  14. Zapewnienie bezpieczeństwa IT aplikacji webowej. mobilnej jest procesem, w którym istotną rolę pełni stała kontrola działania aplikacji, eliminowanie błędów oraz eliminowania potencjalnych przyczyn zagrożeń.
  15. O lukach w zabezpieczeniach aplikacji webowych (Security Vulnerabilities) mówimy w sytuacji, kiedy jakaś cecha takiej aplikacji bądź ekosystemu, w którym ona operuje, pozwala na uzyskanie dostępu bądź wykonanie operacji na zasobie/danych bez zgody ich właściciela.
  16. Atak na aplikację webową najczęściej definiuje się jako próbę złamania jej zabezpieczeń w celu uzyskania dostępu do danych poufnych lub wykorzystania aplikacji jako narzędzia do przeprowadzania ataków na użytkowników aplikacji bądź inne systemy informatyczne.
  17. Złośliwe działania wymierzone są zazwyczaj w użytkowników aplikacji, usługi aplikacji, warstwę dostępu.
  18. Celem ataków bardzo często są także komponenty, urządzenia, narzędzia bez których aplikacja webowa nie może działać.
  19. Testowanie bezpieczeństwa aplikacji webowej najczęściej definiuje się jako proces, w którym aplikacja jest testowana, analizowana pod kątem bezpieczeństwa, wdrożonych zabezpieczeń, pojawiających się luk.
  20. Bezpieczeństwo należy ustawicznie poprawiać, zwiększać, zapewniać oraz weryfikować, za pomocą różnorodnych testów, które pozwalają na wykrywanie oraz załatanie luk.
  21. Zwiększenie bezpieczeństwa aplikacji obejmuje także działania prewencyjne, których celem jest zmniejszenie ryzyka ataku
  22. Zasada minimalizowania uprawnień oraz ograniczonego zaufania pozwala zmniejszać ryzyko poprzez zarządzanie dostępem, który dla różnych grup użytkowników powinien być zróżnicowany.
  23. W procesie walidowania danych wejściowych rekomenduje się stosowanie zasady domniemanej wrogości danych wejściowych.
  24. Stosowanie dobrych praktyk i powszechnie uznanych narzędzi również znacząco podnosi poziom naszej aplikacji.
Oceń artykuł:
Journal / JPG / Radek Misiewicz - avatar
UX Writer i badacz z wykształcenia + doświadczenia. Zbiera wiedzę The Story i dzieli się nią na Journalu.

Szukasz software house?