Typy ataków na aplikacje

Systemy operacyjne, sieci czy aplikacje są zazwyczaj bezpieczne kiedy są wdrożone zgodnie z zaleceniami twórcy. Ale kiedy zaczynamy zmniejszać poziom bezpieczeństwa na rzecz na przykład kompatybilności z innymi systemami tworzymy luki bezpieczeństwa. Omówię w skrócie popularne typy ataków na aplikacje.

Cross-Site Scripting and Forgery

Jeśli używamy języków skryptowych, takich jak JavaScript dajemy możliwość atakującemu oszukać użytkownika, który odwiedza stronę, aby kod wykonał się lokalnie po jego stronie. Właśnie to nazywamy tak popularnym cross-site scripting (XSS). 

W tym ataku sprawca znajduje na stronie interaktywne miejsce, takie jak strona z komentarzami. W polu tekstowym zamieszcza swój kod JS i publikuje komentarz. Następnym razem, kiedy użytkownik odwiedza tę stronę skrypt wykonuje się. Metodą obrony przed XSS jest między innymi filtrowanie danych wejściowych.

Cross-Site Request Forgery (XSRF) – czyli tak zwany one-click attack. Polega na wydawaniu nieautoryzowanych poleceń podchodzących od zaufanego użytkownika. Dla przykładu wyobraźmy sobie Anię i Pawła, którzy piszą ze sobą na czacie. Paweł wysyła Ani link ze śmiesznymi kotami. Ania otwiera go, co powoduje kradzież informacji bankowych z otwartej innej karty w przeglądarce. Paweł mógł wykraść te dane, ponieważ Ania jest zaufanym użytkownikiem jej banku. Aby mogło to się udać Ania musiałaby niedawno odwiedzić stronę banku i mieć ciasteczka, które jeszcze nie wygasły.

SQL Injection

SQL (Structured Query Language) jest to język służący do komunikacji z relacyjnymi bazami danych. Atak SQL Injection polega na manipulacji kodem bazy. Wyobraźmy sobie, że interfejs oczekuje, aby użytkownik wprowadził ciąg znaków. Atakujący zamiast tego może wprowadzić linię kodu, która się wykona zamiast zostać zaakceptowaną jako ciąg znaków. Obroną przed tym jest filtrowanie wartości wchodzących.

LDAP Injection

Tak samo jak SQL injection spowodowany jest brakiem filtrowania danych wejściowych. LDAP Injection wykorzystuje słabość w LDAP (Lightweight Directory Access Protocol). W rezultacie może spowodować wykonanie kodu pozwalając atakującemu zmienić, dodać bądź usunąć dane.

XML Injection

Atak podobny do SQL Injection. Polega na wprowadzeniu zapytania XML (znanym jako XPath), które jest exploitem. XPath działa w podobny sposób co SQL, z wyjątkiem tego, że nie ma takich samych poziomów kontroli dostępu.

Zero-Day Exploit

Znajdywana jest luka w oprogramowaniu zanim odkryje ją twórca. Występuje tego samego dnia, w którym została odkryta. Często, jedyną rzeczą, którą może zrobić administrator pomiędzy odkryciem exploitu a wydaniem patcha, jest wyłączyć usługi. Oczywiście jest to często kosztowne.

Ciasteczka

Ciasteczka są to pliki tekstowe, które przeglądarka przechowuje na dysku użytkownika. Ciasteczko zazwyczaj zawiera dane o użytkowniku. Na przykład przechowuje historię klienta. Jeśli sklep, chce wiedzieć jakie zainteresowania ma kupujący i co przeglądał na stronie sklepu może zamieścić te informacje w ciasteczku. Następnym razem, kiedy użytkownik wejdzie na stronę, serwer odczyta zawartość ciasteczka i wyświetli produkty spersonalizowane, które mają większe szanse zainteresować kupującego. Oczywiście ciasteczka są źródłem zagrożenia, ponieważ zawierają informacje osobiste. Typ ciasteczka zwany evercookie zapisuje dane w wielu lokalizacjach, aby uniemożliwić całkowite usunięcie. Jeśli bezpieczeństwo ma najwyższy priorytet powinieneś wyłączyć akceptowanie ciasteczek. Prawie każda przeglądarka oferuje możliwość wyłączenia, bądź włączenia ciasteczek.

Locally Shared Objects

LSO znany jest również jako Flash Cookie i jest to nic innego jak dane przechowywane na komputerze użytkownika przez Adobe Flash. Stwarza podobne ryzyko co wykorzystywanie ciasteczek.

Session Hijacking

Kradzież sesji następuje kiedy sesja autoryzowanego użytkownika, na przykład poprzez kradzież ciasteczka jest używana do ustanowienia sesji z hostem, który myśli, że wciąż komunikuje się z pierwszą osobą. Przejęcia sesji można dokonać na przykład poprzez atak man-in-the-middle.

Buffer Overflow

Występuje wtedy, kiedy aplikacja otrzymuje więcej danych niż jest zaprojektowana, aby akceptować. Taka sytuacja powoduje, że aplikacja zamazuje dane, bądź zapisuje je po zakończeniu przydzielonej przestrzeni. Spowodować to może utratę danych, zawieszenie programu, bądź wykonanie szkodliwego kodu.

Integer Overflow

Tak samo jak Buffer Overflow dotyczy umieszczania zbyt dużej ilości informacji w zbyt małej przestrzeni. W tym przypadku jest to przestrzeń zarezerwowana dla liczb. Na przykład 8 bitów umożliwia nam zapisanie liczby w systemie binarnym (dwójkowym) od 0 do 255. Jeśli ustawione jest tylko 8 bitów, a użytkownik wprowadzi wartość 256, przekracza to co może być przechowywane. Powoduje to przepełnienie pamięci.

Arbitary Code, Remote Code Execution

Programista może stworzyć program, który zdalnie przyjmuje komendy i je wykonuje. Komendy te nie muszą być powiązane ze stworzonym programem, który je obsługuje a z całą maszyną, shellem czy interpreterem komand. Błąd najczęściej wykonywany jest przez przejęcie kontroli nad wskaźnikiem instrukcji programu, który wskazuje następną linie programu do przetworzenia. Poprzez zmianę wskaźnika instrukcji na kod atakującego pozwala to na wykonanie złośliwego kodu. Należy mieć na uwadze, że dużo większym zagrożeniem jest sytuacja, kiedy program uruchomiony jest z wysokimi uprawnieniami, niż z ograniczonymi.

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here