Charakterystyka podstawowych ataków w internecie i jak się przed nimi bronić

 lut, 14 - 2019   Bezpieczeństwo

Bezpieczeństwo w InternecieBezpieczeństwo w internecie jest jednym z najważniejszych wyzwań jakie współcześnie stoją przed twórcami stron, serwisów i aplikacji. Odpowiednie ich zabezpieczenie jest najważniejszym zadaniem dla programisty, jednak aby to zadanie zrealizować należy znać i rozumieć zagrożenia i ataki jakie mogą być zastosowane przeciwko rozproszonym systemom sieciowym. W artykule przedstawiona jest krótka charakterystyka najważniejszych zagrożeń i ataków na jakie należy zwrócić uwagę oraz sposoby obrony. 

 

Ogólne zasady, porady i uwagi

Na początek warto przedstawić kilka dobrych rad, które należy przestrzegać tworząc aplikację internetową:

  • nigdy nie ufaj przychodzącym danym, zawsze traktować je jako potencjalne zagrożenie – waliduj, sprawdzaj, filtruj
  • dane do aplikacji mogą być przekazywane nie tylko za pomocą formularzy – mogą zostać wysłane przez API, mogą być dodane do nagłówków HTTP, mogą również być zaszyte w przyjmowanych obrazkach, itp.
  • korzystaj z certyfikatów SSL – bezpieczny protokół HTTPS
  • zawsze chroń, koduj i ukrywaj wrażliwe dane – zwłaszcza dane o użytkownikach (a już w szczególności dane finansowe)
  • ukrywaj pliki przed dostępem – w katalogu „public” mogą być tylko te pliki do których musi mieć dostęp przeglądarka i żadne inne
  • sprawdzaj przesyłane pliki – wielkości, rozszerzenie, można przepuszczać plik przez filtry które sprawdzają poprawność pliku, itp.
  • wymuszaj na użytkownikach używania dłuższych i bardziej skomplikowanych haseł
  • zawsze hash-uj hasła mocnym algorytmem
  • loguj i sprawdzaj wszystkie błędy i podejrzane zachowania użytkowników
  • aktualizuj oprogramowanie

 

 

Cross-Site Scripting (XSS)

Wysłanie obcego kodu (zazwyczaj JavaScript), tak aby strona lub serwis uruchomiła ten kod.

Zagrożenie: atakujący może mieć dostęp do ciasteczek/sesji użytkownika, może modyfikować wygląd i kod strony i inne.

Atak: zazwyczaj poprzez niezabezpieczone formularze lub elementy strony gdzie można dodać swoją treść do strony.

Obrona:

  • walidacja danych przychodzących od użytkownika
  • ucieczka wszystkich niechcianych znaków
  • nie wyświetlanie danych wysłanych od użytkownika bezpośrednio, bez sprawdzenia

 

SQL Injection

Wstrzyknięcie obcego kodu SQL do zapytania.

Zagrożenie: atakujący może zmienić dane w bazie w sposób niechciany lub uszkodzić/usunąć dane

Atak: atakujący wysyła zapytanie z kodem SQL licząc na uruchomienie tego kodu na serwerze

Obrona:

  • walidacja danych
  • ucieczka/bindowanie wszystkich parametrów dodawanych do zapytań bazy danych

 

Cross Site Request Rorgery (XSRF/CSRF)

Użytkownik może nieświadomie wykonać wrogą operację na rzecz atakującego.

Zagrożenie: ataki te są wymierzone w użytkowników, celem atakującego jest wykorzystanie uprawnień użytkownika do wykonania operacji wymagających zgody użytkownika.

Atak: atak ma na celu skłonić użytkownika zalogowanego do serwisu internetowego do tego, aby uruchomić on odnośnik, którego otwarcie wykona w owym serwisie akcję, do której atakujący nie miałby w przeciwnym razie dostępu.

Obrona:

  • hasła jednorazowe zabezpieczające np. formularze i akcje – hasło jest generowane jednorazowo przez serwis i od razu sprawdzane, jeżeli jest niepoprawne to akcja nie zostaje wykonana
  • dodanie dodatkowych zabezpieczeń w postaci ponownych autoryzacji, zwłaszcza w przypadku ważnych akcji (np. operacji finansowych)
  • ustawienie krótszych sesji i ważności danych

 

Session Hijacking

Przechwycenie sesji użytkownika.

Zagrożenie: atakujący może przejąć na jakiś czas konto użytkownika.

Obrona: każdorazowo sprawdzanie czy IP i User Agent użytkownika nie zmienia się pomiędzy żądaniami w obrębie jednej sesji.

 

Distributed Denial of Service (DDoS)

Atak polegający na zablokowaniu działania systemu lub usługi.

Atak: polega głównie na obciążeniu atakowanego systemu poprzez zajęcie wszystkich wolnych zasobów, atak przeprowadzany jest równocześnie z wielu komputerów.

Obrona:

  • rozproszenie serwisów, tak aby nie wszystkie były skupione np. na jednym serwerze – jeżeli jeden serwis zostanie zaatakowany, inne nie przestaną działać
  • CDN – Contend Delivery Network – rozłożenie ruchu na wiele serwerów, przeniesienie serwisu do chmury

 

 

Brute Force Attack, Dictionary Attack

Atak: polega na wysyłaniu różnych kombinacji ciągu (np. hasła), aby ostatecznie ustalić (zgadnąć) jaki ten ciąg jest; do tego celu wykorzystywane jest specjalne oprogramowanie.

Obrona:

  • wymuszenie na użytkowników odpowiednie skomplikowanego hasła (długość, wielkie i małe znaki, cyfry, znaki specjalne)
  • blokowanie możliwość logowania po kilku nieudanych próbach
  • captcha – sprawdzanie czy użytkownik nie jest botem
  • two-factor authentication (lub multi-factor authentication) – uwierzytelnienie użytkownika odbywa się kilkoma kanałami, np. za pomocą formularz logowania oraz poprzez podanie kodu weryfikacyjnego wysłanego np. w wiadomości SMS

 

Phishing Attack

Metoda oszukania użytkowników serwisu, aby otrzymać od nich dane wrażliwe (np. dane logowania lub finansowe).

Atak: polega na wysłanie użytkownikowi wiadomości (drogą mailową lub SMS), w której atakujący próbuje nakłonić ofiarę aby ta udzieliła mu wrażliwych danych.

Obrona: uświadamianie użytkowników serwisu, że pewne informacje nie są do nich przesyłane za pomocą wiadomości e-mail lub SMS.


Przeczytaj równierz