Rodzaje ataków sieciowych – jak się przed nimi skutecznie chronić?

Rodzaje ataków sieciowych – jak się przed nimi skutecznie chronić?

Sieć internetowa to globalna wioska i kopalnia wiedzy oraz różnych danych – często są to informacje wrażliwe i poufne, do których dostępu szukają nie zawsze uczciwi użytkownicy Internetu. Zagadnienie bezpieczeństwa wszystkich aplikacji internetowych jest więc bardzo istotne, zwłaszcza, że w ostatnim czasie coraz częściej dochodzi do na przykład wycieków danych osobowych użytkowników, którzy są zalogowani w popularnych serwisach. Niekontrolowane wydostanie się danych jest bardzo groźne, ponieważ zdobyte przez cyberprzestępców dane umożliwiają przejęcie czyjejś tożsamości i wykorzystanie jej w drodze przestępstwa. Jakie są najbardziej popularne rodzaje ataków hakerskich? Jak są przed nimi skutecznie bronić?

Dyrektywa GDPR

Zagadnienie jest bardzo istotne. W 2018 roku weszła w życie dyrektywa GDPR – General Data Protection Regulation (GDPR). Jest to Rozporządzenie o Ochronie Danych Osobowych (RODO), które zastąpiło dyrektywę 95/46/WE Parlamentu Europejskiego i Rady WE z 1995r. Jego celem jest zwiększenie i ujednolicenie praw odnoszących się do prywatności w sieci, jak również i ochrony danych osób fizycznych na obszarze UE. Rozporządzenie mówi też o uproszczeniu regulacji bezpieczeństwa dla firm oraz organizacji, które zajmują się obsługą mieszkańców UE. Prawo w nim zawarte zezwala na wyznaczenie surowych kary dla przedsiębiorców, którzy źle zabezpieczyli dane użytkowników lub nie podjęli żadnych kroków, by zminimalizować straty spowodowane wyciekiem danych.

O wyciekach danych, przyczynach hakowania i możliwości obrony słów kilka

Przyczyna umożliwiająca hakowanie aplikacji zazwyczaj tkwi w jej budowie, a w zasadzie w pewnych podatnościach. Jakie są najpopularniejsze ataki? Które błędy w strukturze strony są wykorzystywane? Jak się przed nimi chronić przed atakami? Listę najpopularniejszych ataków hakerskich publikuje OWASP.

OWASP, czyli Open Web Application Security Project to ogólnoświatowa, działająca non-profit fundacja. Jej głównym celem jest poprawa bezpieczeństwa aplikacji internetowych oraz umożliwienie swobodnego dostępu do niezbędnych narzędzi, wiedzy i technologii. Organizacja stara się jak najbardziej obiektywnie przekazywać praktyczne informacje z zakresu bezpieczeństwa oraz ekonomii użytkowania aplikacji. Wspiera też wszelkie, poza komercyjnymi, technologie bezpieczeństwa.

Oto lista najbardziej znanych ataków:

1. Injection – dotyczy interpretowania danych wejściowych – część komendy lub zapytania. Dane, które podstawi hakera zmieniają założenia, do których powstała komenda lub zapytanie. Jest to najłatwiejszy do wykonania atak. Obroną jest preare statement i parameter bindings oraz unikanie Raw Query. Należy pamiętać o sanitazacjiczyli walidacji wszystkich przychodzących danych przed ich użyciem oraz o escapowaniu danych, które wychodzą przed przekazaniem ich do użycia.

2. Broken Authentication and Session Management – zarządzanie sesjami – bez niego aplikacja nie może funkcjonować. Rejestracja, weryfikacja i dostęp do funkcjonalności przez użytkowników wymaga podania ich danych. By do wycieku tych danych nie doszło, służy podstawowa paczka Laravel Auth, która chroni sesję na poziomie przeglądarki jak i API. Uwierzytelnienie użytkownika można zaoferować przez social media: Facebook, Github. Do tego służy paczka Socialize od Laravela. Innym rozwiązaniem jest two-factor authentication przez SMS, aplikację 2FA Google oraz ograniczenie błędnych prób logowania i wymuszenie wprowadzenia silnego hasła, a także używanie protokołu HTTPS.

3. Sensitive Data Exposure (including General Data Protection Regulation)- jak zabezpieczyć dane użytkownika przed potencjalnymi atakami? Wycieki danych są wewnętrzne i zewnętrzne. Wewnątrz organizacji warto co jakiś czas przeprowadzić audyt sprawdzający stan ochrony danych osobowych. Warto uruchomić VPN (Virtual Private Network) z dostępami LDAP. Dla zewnętrznej ochrony posłuży poprawna konfiguracja – szyfrowanie serwera (Laravel Encryption) lub przeniesienie danych do chmury, które są dostatecznie chronione.

4. XML External Entities (XXE). Jest to prawie taki sam atak jak Injection. Zachodzi podczas przetwarzania XML, który zawiera referencje do zewnętrznych źródeł, a te następnie będą załadowane do treści XML. Tutaj ważne są walidacje i sanitacje po stronie serwera. Gdy nie ma potrzeby wczytywania danych z zewnętrznych źródeł, można wyłączyć możliwość ładowania ich z zewnętrznych źródeł już na poziomie biblioteki. Tu pomocna jest funkcja libxml_disable_entity_loader (libxml2). Warto też przeprowadzić aktualizację protokołu SOAP.

5. Broken Access Control – użytkownicy mają dostęp do funkcjonalności lub zasobu, by wiedzieć czy i jaki jest – służy kontrola dostępu, którą ma super admin. Po uzyskaniu przez hakera dostępu do konta użytkownika, będzie widział dane wrażliwe i zyska możliwość modyfikacji ról dostępu. Laravel poleca, w celu zabezpieczenia się przed takim atakiem, użycie dwóch narzędzi, które ułatwiają implementację polityki dostępowej. Jest to gates i policies. Pierwszy decyduje o tym, czy użytkownik ma dostęp do wykonania danej akcji. Warto też pamiętać, że dojście do danych może mieć jedynie ich właściciel. To zapewnia narzędzie policies. Policy odrzuca nieautoryzowane próby dostępu.

6. Security Misconfiguration, czyli ważna jest poprawna konfiguracja serwera.

7. Cross-Site Scripting (XSS), czyli ataki XSS. Są wtedy, gdy aplikacja przesyła dane pochodzące z nieznanego źródła do przeglądarki bez walidacji i escapowania. W rezultacie haker może przekierować użytkownika na inną stronę. Aby tak się nie stało, należy walidować dane wejściowe oraz escapować dane nim dotrą do użytkownika. Powinny być też oczyszczone przed zapisem, a Laravel dostarcza odpowiedni mechanizm ochrony przed Cross-Site Request Forgery.

8. Insecure Deserialization – serializacja obiektów jest naturalną operacją, jaką stosuje się w aplikacjach. Obiekty po deserializacji mają więcej możliwości niż JSON czy XML. Tu pojawiają się jednak problemy w zabezpieczeniach. W wyniku ataku może dojśc do złamania kontroli dostępu oraz wykonania zewnętrznego kodu. Aby tak się nie stało akceptacja deserializacji danych powinna być wyłącznie z zaufanych źródeł, a logowanie przychodzących zapytań, jak również sprawdzanie wyjątków pomoże w blokadzie ataków.

9. Using Components With Known Vulnerabilities – każda aplikacja współpracuje z zewnętrznym kodem. A któraś z tych paczek może być podatna na ataki. Aby do tego nie dopuścić należy korzystać z paczek pochodzących z oficjalnych źródeł. W procesie utrzymania kodu trzeba przeglądać zewnętrzne biblioteki pod kątem aktualnych wersji. Dedykowane narzędzie sensiolabs/security-checker pomoże w efektywnym znalezieniu i blokowaniu ataków. A narzędzie Using Components With Known Vulnerabilities dostarczy raport zawierający komponenty, które są pokazane jako podatne na ataki.

10. Insufficient Logging & Monitoring. Tutaj tylko poprawna polityka logowania i monitoringu systemu sprawi, że próba ataku zostanie wykryta, przed jego przeprowadzeniem. Warto w tym wypadku mieć CSP (Content Security Policy). Laravel udostępnia Monolog. Jest to wszechstronne narzędzie, które generuje logi w prostym formacie. Monolog pokazuje kilka poziomów błędów logowania.

Udostępnij ten post

Dodaj komentarz

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